From f1cf53ae3a692fdc8dadc2d890ad661ff2d16e90 Mon Sep 17 00:00:00 2001
From: Yoshi Automation Bot
Date: Wed, 5 May 2021 08:32:02 -0700
Subject: [PATCH 001/158] chore: update contributors doc (via synth) (#91)
This PR was generated using Autosynth. :rainbow:
Synth log will be available here:
https://source.cloud.google.com/results/invocations/24f5f356-4678-48b6-a17a-676c9d5f3d63/targets
- [ ] To automatically regenerate this PR, check this box. (May take up to 24 hours.)
Source-Link: https://github.com/googleapis/synthtool/commit/a648ce0ca3fe122b3186d7e6861cb641437e485e
Source-Link: https://github.com/googleapis/synthtool/commit/7da29dfd4a80976617e8a65dd2dfbfcb9fcd05ba
---
.pre-commit-config.yaml | 2 +-
CONTRIBUTING.rst | 16 +---------------
synth.metadata | 4 ++--
3 files changed, 4 insertions(+), 18 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8912e9b..1bbd787 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,6 +26,6 @@ repos:
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
- rev: 3.9.0
+ rev: 3.9.1
hooks:
- id: flake8
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index ee46032..e92bff8 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -160,21 +160,7 @@ Running System Tests
auth settings and change some configuration in your project to
run all the tests.
-- System tests will be run against an actual project and
- so you'll need to provide some environment variables to facilitate
- authentication to your project:
-
- - ``GOOGLE_APPLICATION_CREDENTIALS``: The path to a JSON key file;
- Such a file can be downloaded directly from the developer's console by clicking
- "Generate new JSON key". See private key
- `docs `__
- for more details.
-
-- Once you have downloaded your json keys, set the environment variable
- ``GOOGLE_APPLICATION_CREDENTIALS`` to the absolute path of the json file::
-
- $ export GOOGLE_APPLICATION_CREDENTIALS="/Users//path/to/app_credentials.json"
-
+- System tests will be run against an actual project. You should use local credentials from gcloud when possible. See `Best practices for application authentication `__. Some tests require a service account. For those tests see `Authenticating as a service account `__.
*************
Test Coverage
diff --git a/synth.metadata b/synth.metadata
index c31c57d..4cbabc7 100644
--- a/synth.metadata
+++ b/synth.metadata
@@ -4,14 +4,14 @@
"git": {
"name": ".",
"remote": "https://github.com/googleapis/python-cloud-core.git",
- "sha": "5dd657bd3a069eaef54cde4374b1342997bb4bf7"
+ "sha": "e222db1697cf2e504cc280a182866320f9993700"
}
},
{
"git": {
"name": "synthtool",
"remote": "https://github.com/googleapis/synthtool.git",
- "sha": "043cc620d6a6111816d9e09f2a97208565fde958"
+ "sha": "a648ce0ca3fe122b3186d7e6861cb641437e485e"
}
}
],
From 5aec49b81fe04ca984ca107522b0508277dffbf6 Mon Sep 17 00:00:00 2001
From: "google-cloud-policy-bot[bot]"
<80869356+google-cloud-policy-bot[bot]@users.noreply.github.com>
Date: Wed, 5 May 2021 16:12:02 +0000
Subject: [PATCH 002/158] chore: add SECURITY.md (#92)
chore: add SECURITY.md
---
SECURITY.md | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 SECURITY.md
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..8b58ae9
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,7 @@
+# Security Policy
+
+To report a security issue, please use [g.co/vulnz](https://g.co/vulnz).
+
+The Google Security Team will respond within 5 working days of your report on g.co/vulnz.
+
+We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue.
From 268004b626b0b330377e5a1537d4b471c154ba6e Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Wed, 12 May 2021 17:37:16 -0400
Subject: [PATCH 003/158] chore: add library type to .repo-metadata.json (#93)
---
.repo-metadata.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/.repo-metadata.json b/.repo-metadata.json
index 1f5a501..2323671 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -4,6 +4,7 @@
"client_documentation": "https://googleapis.dev/python/google-cloud-core/latest",
"release_level": "ga",
"language": "python",
+ "library_type": "CORE",
"repo": "googleapis/python-cloud-core",
"distribution_name": "google-cloud-core"
}
\ No newline at end of file
From 45158828ac9d31b12dddfd09eeb60c2301cce272 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Wed, 12 May 2021 18:20:02 -0400
Subject: [PATCH 004/158] chore: migrate to owl bot (#95)
This PR migrates from autosynth to [owl bot](https://github.com/googleapis/repo-automation-bots/tree/master/packages/owl-bot). owl bot will save time for maintainers as it will automatically open PRs when there are updates in [googleapis-gen](https://github.com/googleapis/googleapis-gen/tree/master/google) without requiring maintainers to run `synthtool` to build the client from protos. Additionally, similar to autosynth, PRs will be automatically opened when there are template updates.
---
.github/.OwlBot.lock.yaml | 4 ++
.github/.OwlBot.yaml | 19 +++++++++
synth.py => owlbot.py | 0
synth.metadata | 86 ---------------------------------------
4 files changed, 23 insertions(+), 86 deletions(-)
create mode 100644 .github/.OwlBot.lock.yaml
create mode 100644 .github/.OwlBot.yaml
rename synth.py => owlbot.py (100%)
delete mode 100644 synth.metadata
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
new file mode 100644
index 0000000..d49860b
--- /dev/null
+++ b/.github/.OwlBot.lock.yaml
@@ -0,0 +1,4 @@
+docker:
+ digest: sha256:457583330eec64daa02aeb7a72a04d33e7be2428f646671ce4045dcbc0191b1e
+ image: gcr.io/repo-automation-bots/owlbot-python:latest
+
diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml
new file mode 100644
index 0000000..4ab7b6a
--- /dev/null
+++ b/.github/.OwlBot.yaml
@@ -0,0 +1,19 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+docker:
+ image: gcr.io/repo-automation-bots/owlbot-python:latest
+
+begin-after-commit-hash: 513beb9718c83468c65ed4b1b0f23bb435a7260a
+
diff --git a/synth.py b/owlbot.py
similarity index 100%
rename from synth.py
rename to owlbot.py
diff --git a/synth.metadata b/synth.metadata
deleted file mode 100644
index 4cbabc7..0000000
--- a/synth.metadata
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "sources": [
- {
- "git": {
- "name": ".",
- "remote": "https://github.com/googleapis/python-cloud-core.git",
- "sha": "e222db1697cf2e504cc280a182866320f9993700"
- }
- },
- {
- "git": {
- "name": "synthtool",
- "remote": "https://github.com/googleapis/synthtool.git",
- "sha": "a648ce0ca3fe122b3186d7e6861cb641437e485e"
- }
- }
- ],
- "generatedFiles": [
- ".github/CONTRIBUTING.md",
- ".github/ISSUE_TEMPLATE/bug_report.md",
- ".github/ISSUE_TEMPLATE/feature_request.md",
- ".github/ISSUE_TEMPLATE/support_request.md",
- ".github/PULL_REQUEST_TEMPLATE.md",
- ".github/header-checker-lint.yml",
- ".github/release-please.yml",
- ".github/snippet-bot.yml",
- ".gitignore",
- ".kokoro/build.sh",
- ".kokoro/continuous/common.cfg",
- ".kokoro/continuous/continuous.cfg",
- ".kokoro/docker/docs/Dockerfile",
- ".kokoro/docker/docs/fetch_gpg_keys.sh",
- ".kokoro/docs/common.cfg",
- ".kokoro/docs/docs-presubmit.cfg",
- ".kokoro/docs/docs.cfg",
- ".kokoro/populate-secrets.sh",
- ".kokoro/presubmit/common.cfg",
- ".kokoro/presubmit/presubmit.cfg",
- ".kokoro/publish-docs.sh",
- ".kokoro/release.sh",
- ".kokoro/release/common.cfg",
- ".kokoro/release/release.cfg",
- ".kokoro/samples/lint/common.cfg",
- ".kokoro/samples/lint/continuous.cfg",
- ".kokoro/samples/lint/periodic.cfg",
- ".kokoro/samples/lint/presubmit.cfg",
- ".kokoro/samples/python3.6/common.cfg",
- ".kokoro/samples/python3.6/continuous.cfg",
- ".kokoro/samples/python3.6/periodic-head.cfg",
- ".kokoro/samples/python3.6/periodic.cfg",
- ".kokoro/samples/python3.6/presubmit.cfg",
- ".kokoro/samples/python3.7/common.cfg",
- ".kokoro/samples/python3.7/continuous.cfg",
- ".kokoro/samples/python3.7/periodic-head.cfg",
- ".kokoro/samples/python3.7/periodic.cfg",
- ".kokoro/samples/python3.7/presubmit.cfg",
- ".kokoro/samples/python3.8/common.cfg",
- ".kokoro/samples/python3.8/continuous.cfg",
- ".kokoro/samples/python3.8/periodic-head.cfg",
- ".kokoro/samples/python3.8/periodic.cfg",
- ".kokoro/samples/python3.8/presubmit.cfg",
- ".kokoro/test-samples-against-head.sh",
- ".kokoro/test-samples-impl.sh",
- ".kokoro/test-samples.sh",
- ".kokoro/trampoline.sh",
- ".kokoro/trampoline_v2.sh",
- ".pre-commit-config.yaml",
- ".trampolinerc",
- "CODE_OF_CONDUCT.md",
- "CONTRIBUTING.rst",
- "LICENSE",
- "MANIFEST.in",
- "docs/_static/custom.css",
- "docs/_templates/layout.html",
- "docs/conf.py",
- "renovate.json",
- "scripts/decrypt-secrets.sh",
- "scripts/readme-gen/readme_gen.py",
- "scripts/readme-gen/templates/README.tmpl.rst",
- "scripts/readme-gen/templates/auth.tmpl.rst",
- "scripts/readme-gen/templates/auth_api_key.tmpl.rst",
- "scripts/readme-gen/templates/install_deps.tmpl.rst",
- "scripts/readme-gen/templates/install_portaudio.tmpl.rst",
- "testing/.gitignore"
- ]
-}
\ No newline at end of file
From d5605480eb4cabfdeaf184bd2b5294ffa8746081 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 16 May 2021 11:18:02 +0000
Subject: [PATCH 005/158] chore: new owl bot post processor docker image (#96)
gcr.io/repo-automation-bots/owlbot-python:latest@sha256:4c981a6b6f2b8914a448d7b3a01688365be03e3ed26dfee399a6aa77fb112eaa
---
.github/.OwlBot.lock.yaml | 5 ++---
.pre-commit-config.yaml | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index d49860b..864c176 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,4 +1,3 @@
docker:
- digest: sha256:457583330eec64daa02aeb7a72a04d33e7be2428f646671ce4045dcbc0191b1e
- image: gcr.io/repo-automation-bots/owlbot-python:latest
-
+ image: gcr.io/repo-automation-bots/owlbot-python:latest
+ digest: sha256:4c981a6b6f2b8914a448d7b3a01688365be03e3ed26dfee399a6aa77fb112eaa
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1bbd787..4f00c7c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,6 +26,6 @@ repos:
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
- rev: 3.9.1
+ rev: 3.9.2
hooks:
- id: flake8
From 00cdb4d5040c4ef02dce6398520ffe6a0cd95b48 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 28 May 2021 16:50:05 +0000
Subject: [PATCH 006/158] chore: new owl bot post processor docker image (#97)
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:c66ba3c8d7bc8566f47df841f98cd0097b28fff0b1864c86f5817f4c8c3e8600
---
.github/.OwlBot.lock.yaml | 2 +-
docs/conf.py | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 864c176..da616c9 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:4c981a6b6f2b8914a448d7b3a01688365be03e3ed26dfee399a6aa77fb112eaa
+ digest: sha256:c66ba3c8d7bc8566f47df841f98cd0097b28fff0b1864c86f5817f4c8c3e8600
diff --git a/docs/conf.py b/docs/conf.py
index 84e9e24..b9e8d03 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -366,6 +366,7 @@
),
"grpc": ("https://grpc.github.io/grpc/python/", None),
"proto-plus": ("https://proto-plus-python.readthedocs.io/en/latest/", None),
+ "protobuf": ("https://googleapis.dev/python/protobuf/latest/", None),
}
From 7e59360a43418947cbbb7608aa23ef5d566c964c Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Mon, 14 Jun 2021 12:49:07 -0400
Subject: [PATCH 007/158] feat: add 'Client.from_service_account_info' factory
(#54)
Closes #8.
---
google/cloud/client.py | 41 ++++++++++++++++------
tests/unit/test_client.py | 72 +++++++++++++++++++++++++++++++++------
2 files changed, 92 insertions(+), 21 deletions(-)
diff --git a/google/cloud/client.py b/google/cloud/client.py
index fdb81a5..0cfffdb 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client.py
@@ -51,6 +51,36 @@ class _ClientFactoryMixin(object):
_SET_PROJECT = False
+ @classmethod
+ def from_service_account_info(cls, info, *args, **kwargs):
+ """Factory to retrieve JSON credentials while creating client.
+
+ :type info: str
+ :param info:
+ The JSON object with a private key and other credentials
+ information (downloaded from the Google APIs console).
+
+ :type args: tuple
+ :param args: Remaining positional arguments to pass to constructor.
+
+ :param kwargs: Remaining keyword arguments to pass to constructor.
+
+ :rtype: :class:`_ClientFactoryMixin`
+ :returns: The client created with the retrieved JSON credentials.
+ :raises TypeError: if there is a conflict with the kwargs
+ and the credentials created by the factory.
+ """
+ if "credentials" in kwargs:
+ raise TypeError("credentials must not be in keyword arguments")
+
+ credentials = service_account.Credentials.from_service_account_info(info)
+ if cls._SET_PROJECT:
+ if "project" not in kwargs:
+ kwargs["project"] = info.get("project_id")
+
+ kwargs["credentials"] = credentials
+ return cls(*args, **kwargs)
+
@classmethod
def from_service_account_json(cls, json_credentials_path, *args, **kwargs):
"""Factory to retrieve JSON credentials while creating client.
@@ -73,19 +103,10 @@ def from_service_account_json(cls, json_credentials_path, *args, **kwargs):
:raises TypeError: if there is a conflict with the kwargs
and the credentials created by the factory.
"""
- if "credentials" in kwargs:
- raise TypeError("credentials must not be in keyword arguments")
with io.open(json_credentials_path, "r", encoding="utf-8") as json_fi:
credentials_info = json.load(json_fi)
- credentials = service_account.Credentials.from_service_account_info(
- credentials_info
- )
- if cls._SET_PROJECT:
- if "project" not in kwargs:
- kwargs["project"] = credentials_info.get("project_id")
- kwargs["credentials"] = credentials
- return cls(*args, **kwargs)
+ return cls.from_service_account_info(credentials_info)
class Client(_ClientFactoryMixin):
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index 8137826..0e31348 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -143,15 +143,39 @@ def test_ctor__http_property_new(self):
self.assertIs(client._http, session)
self.assertEqual(AuthorizedSession.call_count, 1)
+ def test_from_service_account_info(self):
+ klass = self._get_target_class()
+
+ info = {"dummy": "value", "valid": "json"}
+ constructor_patch = mock.patch(
+ "google.oauth2.service_account.Credentials.from_service_account_info",
+ return_value=_make_credentials(),
+ )
+
+ with constructor_patch as constructor:
+ client_obj = klass.from_service_account_info(info)
+
+ self.assertIs(client_obj._credentials, constructor.return_value)
+ self.assertIsNone(client_obj._http_internal)
+ constructor.assert_called_once_with(info)
+
+ def test_from_service_account_info_w_explicit_credentials(self):
+ KLASS = self._get_target_class()
+
+ info = {"dummy": "value", "valid": "json"}
+
+ with self.assertRaises(TypeError):
+ KLASS.from_service_account_info(info, credentials=mock.sentinel.credentials)
+
def test_from_service_account_json(self):
from google.cloud import _helpers
klass = self._get_target_class()
- # Mock both the file opening and the credentials constructor.
info = {"dummy": "value", "valid": "json"}
- json_fi = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
- file_open_patch = mock.patch("io.open", return_value=json_fi)
+ json_file = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
+
+ file_open_patch = mock.patch("io.open", return_value=json_file)
constructor_patch = mock.patch(
"google.oauth2.service_account.Credentials." "from_service_account_info",
return_value=_make_credentials(),
@@ -167,14 +191,6 @@ def test_from_service_account_json(self):
file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
constructor.assert_called_once_with(info)
- def test_from_service_account_json_bad_args(self):
- KLASS = self._get_target_class()
-
- with self.assertRaises(TypeError):
- KLASS.from_service_account_json(
- mock.sentinel.filename, credentials=mock.sentinel.credentials
- )
-
class Test_ClientProjectMixin(unittest.TestCase):
@staticmethod
@@ -377,6 +393,40 @@ def test_constructor_explicit_unicode(self):
PROJECT = u"PROJECT"
self._explicit_ctor_helper(PROJECT)
+ def _from_service_account_info_helper(self, project=None):
+ klass = self._get_target_class()
+
+ info = {"dummy": "value", "valid": "json"}
+ kwargs = {}
+
+ if project is None:
+ expected_project = "eye-d-of-project"
+ else:
+ expected_project = project
+ kwargs["project"] = project
+
+ info["project_id"] = expected_project
+
+ constructor_patch = mock.patch(
+ "google.oauth2.service_account.Credentials.from_service_account_info",
+ return_value=_make_credentials(),
+ )
+
+ with constructor_patch as constructor:
+ client_obj = klass.from_service_account_info(info, **kwargs)
+
+ self.assertIs(client_obj._credentials, constructor.return_value)
+ self.assertIsNone(client_obj._http_internal)
+ self.assertEqual(client_obj.project, expected_project)
+
+ constructor.assert_called_once_with(info)
+
+ def test_from_service_account_info(self):
+ self._from_service_account_info_helper()
+
+ def test_from_service_account_info_with_project(self):
+ self._from_service_account_info_helper(project="prah-jekt")
+
def _from_service_account_json_helper(self, project=None):
from google.cloud import _helpers
From 32ba0c9e17e4e0cbe73cdc702219972e7ae18295 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Mon, 14 Jun 2021 13:22:03 -0400
Subject: [PATCH 008/158] chore: add 'blacken' stanza to noxfile (#99)
Closes #98.
---
.flake8 | 2 +-
docs/conf.py | 14 ++--------
google/cloud/_http.py | 23 ++++++++--------
google/cloud/client.py | 27 ++++++++++++-------
noxfile.py | 39 ++++++++++++++++++---------
owlbot.py | 2 ++
tests/unit/test__http.py | 12 ++++++---
tests/unit/test_client.py | 57 ++++++++++++++++++++++-----------------
8 files changed, 102 insertions(+), 74 deletions(-)
diff --git a/.flake8 b/.flake8
index 3da787c..02330e9 100644
--- a/.flake8
+++ b/.flake8
@@ -3,7 +3,7 @@ import-order-style=google
# Note: this forces all google imports to be in the third group. See
# https://github.com/PyCQA/flake8-import-order/issues/111
application-import-names=google
-ignore = E203, E266, E501, W503
+ignore = E203, E266, E501, W503, I202
exclude =
__pycache__,
.git,
diff --git a/docs/conf.py b/docs/conf.py
index b9e8d03..744193a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -313,13 +313,7 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (
- master_doc,
- "google-cloud-core",
- u"google-cloud-core Documentation",
- [author],
- 1,
- )
+ (master_doc, "google-cloud-core", u"google-cloud-core Documentation", [author], 1,)
]
# If true, show URL addresses after external links.
@@ -360,14 +354,10 @@
intersphinx_mapping = {
"python": ("https://python.readthedocs.org/en/latest/", None),
"google-auth": ("https://googleapis.dev/python/google-auth/latest/", None),
- "google.api_core": (
- "https://googleapis.dev/python/google-api-core/latest/",
- None,
- ),
+ "google.api_core": ("https://googleapis.dev/python/google-api-core/latest/", None,),
"grpc": ("https://grpc.github.io/grpc/python/", None),
"proto-plus": ("https://proto-plus-python.readthedocs.io/en/latest/", None),
"protobuf": ("https://googleapis.dev/python/protobuf/latest/", None),
-
}
diff --git a/google/cloud/_http.py b/google/cloud/_http.py
index 719e986..6627a9b 100644
--- a/google/cloud/_http.py
+++ b/google/cloud/_http.py
@@ -15,9 +15,10 @@
"""Shared implementation of connections to API servers."""
import collections
+
try:
import collections.abc as collections_abc
-except ImportError:
+except ImportError: # Python2
import collections as collections_abc
import json
import os
@@ -34,9 +35,7 @@
API_BASE_URL = "https://www.googleapis.com"
"""The base of the API call URL."""
-DEFAULT_USER_AGENT = "gcloud-python/{0}".format(
- version.__version__
-)
+DEFAULT_USER_AGENT = "gcloud-python/{0}".format(version.__version__)
"""The user agent for google-cloud-python requests."""
CLIENT_INFO_HEADER = "X-Goog-API-Client"
@@ -83,14 +82,12 @@ def USER_AGENT(self):
:rtype: str
:returns: user agent
"""
- warnings.warn(
- _USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
+ warnings.warn(_USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
return self.user_agent
@USER_AGENT.setter
def USER_AGENT(self, value):
- warnings.warn(
- _USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
+ warnings.warn(_USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
self.user_agent = value
@property
@@ -114,13 +111,15 @@ def _EXTRA_HEADERS(self):
:returns: header keys / values
"""
warnings.warn(
- _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
+ _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2
+ )
return self.extra_headers
@_EXTRA_HEADERS.setter
def _EXTRA_HEADERS(self, value):
warnings.warn(
- _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
+ _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2
+ )
self.extra_headers = value
@property
@@ -222,7 +221,9 @@ def get_api_base_url_for_mtls(self, api_base_url=None):
url_to_use = self.API_BASE_URL
else:
if self.ALLOW_AUTO_SWITCH_TO_MTLS_URL:
- url_to_use = self.API_BASE_MTLS_URL if self.http.is_mtls else self.API_BASE_URL
+ url_to_use = (
+ self.API_BASE_MTLS_URL if self.http.is_mtls else self.API_BASE_URL
+ )
else:
url_to_use = self.API_BASE_URL
return url_to_use
diff --git a/google/cloud/client.py b/google/cloud/client.py
index 0cfffdb..0697741 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client.py
@@ -158,9 +158,12 @@ def __init__(self, credentials=None, _http=None, client_options=None):
if credentials and client_options.credentials_file:
raise google.api_core.exceptions.DuplicateCredentialArgs(
- "'credentials' and 'client_options.credentials_file' are mutually exclusive.")
+ "'credentials' and 'client_options.credentials_file' are mutually exclusive."
+ )
- if credentials and not isinstance(credentials, google.auth.credentials.Credentials):
+ if credentials and not isinstance(
+ credentials, google.auth.credentials.Credentials
+ ):
raise ValueError(_GOOGLE_AUTH_CREDENTIALS_HELP)
scopes = client_options.scopes or self.SCOPE
@@ -169,15 +172,19 @@ def __init__(self, credentials=None, _http=None, client_options=None):
if not _http and credentials is None:
if client_options.credentials_file:
credentials, _ = google.auth.load_credentials_from_file(
- client_options.credentials_file, scopes=scopes)
+ client_options.credentials_file, scopes=scopes
+ )
else:
credentials, _ = google.auth.default(scopes=scopes)
self._credentials = google.auth.credentials.with_scopes_if_required(
- credentials, scopes=scopes)
+ credentials, scopes=scopes
+ )
if client_options.quota_project_id:
- self._credentials = self._credentials.with_quota_project(client_options.quota_project_id)
+ self._credentials = self._credentials.with_quota_project(
+ client_options.quota_project_id
+ )
self._http_internal = _http
self._client_cert_source = client_options.client_cert_source
@@ -202,8 +209,7 @@ def _http(self):
"""
if self._http_internal is None:
self._http_internal = google.auth.transport.requests.AuthorizedSession(
- self._credentials,
- refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT,
+ self._credentials, refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT,
)
self._http_internal.configure_mtls_channel(self._client_cert_source)
return self._http_internal
@@ -233,8 +239,7 @@ def __init__(self, project=None, credentials=None):
# https://github.com/googleapis/python-cloud-core/issues/27
if project is None:
project = os.getenv(
- environment_vars.PROJECT,
- os.getenv(environment_vars.LEGACY_PROJECT),
+ environment_vars.PROJECT, os.getenv(environment_vars.LEGACY_PROJECT),
)
# Project set on explicit credentials overrides discovery from
@@ -296,4 +301,6 @@ class ClientWithProject(Client, _ClientProjectMixin):
def __init__(self, project=None, credentials=None, client_options=None, _http=None):
_ClientProjectMixin.__init__(self, project=project, credentials=credentials)
- Client.__init__(self, credentials=credentials, client_options=client_options, _http=_http)
+ Client.__init__(
+ self, credentials=credentials, client_options=client_options, _http=_http
+ )
diff --git a/noxfile.py b/noxfile.py
index 5c16a25..5eb9229 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -19,10 +19,35 @@
import nox
+BLACK_VERSION = "black==19.10b0"
+BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
+
DEFAULT_PYTHON_VERSION = "3.7"
CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
+@nox.session(python=DEFAULT_PYTHON_VERSION)
+def lint(session):
+ """Run linters.
+
+ Returns a failure if the linters find linting errors or sufficiently
+ serious code quality issues.
+ """
+ session.install("flake8", "flake8-import-order", BLACK_VERSION)
+ session.install(".")
+ session.run("flake8", "google", "tests")
+
+
+@nox.session(python=DEFAULT_PYTHON_VERSION)
+def blacken(session):
+ """Run black.
+
+ Format code to uniform standard.
+ """
+ session.install(BLACK_VERSION)
+ session.run("black", *BLACK_PATHS)
+
+
def default(session):
"""Default unit test session.
This is intended to be run **without** an interpreter set, so
@@ -51,7 +76,7 @@ def default(session):
"--cov-report=",
"--cov-fail-under=0",
os.path.join("tests", "unit"),
- *session.posargs
+ *session.posargs,
)
@@ -61,18 +86,6 @@ def unit(session):
default(session)
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def lint(session):
- """Run linters.
-
- Returns a failure if the linters find linting errors or sufficiently
- serious code quality issues.
- """
- session.install("flake8", "flake8-import-order")
- session.install(".")
- session.run("flake8", "google", "tests")
-
-
@nox.session(python=DEFAULT_PYTHON_VERSION)
def lint_setup_py(session):
"""Verify that setup.py is valid (including RST check)."""
diff --git a/owlbot.py b/owlbot.py
index 29a5f77..80f0c15 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -35,3 +35,5 @@
"setup.cfg",
],
)
+
+s.shell.run(["nox", "-s", "blacken"], hide_output=False)
diff --git a/tests/unit/test__http.py b/tests/unit/test__http.py
index 32a4965..fff2b6b 100644
--- a/tests/unit/test__http.py
+++ b/tests/unit/test__http.py
@@ -186,14 +186,18 @@ def test_build_api_url_no_extra_query_params(self):
client = object()
conn = self._make_mock_one(client)
# Intended to emulate self.mock_template
- URI = "/".join([conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=false"])
+ URI = "/".join(
+ [conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=false"]
+ )
self.assertEqual(conn.build_api_url("/foo"), URI)
def test_build_api_url_w_pretty_print_query_params(self):
client = object()
conn = self._make_mock_one(client)
uri = conn.build_api_url("/foo", {"prettyPrint": "true"})
- URI = "/".join([conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=true"])
+ URI = "/".join(
+ [conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=true"]
+ )
self.assertEqual(uri, URI)
def test_build_api_url_w_extra_query_params(self):
@@ -220,7 +224,9 @@ def test_build_api_url_w_extra_query_params_tuples(self):
client = object()
conn = self._make_mock_one(client)
- uri = conn.build_api_url("/foo", [("bar", "baz"), ("qux", "quux"), ("qux", "corge")])
+ uri = conn.build_api_url(
+ "/foo", [("bar", "baz"), ("qux", "quux"), ("qux", "corge")]
+ )
scheme, netloc, path, qs, _ = urlsplit(uri)
self.assertEqual("%s://%s" % (scheme, netloc), conn.API_BASE_URL)
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index 0e31348..9eeb757 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -80,7 +80,7 @@ def test_ctor_client_options_w_conflicting_creds(self):
from google.api_core.exceptions import DuplicateCredentialArgs
credentials = _make_credentials()
- client_options = {'credentials_file': '/path/to/creds.json'}
+ client_options = {"credentials_file": "/path/to/creds.json"}
with self.assertRaises(DuplicateCredentialArgs):
self._make_one(credentials=credentials, client_options=client_options)
@@ -92,26 +92,34 @@ def test_ctor_bad_credentials(self):
def test_ctor_client_options_w_creds_file_scopes(self):
credentials = _make_credentials()
- credentials_file = '/path/to/creds.json'
- scopes = ['SCOPE1', 'SCOPE2']
- client_options = {'credentials_file': credentials_file, 'scopes': scopes}
+ credentials_file = "/path/to/creds.json"
+ scopes = ["SCOPE1", "SCOPE2"]
+ client_options = {"credentials_file": credentials_file, "scopes": scopes}
- patch = mock.patch("google.auth.load_credentials_from_file", return_value=(credentials, None))
+ patch = mock.patch(
+ "google.auth.load_credentials_from_file", return_value=(credentials, None)
+ )
with patch as load_credentials_from_file:
client_obj = self._make_one(client_options=client_options)
self.assertIs(client_obj._credentials, credentials)
self.assertIsNone(client_obj._http_internal)
- load_credentials_from_file.assert_called_once_with(credentials_file, scopes=scopes)
+ load_credentials_from_file.assert_called_once_with(
+ credentials_file, scopes=scopes
+ )
def test_ctor_client_options_w_quota_project(self):
credentials = _make_credentials()
- quota_project_id = 'quota-project-123'
- client_options = {'quota_project_id': quota_project_id}
+ quota_project_id = "quota-project-123"
+ client_options = {"quota_project_id": quota_project_id}
- client_obj = self._make_one(credentials=credentials, client_options=client_options)
+ client_obj = self._make_one(
+ credentials=credentials, client_options=client_options
+ )
- self.assertIs(client_obj._credentials, credentials.with_quota_project.return_value)
+ self.assertIs(
+ client_obj._credentials, credentials.with_quota_project.return_value
+ )
credentials.with_quota_project.assert_called_once_with(quota_project_id)
def test_ctor__http_property_existing(self):
@@ -126,18 +134,24 @@ def test_ctor__http_property_new(self):
credentials = _make_credentials()
mock_client_cert_source = mock.Mock()
- client_options = {'client_cert_source': mock_client_cert_source}
+ client_options = {"client_cert_source": mock_client_cert_source}
client = self._make_one(credentials=credentials, client_options=client_options)
self.assertIsNone(client._http_internal)
- with mock.patch('google.auth.transport.requests.AuthorizedSession') as AuthorizedSession:
+ with mock.patch(
+ "google.auth.transport.requests.AuthorizedSession"
+ ) as AuthorizedSession:
session = mock.Mock()
session.configure_mtls_channel = mock.Mock()
AuthorizedSession.return_value = session
self.assertIs(client._http, session)
# Check the mock.
- AuthorizedSession.assert_called_once_with(credentials, refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT)
- session.configure_mtls_channel.assert_called_once_with(mock_client_cert_source)
+ AuthorizedSession.assert_called_once_with(
+ credentials, refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT
+ )
+ session.configure_mtls_channel.assert_called_once_with(
+ mock_client_cert_source
+ )
# Make sure the cached value is used on subsequent access.
self.assertIs(client._http_internal, session)
self.assertIs(client._http, session)
@@ -206,8 +220,7 @@ def test_ctor_defaults_wo_envvar(self):
environ = {}
patch_env = mock.patch("os.environ", new=environ)
patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
+ "google.cloud.client._determine_default_project", return_value=None,
)
with patch_env:
with patch_default as patched:
@@ -241,8 +254,7 @@ def test_ctor_defaults_w_legacy_envvar(self):
def test_ctor_w_explicit_project(self):
explicit_project = "explicit-project-456"
patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
+ "google.cloud.client._determine_default_project", return_value=None,
)
with patch_default as patched:
client = self._make_one(project=explicit_project)
@@ -254,8 +266,7 @@ def test_ctor_w_explicit_project(self):
def test_ctor_w_explicit_project_bytes(self):
explicit_project = b"explicit-project-456"
patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
+ "google.cloud.client._determine_default_project", return_value=None,
)
with patch_default as patched:
client = self._make_one(project=explicit_project)
@@ -267,8 +278,7 @@ def test_ctor_w_explicit_project_bytes(self):
def test_ctor_w_explicit_project_invalid(self):
explicit_project = object()
patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
+ "google.cloud.client._determine_default_project", return_value=None,
)
with patch_default as patched:
with self.assertRaises(ValueError):
@@ -307,8 +317,7 @@ def test_ctor_w_explicit_credentials_w_project(self):
project = "credentials-project-456"
credentials = self._make_credentials(project_id=project)
patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
+ "google.cloud.client._determine_default_project", return_value=None,
)
with patch_default as patched:
client = self._make_one(credentials=credentials)
From 7387fc87186defff74612cf85909c7d456155d47 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Mon, 14 Jun 2021 17:12:10 -0400
Subject: [PATCH 009/158] feat: add 'Client.close' (#100)
FBO use with 'contextlib.closing'.
Closes #64.
---
google/cloud/client.py | 15 +++++++++++++++
tests/unit/test_client.py | 15 +++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/google/cloud/client.py b/google/cloud/client.py
index 0697741..9e09450 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client.py
@@ -214,6 +214,21 @@ def _http(self):
self._http_internal.configure_mtls_channel(self._client_cert_source)
return self._http_internal
+ def close(self):
+ """Clean up transport, if set.
+
+ Suggested use:
+
+ .. code-block:: python
+
+ import contextlib
+
+ with contextlib.closing(client): # closes on exit
+ do_something_with(client)
+ """
+ if self._http_internal is not None:
+ self._http_internal.close()
+
class _ClientProjectMixin(object):
"""Mixin to allow setting the project on the client.
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index 9eeb757..1b933a2 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -205,6 +205,21 @@ def test_from_service_account_json(self):
file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
constructor.assert_called_once_with(info)
+ def test_close_w__http_internal_none(self):
+ credentials = _make_credentials()
+ client_obj = self._make_one(credentials=credentials, _http=None)
+
+ client_obj.close() # noraise
+
+ def test_close_w__http_internal_set(self):
+ credentials = _make_credentials()
+ http = mock.Mock(spec=["close"])
+ client_obj = self._make_one(credentials=credentials, _http=http)
+
+ client_obj.close()
+
+ http.close.assert_called_once_with()
+
class Test_ClientProjectMixin(unittest.TestCase):
@staticmethod
From e1c8d777a5fc14b857ae3cb9a266b960d9e37575 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 14 Jun 2021 21:18:04 +0000
Subject: [PATCH 010/158] chore: release 1.7.0 (#101)
:robot: I have created a release \*beep\* \*boop\*
---
## [1.7.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.6.0...v1.7.0) (2021-06-14)
### Features
* add 'Client.close' ([#100](https://www.github.com/googleapis/python-cloud-core/issues/100)) ([7387fc8](https://www.github.com/googleapis/python-cloud-core/commit/7387fc87186defff74612cf85909c7d456155d47))
* add 'Client.from_service_account_info' factory ([#54](https://www.github.com/googleapis/python-cloud-core/issues/54)) ([7e59360](https://www.github.com/googleapis/python-cloud-core/commit/7e59360a43418947cbbb7608aa23ef5d566c964c))
### Documentation
* update python contributing guide ([#80](https://www.github.com/googleapis/python-cloud-core/issues/80)) ([58deef8](https://www.github.com/googleapis/python-cloud-core/commit/58deef8ce2e90415a4c38022e88fdfe25bc666b6))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
---
CHANGELOG.md | 13 +++++++++++++
google/cloud/version.py | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 69160ab..a983ca2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,19 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [1.7.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.6.0...v1.7.0) (2021-06-14)
+
+
+### Features
+
+* add 'Client.close' ([#100](https://www.github.com/googleapis/python-cloud-core/issues/100)) ([7387fc8](https://www.github.com/googleapis/python-cloud-core/commit/7387fc87186defff74612cf85909c7d456155d47))
+* add 'Client.from_service_account_info' factory ([#54](https://www.github.com/googleapis/python-cloud-core/issues/54)) ([7e59360](https://www.github.com/googleapis/python-cloud-core/commit/7e59360a43418947cbbb7608aa23ef5d566c964c))
+
+
+### Documentation
+
+* update python contributing guide ([#80](https://www.github.com/googleapis/python-cloud-core/issues/80)) ([58deef8](https://www.github.com/googleapis/python-cloud-core/commit/58deef8ce2e90415a4c38022e88fdfe25bc666b6))
+
## [1.6.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.5.0...v1.6.0) (2021-02-02)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 54697cc..670f0a3 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "1.6.0"
+__version__ = "1.7.0"
From 1d3e273292e0c3eae2b150c9a05e610eb4ade78d Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 17 Jun 2021 10:52:03 +0000
Subject: [PATCH 011/158] chore: new owl bot post processor docker image (#104)
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:58c7342b0bccf85028100adaa3d856cb4a871c22ca9c01960d996e66c40548ce
---
.github/.OwlBot.lock.yaml | 2 +-
docs/conf.py | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index da616c9..ea06d39 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:c66ba3c8d7bc8566f47df841f98cd0097b28fff0b1864c86f5817f4c8c3e8600
+ digest: sha256:58c7342b0bccf85028100adaa3d856cb4a871c22ca9c01960d996e66c40548ce
diff --git a/docs/conf.py b/docs/conf.py
index 744193a..5a365f8 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -80,9 +80,9 @@
master_doc = "index"
# General information about the project.
-project = u"google-cloud-core"
-copyright = u"2019, Google"
-author = u"Google APIs"
+project = "google-cloud-core"
+copyright = "2019, Google"
+author = "Google APIs"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -281,7 +281,7 @@
(
master_doc,
"google-cloud-core.tex",
- u"google-cloud-core Documentation",
+ "google-cloud-core Documentation",
author,
"manual",
)
@@ -313,7 +313,7 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (master_doc, "google-cloud-core", u"google-cloud-core Documentation", [author], 1,)
+ (master_doc, "google-cloud-core", "google-cloud-core Documentation", [author], 1,)
]
# If true, show URL addresses after external links.
@@ -329,7 +329,7 @@
(
master_doc,
"google-cloud-core",
- u"google-cloud-core Documentation",
+ "google-cloud-core Documentation",
author,
"google-cloud-core",
"google-cloud-core Library",
From efc4bbfd377e64763c60500407f5c191c03ef85c Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Fri, 25 Jun 2021 10:40:48 -0400
Subject: [PATCH 012/158] fix: pass kwargs through in
'from_service_account_json' (#109)
Also, pin 'googleapis-common-protos' for Python 2.7 tests.
Closes #108.
---
google/cloud/client.py | 2 +-
testing/constraints-2.7.txt | 1 +
tests/unit/test_client.py | 73 ++++++++++++++++++++++++++++++++++---
3 files changed, 69 insertions(+), 7 deletions(-)
diff --git a/google/cloud/client.py b/google/cloud/client.py
index 9e09450..c2e7cff 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client.py
@@ -106,7 +106,7 @@ def from_service_account_json(cls, json_credentials_path, *args, **kwargs):
with io.open(json_credentials_path, "r", encoding="utf-8") as json_fi:
credentials_info = json.load(json_fi)
- return cls.from_service_account_info(credentials_info)
+ return cls.from_service_account_info(credentials_info, *args, **kwargs)
class Client(_ClientFactoryMixin):
diff --git a/testing/constraints-2.7.txt b/testing/constraints-2.7.txt
index 8679811..3b6cd2c 100644
--- a/testing/constraints-2.7.txt
+++ b/testing/constraints-2.7.txt
@@ -1,2 +1,3 @@
google-api-core==1.21.0
+googleapis-common-protos<1.53.0
six==1.12.0
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index 1b933a2..c7753a8 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -420,17 +420,16 @@ def test_constructor_explicit_unicode(self):
def _from_service_account_info_helper(self, project=None):
klass = self._get_target_class()
- info = {"dummy": "value", "valid": "json"}
+ default_project = "eye-d-of-project"
+ info = {"dummy": "value", "valid": "json", "project_id": default_project}
kwargs = {}
if project is None:
- expected_project = "eye-d-of-project"
+ expected_project = default_project
else:
expected_project = project
kwargs["project"] = project
- info["project_id"] = expected_project
-
constructor_patch = mock.patch(
"google.oauth2.service_account.Credentials.from_service_account_info",
return_value=_make_credentials(),
@@ -451,18 +450,45 @@ def test_from_service_account_info(self):
def test_from_service_account_info_with_project(self):
self._from_service_account_info_helper(project="prah-jekt")
+ def test_from_service_account_info_with_posarg(self):
+ class Derived(self._get_target_class()):
+ def __init__(self, required, **kwargs):
+ super(Derived, self).__init__(**kwargs)
+ self.required = required
+
+ project = "eye-d-of-project"
+ info = {"dummy": "value", "valid": "json", "project_id": project}
+
+ # Mock both the file opening and the credentials constructor.
+ constructor_patch = mock.patch(
+ "google.oauth2.service_account.Credentials.from_service_account_info",
+ return_value=_make_credentials(),
+ )
+
+ with constructor_patch as constructor:
+ client_obj = Derived.from_service_account_info(info, "REQUIRED")
+
+ self.assertIsInstance(client_obj, Derived)
+ self.assertIs(client_obj._credentials, constructor.return_value)
+ self.assertIsNone(client_obj._http_internal)
+ self.assertEqual(client_obj.project, project)
+ self.assertEqual(client_obj.required, "REQUIRED")
+
+ # Check that mocks were called as expected.
+ constructor.assert_called_once_with(info)
+
def _from_service_account_json_helper(self, project=None):
from google.cloud import _helpers
klass = self._get_target_class()
- info = {"dummy": "value", "valid": "json"}
+ default_project = "eye-d-of-project"
+ info = {"dummy": "value", "valid": "json", "project_id": default_project}
if project is None:
expected_project = "eye-d-of-project"
else:
expected_project = project
- info["project_id"] = expected_project
# Mock both the file opening and the credentials constructor.
json_fi = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
file_open_patch = mock.patch("io.open", return_value=json_fi)
@@ -492,3 +518,38 @@ def test_from_service_account_json(self):
def test_from_service_account_json_project_set(self):
self._from_service_account_json_helper(project="prah-jekt")
+
+ def test_from_service_account_json_with_posarg(self):
+ from google.cloud import _helpers
+
+ class Derived(self._get_target_class()):
+ def __init__(self, required, **kwargs):
+ super(Derived, self).__init__(**kwargs)
+ self.required = required
+
+ project = "eye-d-of-project"
+ info = {"dummy": "value", "valid": "json", "project_id": project}
+
+ # Mock both the file opening and the credentials constructor.
+ json_fi = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
+ file_open_patch = mock.patch("io.open", return_value=json_fi)
+ constructor_patch = mock.patch(
+ "google.oauth2.service_account.Credentials.from_service_account_info",
+ return_value=_make_credentials(),
+ )
+
+ with file_open_patch as file_open:
+ with constructor_patch as constructor:
+ client_obj = Derived.from_service_account_json(
+ mock.sentinel.filename, "REQUIRED"
+ )
+
+ self.assertIsInstance(client_obj, Derived)
+ self.assertIs(client_obj._credentials, constructor.return_value)
+ self.assertIsNone(client_obj._http_internal)
+ self.assertEqual(client_obj.project, project)
+ self.assertEqual(client_obj.required, "REQUIRED")
+
+ # Check that mocks were called as expected.
+ file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
+ constructor.assert_called_once_with(info)
From dd9a4d7e0829f84fcda1e7d0ca1bab5979054b7f Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Fri, 25 Jun 2021 14:48:56 -0400
Subject: [PATCH 013/158] chore: release 1.7.1 (#110)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a983ca2..610119f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+### [1.7.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.0...v1.7.1) (2021-06-25)
+
+
+### Bug Fixes
+
+* pass kwargs through in 'from_service_account_json' ([#109](https://www.github.com/googleapis/python-cloud-core/issues/109)) ([efc4bbf](https://www.github.com/googleapis/python-cloud-core/commit/efc4bbfd377e64763c60500407f5c191c03ef85c))
+
## [1.7.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.6.0...v1.7.0) (2021-06-14)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 670f0a3..676929a 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "1.7.0"
+__version__ = "1.7.1"
From 6399b8007632088cd60dd77e24ab46850ad958cc Mon Sep 17 00:00:00 2001
From: Alex <3620344+arekkusu@users.noreply.github.com>
Date: Sat, 26 Jun 2021 23:48:21 +0900
Subject: [PATCH 014/158] Nitpick: Markdown header consitency (#112)
Very small change to release note / markdown paragraph formatting was different for 1.7.1 release note section
I don't think this warrant creating an issue, hope that's ok.
---
CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 610119f..4277a0f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,7 @@
[1]: https://pypi.org/project/google-cloud-core/#history
-### [1.7.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.0...v1.7.1) (2021-06-25)
+## [1.7.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.0...v1.7.1) (2021-06-25)
### Bug Fixes
From 6831295a7c2c07cf338adb7995d9c079626a2b7e Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Wed, 14 Jul 2021 15:29:54 -0400
Subject: [PATCH 015/158] tests: unb0rk tests broken by requests 2.26.0. (#118)
Closes #117.
---
tests/unit/test__http.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/unit/test__http.py b/tests/unit/test__http.py
index fff2b6b..f96d291 100644
--- a/tests/unit/test__http.py
+++ b/tests/unit/test__http.py
@@ -134,6 +134,11 @@ def make_response(status=http_client.OK, content=b"", headers={}):
response._content = content
response.headers = headers
response.request = requests.Request()
+
+ # Work around requests 'charset_normalizer' idiocy.
+ # See https://github.com/googleapis/python-cloud-core/issues/117
+ response.encoding = "utf-8"
+
return response
From 5d000b1036568a5d071c35e744c46a4e303f99bf Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 14 Jul 2021 15:35:42 -0400
Subject: [PATCH 016/158] build(python): remove python 3.7 from kokoro
Dockerfile (#116)
* remove unused file
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
Co-authored-by: gcf-merge-on-green[bot] <60162190+gcf-merge-on-green[bot]@users.noreply.github.com>
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/docker/docs/Dockerfile | 35 +---------------
.kokoro/docker/docs/fetch_gpg_keys.sh | 45 ---------------------
.kokoro/samples/python3.9/common.cfg | 40 ++++++++++++++++++
.kokoro/samples/python3.9/continuous.cfg | 6 +++
.kokoro/samples/python3.9/periodic-head.cfg | 11 +++++
.kokoro/samples/python3.9/periodic.cfg | 6 +++
.kokoro/samples/python3.9/presubmit.cfg | 6 +++
.kokoro/test-samples-impl.sh | 6 +--
.pre-commit-config.yaml | 2 +-
CONTRIBUTING.rst | 25 +++++-------
11 files changed, 87 insertions(+), 97 deletions(-)
delete mode 100755 .kokoro/docker/docs/fetch_gpg_keys.sh
create mode 100644 .kokoro/samples/python3.9/common.cfg
create mode 100644 .kokoro/samples/python3.9/continuous.cfg
create mode 100644 .kokoro/samples/python3.9/periodic-head.cfg
create mode 100644 .kokoro/samples/python3.9/periodic.cfg
create mode 100644 .kokoro/samples/python3.9/presubmit.cfg
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ea06d39..cb06536 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:58c7342b0bccf85028100adaa3d856cb4a871c22ca9c01960d996e66c40548ce
+ digest: sha256:5ff7446edeaede81c3ed58b23a4e76a5403fba1350ce28478045657303b6479d
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 412b0b5..4e1b1fb 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -40,6 +40,7 @@ RUN apt-get update \
libssl-dev \
libsqlite3-dev \
portaudio19-dev \
+ python3-distutils \
redis-server \
software-properties-common \
ssh \
@@ -59,40 +60,8 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /var/cache/apt/archives/*.deb
-
-COPY fetch_gpg_keys.sh /tmp
-# Install the desired versions of Python.
-RUN set -ex \
- && export GNUPGHOME="$(mktemp -d)" \
- && echo "disable-ipv6" >> "${GNUPGHOME}/dirmngr.conf" \
- && /tmp/fetch_gpg_keys.sh \
- && for PYTHON_VERSION in 3.7.8 3.8.5; do \
- wget --no-check-certificate -O python-${PYTHON_VERSION}.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \
- && wget --no-check-certificate -O python-${PYTHON_VERSION}.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \
- && gpg --batch --verify python-${PYTHON_VERSION}.tar.xz.asc python-${PYTHON_VERSION}.tar.xz \
- && rm -r python-${PYTHON_VERSION}.tar.xz.asc \
- && mkdir -p /usr/src/python-${PYTHON_VERSION} \
- && tar -xJC /usr/src/python-${PYTHON_VERSION} --strip-components=1 -f python-${PYTHON_VERSION}.tar.xz \
- && rm python-${PYTHON_VERSION}.tar.xz \
- && cd /usr/src/python-${PYTHON_VERSION} \
- && ./configure \
- --enable-shared \
- # This works only on Python 2.7 and throws a warning on every other
- # version, but seems otherwise harmless.
- --enable-unicode=ucs4 \
- --with-system-ffi \
- --without-ensurepip \
- && make -j$(nproc) \
- && make install \
- && ldconfig \
- ; done \
- && rm -rf "${GNUPGHOME}" \
- && rm -rf /usr/src/python* \
- && rm -rf ~/.cache/
-
RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
- && python3.7 /tmp/get-pip.py \
&& python3.8 /tmp/get-pip.py \
&& rm /tmp/get-pip.py
-CMD ["python3.7"]
+CMD ["python3.8"]
diff --git a/.kokoro/docker/docs/fetch_gpg_keys.sh b/.kokoro/docker/docs/fetch_gpg_keys.sh
deleted file mode 100755
index d653dd8..0000000
--- a/.kokoro/docker/docs/fetch_gpg_keys.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A script to fetch gpg keys with retry.
-# Avoid jinja parsing the file.
-#
-
-function retry {
- if [[ "${#}" -le 1 ]]; then
- echo "Usage: ${0} retry_count commands.."
- exit 1
- fi
- local retries=${1}
- local command="${@:2}"
- until [[ "${retries}" -le 0 ]]; do
- $command && return 0
- if [[ $? -ne 0 ]]; then
- echo "command failed, retrying"
- ((retries--))
- fi
- done
- return 1
-}
-
-# 3.6.9, 3.7.5 (Ned Deily)
-retry 3 gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \
- 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
-
-# 3.8.0 (Ćukasz Langa)
-retry 3 gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \
- E3FF2839C048B25C084DEBE9B26995E310250568
-
-#
diff --git a/.kokoro/samples/python3.9/common.cfg b/.kokoro/samples/python3.9/common.cfg
new file mode 100644
index 0000000..a024f54
--- /dev/null
+++ b/.kokoro/samples/python3.9/common.cfg
@@ -0,0 +1,40 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Build logs will be here
+action {
+ define_artifacts {
+ regex: "**/*sponge_log.xml"
+ }
+}
+
+# Specify which tests to run
+env_vars: {
+ key: "RUN_TESTS_SESSION"
+ value: "py-3.9"
+}
+
+# Declare build specific Cloud project.
+env_vars: {
+ key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ value: "python-docs-samples-tests-py39"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples.sh"
+}
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
+}
+
+# Download secrets for samples
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
+
+# Download trampoline resources.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Use the trampoline script to run in docker.
+build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/continuous.cfg b/.kokoro/samples/python3.9/continuous.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.9/continuous.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/periodic-head.cfg b/.kokoro/samples/python3.9/periodic-head.cfg
new file mode 100644
index 0000000..f9cfcd3
--- /dev/null
+++ b/.kokoro/samples/python3.9/periodic-head.cfg
@@ -0,0 +1,11 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-pubsub/.kokoro/test-samples-against-head.sh"
+}
diff --git a/.kokoro/samples/python3.9/periodic.cfg b/.kokoro/samples/python3.9/periodic.cfg
new file mode 100644
index 0000000..50fec96
--- /dev/null
+++ b/.kokoro/samples/python3.9/periodic.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "False"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/presubmit.cfg b/.kokoro/samples/python3.9/presubmit.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.9/presubmit.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index cf5de74..311a8d5 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -20,9 +20,9 @@ set -eo pipefail
# Enables `**` to include files nested inside sub-folders
shopt -s globstar
-# Exit early if samples directory doesn't exist
-if [ ! -d "./samples" ]; then
- echo "No tests run. `./samples` not found"
+# Exit early if samples don't exist
+if ! find samples -name 'requirements.txt' | grep -q .; then
+ echo "No tests run. './samples/**/requirements.txt' not found"
exit 0
fi
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 4f00c7c..62eb5a7 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,7 +16,7 @@
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v3.4.0
+ rev: v4.0.1
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index e92bff8..7cbdd73 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.6, 3.7, 3.8 and 3.9 on both UNIX and Windows.
+ 2.7, 3.6, 3.7, 3.8 and 3.9 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -68,15 +68,12 @@ Using ``nox``
We use `nox `__ to instrument our tests.
- To test your changes, run unit tests with ``nox``::
+ $ nox -s unit
- $ nox -s unit-2.7
- $ nox -s unit-3.8
- $ ...
+- To run a single unit test::
-- Args to pytest can be passed through the nox command separated by a `--`. For
- example, to run a single test::
+ $ nox -s unit-3.9 -- -k
- $ nox -s unit-3.8 -- -k
.. note::
@@ -143,8 +140,7 @@ Running System Tests
- To run system tests, you can execute::
# Run all system tests
- $ nox -s system-3.8
- $ nox -s system-2.7
+ $ nox -s system
# Run a single system test
$ nox -s system-3.8 -- -k
@@ -152,9 +148,8 @@ Running System Tests
.. note::
- System tests are only configured to run under Python 2.7 and
- Python 3.8. For expediency, we do not run them in older versions
- of Python 3.
+ System tests are only configured to run under Python 2.7 and 3.8.
+ For expediency, we do not run them in older versions of Python 3.
This alone will not run the tests. You'll need to change some local
auth settings and change some configuration in your project to
@@ -202,11 +197,13 @@ Supported Python Versions
We support:
+- `Python 2.7`_
- `Python 3.6`_
- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
+.. _Python 2.7: https://docs.python.org/2.7/
.. _Python 3.6: https://docs.python.org/3.6/
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
@@ -218,8 +215,8 @@ Supported versions can be found in our ``noxfile.py`` `config`_.
.. _config: https://github.com/googleapis/python-cloud-core/blob/master/noxfile.py
-We also explicitly decided to support Python 3 beginning with version
-3.6. Reasons for this include:
+We also explicitly decided to support Python 3 beginning with version 2.7.
+Reasons for this include:
- Encouraging use of newest versions of Python 3
- Taking the lead of `prominent`_ open-source `projects`_
From 5c3959b3870b8c6ccaf321cc030f4b0cba7ce2ba Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 22 Jul 2021 13:48:08 +0000
Subject: [PATCH 017/158] feat: add Samples section to CONTRIBUTING.rst (#119)
Source-Link: https://github.com/googleapis/synthtool/commit/52e4e46eff2a0b70e3ff5506a02929d089d077d4
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:6186535cbdbf6b9fe61f00294929221d060634dae4a0795c1cefdbc995b2d605
---
.github/.OwlBot.lock.yaml | 2 +-
CONTRIBUTING.rst | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index cb06536..d57f742 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:5ff7446edeaede81c3ed58b23a4e76a5403fba1350ce28478045657303b6479d
+ digest: sha256:6186535cbdbf6b9fe61f00294929221d060634dae4a0795c1cefdbc995b2d605
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 7cbdd73..b6ae668 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -177,6 +177,30 @@ Build the docs via:
$ nox -s docs
+*************************
+Samples and code snippets
+*************************
+
+Code samples and snippets live in the `samples/` catalogue. Feel free to
+provide more examples, but make sure to write tests for those examples.
+Each folder containing example code requires its own `noxfile.py` script
+which automates testing. If you decide to create a new folder, you can
+base it on the `samples/snippets` folder (providing `noxfile.py` and
+the requirements files).
+
+The tests will run against a real Google Cloud Project, so you should
+configure them just like the System Tests.
+
+- To run sample tests, you can execute::
+
+ # Run all tests in a folder
+ $ cd samples/snippets
+ $ nox -s py-3.8
+
+ # Run a single sample test
+ $ cd samples/snippets
+ $ nox -s py-3.8 -- -k
+
********************************************
Note About ``README`` as it pertains to PyPI
********************************************
From 065f6e3f0b66fc64adde07d9da5ff9285a836712 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 23 Jul 2021 15:36:16 +0000
Subject: [PATCH 018/158] chore: fix kokoro config for samples (#121)
Source-Link: https://github.com/googleapis/synthtool/commit/dd05f9d12f134871c9e45282349c9856fbebecdd
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:aea14a583128771ae8aefa364e1652f3c56070168ef31beb203534222d842b8b
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/samples/python3.6/periodic-head.cfg | 2 +-
.kokoro/samples/python3.7/periodic-head.cfg | 2 +-
.kokoro/samples/python3.8/periodic-head.cfg | 2 +-
.kokoro/samples/python3.9/periodic-head.cfg | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index d57f742..9ee60f7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:6186535cbdbf6b9fe61f00294929221d060634dae4a0795c1cefdbc995b2d605
+ digest: sha256:aea14a583128771ae8aefa364e1652f3c56070168ef31beb203534222d842b8b
diff --git a/.kokoro/samples/python3.6/periodic-head.cfg b/.kokoro/samples/python3.6/periodic-head.cfg
index f9cfcd3..f9e9e94 100644
--- a/.kokoro/samples/python3.6/periodic-head.cfg
+++ b/.kokoro/samples/python3.6/periodic-head.cfg
@@ -7,5 +7,5 @@ env_vars: {
env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-pubsub/.kokoro/test-samples-against-head.sh"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
}
diff --git a/.kokoro/samples/python3.7/periodic-head.cfg b/.kokoro/samples/python3.7/periodic-head.cfg
index f9cfcd3..f9e9e94 100644
--- a/.kokoro/samples/python3.7/periodic-head.cfg
+++ b/.kokoro/samples/python3.7/periodic-head.cfg
@@ -7,5 +7,5 @@ env_vars: {
env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-pubsub/.kokoro/test-samples-against-head.sh"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
}
diff --git a/.kokoro/samples/python3.8/periodic-head.cfg b/.kokoro/samples/python3.8/periodic-head.cfg
index f9cfcd3..f9e9e94 100644
--- a/.kokoro/samples/python3.8/periodic-head.cfg
+++ b/.kokoro/samples/python3.8/periodic-head.cfg
@@ -7,5 +7,5 @@ env_vars: {
env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-pubsub/.kokoro/test-samples-against-head.sh"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
}
diff --git a/.kokoro/samples/python3.9/periodic-head.cfg b/.kokoro/samples/python3.9/periodic-head.cfg
index f9cfcd3..f9e9e94 100644
--- a/.kokoro/samples/python3.9/periodic-head.cfg
+++ b/.kokoro/samples/python3.9/periodic-head.cfg
@@ -7,5 +7,5 @@ env_vars: {
env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-pubsub/.kokoro/test-samples-against-head.sh"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
}
From c5da33eedd98d1640e37253479335327de6ad80c Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Tue, 27 Jul 2021 12:00:03 -0400
Subject: [PATCH 019/158] chore: release as 1.7.2 (#122)
Release-As: 1.7.2
From f6584bcb71c571a8f2263886271ffc3d5e1461a2 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 27 Jul 2021 14:01:27 -0400
Subject: [PATCH 020/158] chore: release 1.7.2 (#123)
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4277a0f..2f00585 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+### [1.7.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.1...v1.7.2) (2021-07-27)
+
+
+### Documentation
+
+* add Samples section to CONTRIBUTING.rst ([#119](https://www.github.com/googleapis/python-cloud-core/issues/119)) ([5c3959b](https://www.github.com/googleapis/python-cloud-core/commit/5c3959b3870b8c6ccaf321cc030f4b0cba7ce2ba))
+
## [1.7.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.0...v1.7.1) (2021-06-25)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 676929a..ce786ff 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "1.7.1"
+__version__ = "1.7.2"
From cef8fba2eb969aac2e8119fab895e665bbc0e098 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Tue, 27 Jul 2021 17:29:06 -0400
Subject: [PATCH 021/158] chore: use Python 3.8 for docs / docfx sessions
(#125)
Works around recent changes to the Kokoro 'docs-presubmt' configuration.
See: https://github.com/googleapis/python-api-core/pull/224
Also, pin sphinx version (`docs` / `docfx`) and use 'gcp-sphinx-docfx-yaml' (`docfx`).
---
noxfile.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/noxfile.py b/noxfile.py
index 5eb9229..cf7ba7c 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -106,13 +106,13 @@ def cover(session):
session.run("coverage", "erase")
-@nox.session(python=DEFAULT_PYTHON_VERSION)
+@nox.session(python="3.8")
def docs(session):
"""Build the docs for this library."""
session.install(".", "grpcio >= 1.8.2", "grpcio-gcp >= 0.2.2")
session.install("-e", ".")
- session.install("sphinx", "alabaster", "recommonmark")
+ session.install("sphinx==4.0.1", "alabaster", "recommonmark")
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
session.run(
@@ -129,12 +129,14 @@ def docs(session):
)
-@nox.session(python=DEFAULT_PYTHON_VERSION)
+@nox.session(python="3.8")
def docfx(session):
"""Build the docfx yaml files for this library."""
session.install("-e", ".")
- session.install("sphinx", "alabaster", "recommonmark", "sphinx-docfx-yaml")
+ session.install(
+ "sphinx==4.0.1", "alabaster", "recommonmark", "gcp-sphinx-docfx-yaml",
+ )
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
session.run(
From 181d706e5b44d9d4189c21782551ce85c720d733 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Mon, 2 Aug 2021 14:54:16 -0400
Subject: [PATCH 022/158] fix!: drop python 2.7 support (#103)
Drop 'mock' shim
Drop 'six'
Drop explicit 'u"' prefix
Drop 'pytz'
Expand ranges to allow 2.x versions of 'google-auth' / `google-api-core`.
Release-As: 2.0.0b1
Closes #102
---
CONTRIBUTING.rst | 8 +--
README.rst | 7 ++-
google/cloud/_helpers.py | 66 ++++-----------------
google/cloud/_http.py | 11 +---
google/cloud/_testing.py | 8 +--
google/cloud/client.py | 6 +-
google/cloud/version.py | 2 +-
noxfile.py | 6 +-
owlbot.py | 4 +-
setup.py | 11 +---
testing/constraints-2.7.txt | 3 -
testing/constraints-3.5.txt | 2 -
testing/constraints-3.6.txt | 3 +-
tests/unit/test__helpers.py | 105 +++++-----------------------------
tests/unit/test__http.py | 100 ++++++++++++++++----------------
tests/unit/test_client.py | 11 ++--
tests/unit/test_exceptions.py | 20 +++----
tests/unit/test_obsolete.py | 3 +-
tests/unit/test_operation.py | 2 +-
19 files changed, 114 insertions(+), 264 deletions(-)
delete mode 100644 testing/constraints-2.7.txt
delete mode 100644 testing/constraints-3.5.txt
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index b6ae668..e4542d4 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 2.7, 3.6, 3.7, 3.8 and 3.9 on both UNIX and Windows.
+ 3.6, 3.7, 3.8 and 3.9 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -148,7 +148,7 @@ Running System Tests
.. note::
- System tests are only configured to run under Python 2.7 and 3.8.
+ System tests are only configured to run under Python 3.8.
For expediency, we do not run them in older versions of Python 3.
This alone will not run the tests. You'll need to change some local
@@ -221,13 +221,11 @@ Supported Python Versions
We support:
-- `Python 2.7`_
- `Python 3.6`_
- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
-.. _Python 2.7: https://docs.python.org/2.7/
.. _Python 3.6: https://docs.python.org/3.6/
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
@@ -239,7 +237,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_.
.. _config: https://github.com/googleapis/python-cloud-core/blob/master/noxfile.py
-We also explicitly decided to support Python 3 beginning with version 2.7.
+We also explicitly decided to support Python 3 beginning with version 3.6.
Reasons for this include:
- Encouraging use of newest versions of Python 3
diff --git a/README.rst b/README.rst
index 1d760ae..f64c3f6 100644
--- a/README.rst
+++ b/README.rst
@@ -34,6 +34,7 @@ Supported Python Versions
-------------------------
Python >= 3.6
-Deprecated Python Versions
---------------------------
-Python == 2.7. Python 2.7 support will be removed on January 1, 2020.
+Unsupported Python Versions
+---------------------------
+Python == 2.7: the last version of this library which supported Python 2.7
+is ``google.cloud.core 1.7.2``.
diff --git a/google/cloud/_helpers.py b/google/cloud/_helpers.py
index 52a96b8..d8f2851 100644
--- a/google/cloud/_helpers.py
+++ b/google/cloud/_helpers.py
@@ -21,13 +21,11 @@
import calendar
import datetime
+import http.client
import os
import re
from threading import local as Local
-import six
-from six.moves import http_client
-
import google.auth
import google.auth.transport.requests
from google.protobuf import duration_pb2
@@ -41,6 +39,9 @@
_NOW = datetime.datetime.utcnow # To be replaced by tests.
+UTC = datetime.timezone.utc # Singleton instance to be used throughout.
+_EPOCH = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
+
_RFC3339_MICROS = "%Y-%m-%dT%H:%M:%S.%fZ"
_RFC3339_NO_FRACTION = "%Y-%m-%dT%H:%M:%S"
_TIMEONLY_W_MICROS = "%H:%M:%S.%f"
@@ -111,41 +112,6 @@ def top(self):
return self._stack[-1]
-class _UTC(datetime.tzinfo):
- """Basic UTC implementation.
-
- Implementing a small surface area to avoid depending on ``pytz``.
- """
-
- _dst = datetime.timedelta(0)
- _tzname = "UTC"
- _utcoffset = _dst
-
- def dst(self, dt): # pylint: disable=unused-argument
- """Daylight savings time offset."""
- return self._dst
-
- def fromutc(self, dt):
- """Convert a timestamp from (naive) UTC to this timezone."""
- if dt.tzinfo is None:
- return dt.replace(tzinfo=self)
- return super(_UTC, self).fromutc(dt)
-
- def tzname(self, dt): # pylint: disable=unused-argument
- """Get the name of this timezone."""
- return self._tzname
-
- def utcoffset(self, dt): # pylint: disable=unused-argument
- """UTC offset of this timezone."""
- return self._utcoffset
-
- def __repr__(self):
- return "<%s>" % (self._tzname,)
-
- def __str__(self):
- return self._tzname
-
-
def _ensure_tuple_or_list(arg_name, tuple_or_list):
"""Ensures an input is a tuple or list.
@@ -344,9 +310,6 @@ def _datetime_to_rfc3339(value, ignore_zone=True):
def _to_bytes(value, encoding="ascii"):
"""Converts a string value to bytes, if necessary.
- Unfortunately, ``six.b`` is insufficient for this task since in
- Python2 it does not modify ``unicode`` objects.
-
:type value: str / bytes or unicode
:param value: The string/bytes value to be converted.
@@ -363,8 +326,8 @@ def _to_bytes(value, encoding="ascii"):
in if it started out as bytes.
:raises TypeError: if the value could not be converted to bytes.
"""
- result = value.encode(encoding) if isinstance(value, six.text_type) else value
- if isinstance(result, six.binary_type):
+ result = value.encode(encoding) if isinstance(value, str) else value
+ if isinstance(result, bytes):
return result
else:
raise TypeError("%r could not be converted to bytes" % (value,))
@@ -382,8 +345,8 @@ def _bytes_to_unicode(value):
:raises ValueError: if the value could not be converted to unicode.
"""
- result = value.decode("utf-8") if isinstance(value, six.binary_type) else value
- if isinstance(result, six.text_type):
+ result = value.decode("utf-8") if isinstance(value, bytes) else value
+ if isinstance(result, str):
return result
else:
raise ValueError("%r could not be converted to unicode" % (value,))
@@ -559,7 +522,7 @@ def make_secure_channel(credentials, user_agent, host, extra_options=()):
:rtype: :class:`grpc._channel.Channel`
:returns: gRPC secure channel with credentials attached.
"""
- target = "%s:%d" % (host, http_client.HTTPS_PORT)
+ target = "%s:%d" % (host, http.client.HTTPS_PORT)
http_request = google.auth.transport.requests.Request()
user_agent_option = ("grpc.primary_user_agent", user_agent)
@@ -621,16 +584,7 @@ def make_insecure_stub(stub_class, host, port=None):
if port is None:
target = host
else:
- # NOTE: This assumes port != http_client.HTTPS_PORT:
+ # NOTE: This assumes port != http.client.HTTPS_PORT:
target = "%s:%d" % (host, port)
channel = grpc.insecure_channel(target)
return stub_class(channel)
-
-
-try:
- from pytz import UTC # pylint: disable=unused-import,wrong-import-order
-except ImportError: # pragma: NO COVER
- UTC = _UTC() # Singleton instance to be used throughout.
-
-# Need to define _EPOCH at the end of module since it relies on UTC.
-_EPOCH = datetime.datetime.utcfromtimestamp(0).replace(tzinfo=UTC)
diff --git a/google/cloud/_http.py b/google/cloud/_http.py
index 6627a9b..7c9cbc9 100644
--- a/google/cloud/_http.py
+++ b/google/cloud/_http.py
@@ -15,18 +15,13 @@
"""Shared implementation of connections to API servers."""
import collections
-
-try:
- import collections.abc as collections_abc
-except ImportError: # Python2
- import collections as collections_abc
+import collections.abc
import json
import os
import platform
+from urllib.parse import urlencode
import warnings
-from six.moves.urllib.parse import urlencode
-
from google.api_core.client_info import ClientInfo
from google.cloud import exceptions
from google.cloud import version
@@ -263,7 +258,7 @@ def build_api_url(
query_params = query_params or {}
- if isinstance(query_params, collections_abc.Mapping):
+ if isinstance(query_params, collections.abc.Mapping):
query_params = query_params.copy()
else:
query_params_dict = collections.defaultdict(list)
diff --git a/google/cloud/_testing.py b/google/cloud/_testing.py
index 04f0dba..8bbd082 100644
--- a/google/cloud/_testing.py
+++ b/google/cloud/_testing.py
@@ -117,10 +117,6 @@ def __init__(self, *pages, **kwargs):
self._pages = iter(pages)
self.page_token = kwargs.get("page_token")
- def next(self):
+ def __next__(self):
"""Iterate to the next page."""
- import six
-
- return six.next(self._pages)
-
- __next__ = next
+ return next(self._pages)
diff --git a/google/cloud/client.py b/google/cloud/client.py
index c2e7cff..e058c2d 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client.py
@@ -19,8 +19,6 @@
import os
from pickle import PicklingError
-import six
-
import google.api_core.client_options
import google.api_core.exceptions
import google.auth
@@ -271,10 +269,10 @@ def __init__(self, project=None, credentials=None):
"determined from the environment."
)
- if isinstance(project, six.binary_type):
+ if isinstance(project, bytes):
project = project.decode("utf-8")
- if not isinstance(project, six.string_types):
+ if not isinstance(project, str):
raise ValueError("Project must be a string.")
self.project = project
diff --git a/google/cloud/version.py b/google/cloud/version.py
index ce786ff..5fa7744 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "1.7.2"
+__version__ = "2.0.0b1"
diff --git a/noxfile.py b/noxfile.py
index cf7ba7c..fbe1359 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -60,9 +60,7 @@ def default(session):
)
# Install all test dependencies, then install local packages in-place.
- session.install(
- "mock", "pytest", "pytest-cov", "grpcio >= 1.0.2", "-c", constraints_path
- )
+ session.install("pytest", "pytest-cov", "grpcio >= 1.0.2", "-c", constraints_path)
session.install("-e", ".", "-c", constraints_path)
# Run py.test against the unit tests.
@@ -80,7 +78,7 @@ def default(session):
)
-@nox.session(python=["2.7", "3.6", "3.7", "3.8", "3.9"])
+@nox.session(python=["3.6", "3.7", "3.8", "3.9"])
def unit(session):
"""Default unit test session."""
default(session)
diff --git a/owlbot.py b/owlbot.py
index 80f0c15..5b0f6c3 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -14,8 +14,6 @@
"""This script is used to synthesize generated parts of this library."""
-import re
-
import synthtool as s
from synthtool import gcp
@@ -24,7 +22,7 @@
# ----------------------------------------------------------------------------
# Add templated files
# ----------------------------------------------------------------------------
-templated_files = common.py_library(cov_level=100)
+templated_files = common.py_library(microgenerator=True, cov_level=100)
s.move(
templated_files,
excludes=[
diff --git a/setup.py b/setup.py
index 66e115c..78457ca 100644
--- a/setup.py
+++ b/setup.py
@@ -28,11 +28,8 @@
# 'Development Status :: 5 - Production/Stable'
release_status = "Development Status :: 5 - Production/Stable"
dependencies = [
- "google-api-core >= 1.21.0, < 2.0.0dev",
- "google-auth >= 1.24.0, < 2.0dev",
- # Support six==1.12.0 due to App Engine standard runtime.
- # https://github.com/googleapis/python-cloud-core/issues/45
- "six >=1.12.0",
+ "google-api-core >= 1.21.0, < 3.0.0dev",
+ "google-auth >= 1.24.0, < 3.0dev",
]
extras = {"grpc": "grpcio >= 1.8.2, < 2.0dev"}
@@ -76,8 +73,6 @@
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python",
- "Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
@@ -91,7 +86,7 @@
namespace_packages=namespaces,
install_requires=dependencies,
extras_require=extras,
- python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*",
+ python_requires=">=3.6",
include_package_data=True,
zip_safe=False,
)
diff --git a/testing/constraints-2.7.txt b/testing/constraints-2.7.txt
deleted file mode 100644
index 3b6cd2c..0000000
--- a/testing/constraints-2.7.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-google-api-core==1.21.0
-googleapis-common-protos<1.53.0
-six==1.12.0
diff --git a/testing/constraints-3.5.txt b/testing/constraints-3.5.txt
deleted file mode 100644
index 8679811..0000000
--- a/testing/constraints-3.5.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-google-api-core==1.21.0
-six==1.12.0
diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt
index 83fc2eb..9bd2a7c 100644
--- a/testing/constraints-3.6.txt
+++ b/testing/constraints-3.6.txt
@@ -6,5 +6,4 @@
# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
# Then this file should have foo==1.14.0
google-api-core==1.21.0
-six==1.12.0
-grpcio==1.8.2
\ No newline at end of file
+grpcio==1.8.2
diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py
index 03e2ff2..db0fa5b 100644
--- a/tests/unit/test__helpers.py
+++ b/tests/unit/test__helpers.py
@@ -13,8 +13,7 @@
# limitations under the License.
import unittest
-
-import mock
+from unittest import mock
class Test__LocalStack(unittest.TestCase):
@@ -45,69 +44,6 @@ def test_it(self):
self.assertEqual(list(batches), [])
-class Test__UTC(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud._helpers import _UTC
-
- return _UTC
-
- def _make_one(self):
- return self._get_target_class()()
-
- def test_module_property(self):
- from google.cloud import _helpers as MUT
-
- klass = self._get_target_class()
- try:
- import pytz
- except ImportError: # pragma: NO COVER
- self.assertIsInstance(MUT.UTC, klass)
- else:
- self.assertIs(MUT.UTC, pytz.UTC)
-
- def test_dst(self):
- import datetime
-
- tz = self._make_one()
- self.assertEqual(tz.dst(None), datetime.timedelta(0))
-
- def test_fromutc(self):
- import datetime
-
- naive_epoch = datetime.datetime(1970, 1, 1, 0, 0, 1, tzinfo=None)
- self.assertIsNone(naive_epoch.tzinfo)
- tz = self._make_one()
- epoch = tz.fromutc(naive_epoch)
- self.assertEqual(epoch.tzinfo, tz)
-
- def test_fromutc_with_tz(self):
- import datetime
-
- tz = self._make_one()
- epoch_with_tz = datetime.datetime(1970, 1, 1, 0, 0, 1, tzinfo=tz)
- epoch = tz.fromutc(epoch_with_tz)
- self.assertEqual(epoch.tzinfo, tz)
-
- def test_tzname(self):
- tz = self._make_one()
- self.assertEqual(tz.tzname(None), "UTC")
-
- def test_utcoffset(self):
- import datetime
-
- tz = self._make_one()
- self.assertEqual(tz.utcoffset(None), datetime.timedelta(0))
-
- def test___repr__(self):
- tz = self._make_one()
- self.assertEqual(repr(tz), "")
-
- def test___str__(self):
- tz = self._make_one()
- self.assertEqual(str(tz), "UTC")
-
-
class Test__ensure_tuple_or_list(unittest.TestCase):
def _call_fut(self, arg_name, tuple_or_list):
from google.cloud._helpers import _ensure_tuple_or_list
@@ -199,7 +135,6 @@ def test_w_none(self):
def test_w_utc_datetime(self):
import datetime
- import six
from google.cloud._helpers import UTC
from google.cloud._helpers import _microseconds_from_datetime
@@ -207,30 +142,24 @@ def test_w_utc_datetime(self):
NOW_MICROS = _microseconds_from_datetime(NOW)
MILLIS = NOW_MICROS // 1000
result = self._call_fut(NOW)
- self.assertIsInstance(result, six.integer_types)
+ self.assertIsInstance(result, int)
self.assertEqual(result, MILLIS)
def test_w_non_utc_datetime(self):
import datetime
- import six
- from google.cloud._helpers import _UTC
from google.cloud._helpers import _microseconds_from_datetime
- class CET(_UTC):
- _tzname = "CET"
- _utcoffset = datetime.timedelta(hours=-1)
-
- zone = CET()
+ offset = datetime.timedelta(hours=-1)
+ zone = datetime.timezone(offset=offset, name="CET")
NOW = datetime.datetime(2015, 7, 28, 16, 34, 47, tzinfo=zone)
NOW_MICROS = _microseconds_from_datetime(NOW)
MILLIS = NOW_MICROS // 1000
result = self._call_fut(NOW)
- self.assertIsInstance(result, six.integer_types)
+ self.assertIsInstance(result, int)
self.assertEqual(result, MILLIS)
def test_w_naive_datetime(self):
import datetime
- import six
from google.cloud._helpers import UTC
from google.cloud._helpers import _microseconds_from_datetime
@@ -239,7 +168,7 @@ def test_w_naive_datetime(self):
UTC_NOW_MICROS = _microseconds_from_datetime(UTC_NOW)
MILLIS = UTC_NOW_MICROS // 1000
result = self._call_fut(NOW)
- self.assertIsInstance(result, six.integer_types)
+ self.assertIsInstance(result, int)
self.assertEqual(result, MILLIS)
@@ -497,13 +426,9 @@ def _call_fut(self, *args, **kwargs):
@staticmethod
def _make_timezone(offset):
- from google.cloud._helpers import _UTC
-
- class CET(_UTC):
- _tzname = "CET"
- _utcoffset = offset
+ import datetime
- return CET()
+ return datetime.timezone(offset=offset, name="CET")
def test_w_utc_datetime(self):
import datetime
@@ -548,12 +473,12 @@ def test_with_bytes(self):
self.assertEqual(self._call_fut(value), value)
def test_with_unicode(self):
- value = u"string-val"
+ value = "string-val"
encoded_value = b"string-val"
self.assertEqual(self._call_fut(value), encoded_value)
def test_unicode_non_ascii(self):
- value = u"\u2013" # Long hyphen
+ value = "\u2013" # Long hyphen
encoded_value = b"\xe2\x80\x93"
self.assertRaises(UnicodeEncodeError, self._call_fut, value)
self.assertEqual(self._call_fut(value, encoding="utf-8"), encoded_value)
@@ -575,7 +500,7 @@ def test_with_bytes(self):
self.assertEqual(self._call_fut(value), encoded_value)
def test_with_unicode(self):
- value = u"string-val"
+ value = "string-val"
encoded_value = "string-val"
self.assertEqual(self._call_fut(value), encoded_value)
@@ -795,7 +720,7 @@ def _call_fut(self, *args, **kwargs):
return make_secure_channel(*args, **kwargs)
def test_it(self):
- from six.moves import http_client
+ import http.client
credentials = object()
host = "HOST"
@@ -810,7 +735,7 @@ def test_it(self):
self.assertIs(result, secure_authorized_channel.return_value)
- expected_target = "%s:%d" % (host, http_client.HTTPS_PORT)
+ expected_target = "%s:%d" % (host, http.client.HTTPS_PORT)
expected_options = (("grpc.primary_user_agent", user_agent),)
secure_authorized_channel.assert_called_once_with(
@@ -818,7 +743,7 @@ def test_it(self):
)
def test_extra_options(self):
- from six.moves import http_client
+ import http.client
credentials = object()
host = "HOST"
@@ -834,7 +759,7 @@ def test_extra_options(self):
self.assertIs(result, secure_authorized_channel.return_value)
- expected_target = "%s:%d" % (host, http_client.HTTPS_PORT)
+ expected_target = "%s:%d" % (host, http.client.HTTPS_PORT)
expected_options = (("grpc.primary_user_agent", user_agent), extra_options[0])
secure_authorized_channel.assert_called_once_with(
diff --git a/tests/unit/test__http.py b/tests/unit/test__http.py
index f96d291..ab03fac 100644
--- a/tests/unit/test__http.py
+++ b/tests/unit/test__http.py
@@ -12,14 +12,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import http.client
import json
import os
import unittest
+from unittest import mock
import warnings
-import mock
import requests
-from six.moves import http_client
class TestConnection(unittest.TestCase):
@@ -128,7 +128,7 @@ def test_http_property(self):
self.assertIs(conn.http, client._http)
-def make_response(status=http_client.OK, content=b"", headers={}):
+def make_response(status=http.client.OK, content=b"", headers={}):
response = requests.Response()
response.status_code = status
response._content = content
@@ -206,8 +206,8 @@ def test_build_api_url_w_pretty_print_query_params(self):
self.assertEqual(uri, URI)
def test_build_api_url_w_extra_query_params(self):
- from six.moves.urllib.parse import parse_qs
- from six.moves.urllib.parse import urlsplit
+ from urllib.parse import parse_qs
+ from urllib.parse import urlsplit
client = object()
conn = self._make_mock_one(client)
@@ -224,8 +224,8 @@ def test_build_api_url_w_extra_query_params(self):
self.assertEqual(parms["prettyPrint"], ["false"])
def test_build_api_url_w_extra_query_params_tuples(self):
- from six.moves.urllib.parse import parse_qs
- from six.moves.urllib.parse import urlsplit
+ from urllib.parse import parse_qs
+ from urllib.parse import urlsplit
client = object()
conn = self._make_mock_one(client)
@@ -290,14 +290,14 @@ def test_get_api_base_url_for_mtls_env_auto(self):
def test__make_request_no_data_no_content_type_no_headers(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([make_response()])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response()])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_one(client)
url = "http://example.com/test"
response = conn._make_request("GET", url)
- self.assertEqual(response.status_code, http_client.OK)
+ self.assertEqual(response.status_code, http.client.OK)
self.assertEqual(response.content, b"")
expected_headers = {
@@ -305,7 +305,7 @@ def test__make_request_no_data_no_content_type_no_headers(self):
"User-Agent": conn.user_agent,
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=url,
headers=expected_headers,
@@ -316,8 +316,8 @@ def test__make_request_no_data_no_content_type_no_headers(self):
def test__make_request_w_data_no_extra_headers(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([make_response()])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response()])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_one(client)
url = "http://example.com/test"
data = b"data"
@@ -330,7 +330,7 @@ def test__make_request_w_data_no_extra_headers(self):
"User-Agent": conn.user_agent,
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=url,
headers=expected_headers,
@@ -341,8 +341,8 @@ def test__make_request_w_data_no_extra_headers(self):
def test__make_request_w_extra_headers(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([make_response()])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response()])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_one(client)
url = "http://example.com/test"
@@ -354,7 +354,7 @@ def test__make_request_w_extra_headers(self):
"User-Agent": conn.user_agent,
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=url,
headers=expected_headers,
@@ -365,8 +365,8 @@ def test__make_request_w_extra_headers(self):
def test__make_request_w_timeout(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([make_response()])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response()])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_one(client)
url = "http://example.com/test"
@@ -377,7 +377,7 @@ def test__make_request_w_timeout(self):
"User-Agent": conn.user_agent,
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=url,
headers=expected_headers,
@@ -388,10 +388,10 @@ def test__make_request_w_timeout(self):
def test_api_request_defaults(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session(
+ session = make_requests_session(
[make_response(content=b"{}", headers=self.JSON_HEADERS)]
)
- client = mock.Mock(_http=http, spec=["_http"])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
path = "/path/required"
@@ -405,7 +405,7 @@ def test_api_request_defaults(self):
expected_url = "{base}/mock/{version}{path}?prettyPrint=false".format(
base=conn.API_BASE_URL, version=conn.API_VERSION, path=path
)
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=expected_url,
headers=expected_headers,
@@ -414,16 +414,16 @@ def test_api_request_defaults(self):
)
def test_api_request_w_non_json_response(self):
- http = make_requests_session([make_response(content=b"content")])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response(content=b"content")])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
with self.assertRaises(ValueError):
conn.api_request("GET", "/")
def test_api_request_wo_json_expected(self):
- http = make_requests_session([make_response(content=b"content")])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response(content=b"content")])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
result = conn.api_request("GET", "/", expect_json=False)
@@ -431,12 +431,12 @@ def test_api_request_wo_json_expected(self):
self.assertEqual(result, b"content")
def test_api_request_w_query_params(self):
- from six.moves.urllib.parse import parse_qs
- from six.moves.urllib.parse import urlsplit
+ from urllib.parse import parse_qs
+ from urllib.parse import urlsplit
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([self.EMPTY_JSON_RESPONSE])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
result = conn.api_request("GET", "/", {"foo": "bar", "baz": ["qux", "quux"]})
@@ -448,7 +448,7 @@ def test_api_request_w_query_params(self):
"User-Agent": conn.user_agent,
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=mock.ANY,
headers=expected_headers,
@@ -456,7 +456,7 @@ def test_api_request_w_query_params(self):
timeout=self._get_default_timeout(),
)
- url = http.request.call_args[1]["url"]
+ url = session.request.call_args[1]["url"]
scheme, netloc, path, qs, _ = urlsplit(url)
self.assertEqual("%s://%s" % (scheme, netloc), conn.API_BASE_URL)
# Intended to emulate self.mock_template
@@ -469,8 +469,8 @@ def test_api_request_w_query_params(self):
def test_api_request_w_headers(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([self.EMPTY_JSON_RESPONSE])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
result = conn.api_request("GET", "/", headers={"X-Foo": "bar"})
@@ -482,7 +482,7 @@ def test_api_request_w_headers(self):
"X-Foo": "bar",
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=mock.ANY,
headers=expected_headers,
@@ -493,8 +493,8 @@ def test_api_request_w_headers(self):
def test_api_request_w_extra_headers(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([self.EMPTY_JSON_RESPONSE])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
conn.extra_headers = {
"X-Baz": "dax-quux",
@@ -512,7 +512,7 @@ def test_api_request_w_extra_headers(self):
"X-Baz": "dax-quux",
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=mock.ANY,
headers=expected_headers,
@@ -523,8 +523,8 @@ def test_api_request_w_extra_headers(self):
def test_api_request_w_data(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([self.EMPTY_JSON_RESPONSE])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
data = {"foo": "bar"}
@@ -539,7 +539,7 @@ def test_api_request_w_data(self):
CLIENT_INFO_HEADER: conn.user_agent,
}
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="POST",
url=mock.ANY,
headers=expected_headers,
@@ -550,10 +550,10 @@ def test_api_request_w_data(self):
def test_api_request_w_timeout(self):
from google.cloud._http import CLIENT_INFO_HEADER
- http = make_requests_session(
+ session = make_requests_session(
[make_response(content=b"{}", headers=self.JSON_HEADERS)]
)
- client = mock.Mock(_http=http, spec=["_http"])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
path = "/path/required"
@@ -567,7 +567,7 @@ def test_api_request_w_timeout(self):
expected_url = "{base}/mock/{version}{path}?prettyPrint=false".format(
base=conn.API_BASE_URL, version=conn.API_VERSION, path=path
)
- http.request.assert_called_once_with(
+ session.request.assert_called_once_with(
method="GET",
url=expected_url,
headers=expected_headers,
@@ -578,8 +578,8 @@ def test_api_request_w_timeout(self):
def test_api_request_w_404(self):
from google.cloud import exceptions
- http = make_requests_session([make_response(http_client.NOT_FOUND)])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session([make_response(http.client.NOT_FOUND)])
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
with self.assertRaises(exceptions.NotFound):
@@ -588,8 +588,10 @@ def test_api_request_w_404(self):
def test_api_request_w_500(self):
from google.cloud import exceptions
- http = make_requests_session([make_response(http_client.INTERNAL_SERVER_ERROR)])
- client = mock.Mock(_http=http, spec=["_http"])
+ session = make_requests_session(
+ [make_response(http.client.INTERNAL_SERVER_ERROR)]
+ )
+ client = mock.Mock(_http=session, spec=["_http"])
conn = self._make_mock_one(client)
with self.assertRaises(exceptions.InternalServerError):
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index c7753a8..febfcfe 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -15,8 +15,7 @@
import io
import json
import unittest
-
-import mock
+from unittest import mock
def _make_credentials():
@@ -393,8 +392,6 @@ def test_constructor_w_invalid_project(self):
self._make_one(project=object(), credentials=CREDENTIALS, _http=HTTP)
def _explicit_ctor_helper(self, project):
- import six
-
CREDENTIALS = _make_credentials()
HTTP = object()
@@ -402,7 +399,7 @@ def _explicit_ctor_helper(self, project):
project=project, credentials=CREDENTIALS, _http=HTTP
)
- if isinstance(project, six.binary_type):
+ if isinstance(project, bytes):
self.assertEqual(client_obj.project, project.decode("utf-8"))
else:
self.assertEqual(client_obj.project, project)
@@ -413,8 +410,8 @@ def test_constructor_explicit_bytes(self):
PROJECT = b"PROJECT"
self._explicit_ctor_helper(PROJECT)
- def test_constructor_explicit_unicode(self):
- PROJECT = u"PROJECT"
+ def test_constructor_explicit_text(self):
+ PROJECT = "PROJECT"
self._explicit_ctor_helper(PROJECT)
def _from_service_account_info_helper(self, project=None):
diff --git a/tests/unit/test_exceptions.py b/tests/unit/test_exceptions.py
index 8c9a04d..86795c2 100644
--- a/tests/unit/test_exceptions.py
+++ b/tests/unit/test_exceptions.py
@@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import http.client
import json
import requests
-from six.moves import http_client
from google.cloud import exceptions
@@ -45,8 +45,8 @@ def test_create_google_cloud_error_with_args():
def test_from_http_status():
message = "message"
- exception = exceptions.from_http_status(http_client.NOT_FOUND, message)
- assert exception.code == http_client.NOT_FOUND
+ exception = exceptions.from_http_status(http.client.NOT_FOUND, message)
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == message
assert exception.errors == []
@@ -55,11 +55,11 @@ def test_from_http_status_with_errors():
message = "message"
errors = ["1", "2"]
exception = exceptions.from_http_status(
- http_client.NOT_FOUND, message, errors=errors
+ http.client.NOT_FOUND, message, errors=errors
)
assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http_client.NOT_FOUND
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == message
assert exception.errors == errors
@@ -75,7 +75,7 @@ def test_from_http_status_unknown_code():
def make_response(content):
response = requests.Response()
response._content = content
- response.status_code = http_client.NOT_FOUND
+ response.status_code = http.client.NOT_FOUND
response.request = requests.Request(
method="POST", url="https://example.com"
).prepare()
@@ -88,7 +88,7 @@ def test_from_http_response_no_content():
exception = exceptions.from_http_response(response)
assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http_client.NOT_FOUND
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == "POST https://example.com/: unknown error"
assert exception.response == response
@@ -99,7 +99,7 @@ def test_from_http_response_text_content():
exception = exceptions.from_http_response(response)
assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http_client.NOT_FOUND
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == "POST https://example.com/: message"
@@ -113,7 +113,7 @@ def test_from_http_response_json_content():
exception = exceptions.from_http_response(response)
assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http_client.NOT_FOUND
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == "POST https://example.com/: json message"
assert exception.errors == ["1", "2"]
@@ -124,5 +124,5 @@ def test_from_http_response_bad_json_content():
exception = exceptions.from_http_response(response)
assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http_client.NOT_FOUND
+ assert exception.code == http.client.NOT_FOUND
assert exception.message == "POST https://example.com/: unknown error"
diff --git a/tests/unit/test_obsolete.py b/tests/unit/test_obsolete.py
index 3c38005..d4c8020 100644
--- a/tests/unit/test_obsolete.py
+++ b/tests/unit/test_obsolete.py
@@ -12,10 +12,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from unittest import mock
import warnings
-import mock
-
from google.cloud import obsolete
diff --git a/tests/unit/test_operation.py b/tests/unit/test_operation.py
index 5a86dbe..3d90048 100644
--- a/tests/unit/test_operation.py
+++ b/tests/unit/test_operation.py
@@ -191,7 +191,7 @@ def test_from_pb_w_metadata_and_kwargs(self):
type_url_map = {type_url: Struct}
client = _Client()
- meta = Struct(fields={"foo": Value(string_value=u"Bar")})
+ meta = Struct(fields={"foo": Value(string_value="Bar")})
metadata_pb = Any(type_url=type_url, value=meta.SerializeToString())
operation_pb = operations_pb2.Operation(
name=self.OPERATION_NAME, metadata=metadata_pb
From 8bea25b7320048087a3cf660958a1c97ad9e03fb Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 2 Aug 2021 15:06:04 -0400
Subject: [PATCH 023/158] chore: release 2.0.0b1 (#126)
---
CHANGELOG.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2f00585..145b881 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.0.0b1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.2...v2.0.0b1) (2021-08-02)
+
+
+### â BREAKING CHANGES
+
+* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
+
### [1.7.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.1...v1.7.2) (2021-07-27)
From 23ab4327245d54671b35dc106a77d4f09ee45bf9 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 12 Aug 2021 15:54:47 +0000
Subject: [PATCH 024/158] chore(python): avoid `.nox` directories when building
docs (#130)
Source-Link: https://github.com/googleapis/synthtool/commit/7e1f6da50524b5d98eb67adbf6dd0805df54233d
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:a1a891041baa4ffbe1a809ac1b8b9b4a71887293c9101c88e8e255943c5aec2d
---
.github/.OwlBot.lock.yaml | 2 +-
docs/conf.py | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 9ee60f7..b771c37 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:aea14a583128771ae8aefa364e1652f3c56070168ef31beb203534222d842b8b
+ digest: sha256:a1a891041baa4ffbe1a809ac1b8b9b4a71887293c9101c88e8e255943c5aec2d
diff --git a/docs/conf.py b/docs/conf.py
index 5a365f8..218cd72 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -110,6 +110,7 @@
# directories to ignore when looking for source files.
exclude_patterns = [
"_build",
+ "**/.nox/**/*",
"samples/AUTHORING_GUIDE.md",
"samples/CONTRIBUTING.md",
"samples/snippets/README.rst",
From 6fcd85b4c2a7c328f931b1068b4f56716b10bf4f Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Fri, 13 Aug 2021 10:56:21 -0400
Subject: [PATCH 025/158] tests: allow prerelease dependency versions under
Python 3.9 (#129)
Also, remove 'tests/unit/test_exceptions.py' fossil. The
'google.cloud.exceptions' module no longer contains any code, but is only
a set of backward-compatibility imports.
---
testing/constraints-3.9.txt | 2 +
tests/unit/test_exceptions.py | 128 ----------------------------------
2 files changed, 2 insertions(+), 128 deletions(-)
delete mode 100644 tests/unit/test_exceptions.py
diff --git a/testing/constraints-3.9.txt b/testing/constraints-3.9.txt
index e69de29..6d34489 100644
--- a/testing/constraints-3.9.txt
+++ b/testing/constraints-3.9.txt
@@ -0,0 +1,2 @@
+# Allow prerelease requirements
+--pre
diff --git a/tests/unit/test_exceptions.py b/tests/unit/test_exceptions.py
deleted file mode 100644
index 86795c2..0000000
--- a/tests/unit/test_exceptions.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import http.client
-import json
-
-import requests
-
-from google.cloud import exceptions
-
-
-def test_create_google_cloud_error():
- exception = exceptions.GoogleCloudError("Testing")
- exception.code = 600
- assert str(exception) == "600 Testing"
- assert exception.message == "Testing"
- assert exception.errors == []
-
-
-def test_create_google_cloud_error_with_args():
- error = {
- "domain": "global",
- "location": "test",
- "locationType": "testing",
- "message": "Testing",
- "reason": "test",
- }
- exception = exceptions.GoogleCloudError("Testing", [error])
- exception.code = 600
- assert str(exception) == "600 Testing"
- assert exception.message == "Testing"
- assert exception.errors == [error]
-
-
-def test_from_http_status():
- message = "message"
- exception = exceptions.from_http_status(http.client.NOT_FOUND, message)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == message
- assert exception.errors == []
-
-
-def test_from_http_status_with_errors():
- message = "message"
- errors = ["1", "2"]
- exception = exceptions.from_http_status(
- http.client.NOT_FOUND, message, errors=errors
- )
-
- assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == message
- assert exception.errors == errors
-
-
-def test_from_http_status_unknown_code():
- message = "message"
- status_code = 156
- exception = exceptions.from_http_status(status_code, message)
- assert exception.code == status_code
- assert exception.message == message
-
-
-def make_response(content):
- response = requests.Response()
- response._content = content
- response.status_code = http.client.NOT_FOUND
- response.request = requests.Request(
- method="POST", url="https://example.com"
- ).prepare()
- return response
-
-
-def test_from_http_response_no_content():
- response = make_response(None)
-
- exception = exceptions.from_http_response(response)
-
- assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == "POST https://example.com/: unknown error"
- assert exception.response == response
-
-
-def test_from_http_response_text_content():
- response = make_response(b"message")
-
- exception = exceptions.from_http_response(response)
-
- assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == "POST https://example.com/: message"
-
-
-def test_from_http_response_json_content():
- response = make_response(
- json.dumps({"error": {"message": "json message", "errors": ["1", "2"]}}).encode(
- "utf-8"
- )
- )
-
- exception = exceptions.from_http_response(response)
-
- assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == "POST https://example.com/: json message"
- assert exception.errors == ["1", "2"]
-
-
-def test_from_http_response_bad_json_content():
- response = make_response(json.dumps({"meep": "moop"}).encode("utf-8"))
-
- exception = exceptions.from_http_response(response)
-
- assert isinstance(exception, exceptions.NotFound)
- assert exception.code == http.client.NOT_FOUND
- assert exception.message == "POST https://example.com/: unknown error"
From 546395497816d9c91f0c350c005b325a787f8c0e Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 13 Aug 2021 15:30:13 +0000
Subject: [PATCH 026/158] chore: drop mention of Python 2.7 from templates
(#131)
Source-Link: https://github.com/googleapis/synthtool/commit/facee4cc1ea096cd8bcc008bb85929daa7c414c0
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:9743664022bd63a8084be67f144898314c7ca12f0a03e422ac17c733c129d803
---
.github/.OwlBot.lock.yaml | 2 +-
scripts/readme-gen/templates/install_deps.tmpl.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index b771c37..a9fcd07 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:a1a891041baa4ffbe1a809ac1b8b9b4a71887293c9101c88e8e255943c5aec2d
+ digest: sha256:9743664022bd63a8084be67f144898314c7ca12f0a03e422ac17c733c129d803
diff --git a/scripts/readme-gen/templates/install_deps.tmpl.rst b/scripts/readme-gen/templates/install_deps.tmpl.rst
index a0406db..275d649 100644
--- a/scripts/readme-gen/templates/install_deps.tmpl.rst
+++ b/scripts/readme-gen/templates/install_deps.tmpl.rst
@@ -12,7 +12,7 @@ Install Dependencies
.. _Python Development Environment Setup Guide:
https://cloud.google.com/python/setup
-#. Create a virtualenv. Samples are compatible with Python 2.7 and 3.4+.
+#. Create a virtualenv. Samples are compatible with Python 3.6+.
.. code-block:: bash
From cc9336c8fc0f88e8bfc0468046cf6f64879c862f Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Wed, 18 Aug 2021 12:04:26 -0400
Subject: [PATCH 027/158] tests: revert testing prerelease deps on Python 3.9
(#132)
Consensus from today's meeting is that testing against prereleases needs
to happen outside the normal presubmit path.
Reverts only part of PR #129.
---
testing/constraints-3.9.txt | 2 --
1 file changed, 2 deletions(-)
diff --git a/testing/constraints-3.9.txt b/testing/constraints-3.9.txt
index 6d34489..e69de29 100644
--- a/testing/constraints-3.9.txt
+++ b/testing/constraints-3.9.txt
@@ -1,2 +0,0 @@
-# Allow prerelease requirements
---pre
From aead67a1244306d518b8ab150e143e5a29e1ab6f Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Wed, 18 Aug 2021 17:57:32 -0400
Subject: [PATCH 028/158] chore: trigger 2.0.0 release (#128)
Release-As: 2.0.0
Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>
From 120575810226a0ca0663e62ebb78a20fcd595cb8 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 18 Aug 2021 16:06:48 -0600
Subject: [PATCH 029/158] chore: release 2.0.0 (#133)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
:robot: I have created a release \*beep\* \*boop\*
---
## [2.0.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0-b1...v2.0.0) (2021-08-18)
### â BREAKING CHANGES
* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
### Miscellaneous Chores
* trigger 2.0.0 release ([#128](https://www.github.com/googleapis/python-cloud-core/issues/128)) ([aead67a](https://www.github.com/googleapis/python-cloud-core/commit/aead67a1244306d518b8ab150e143e5a29e1ab6f))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
---
CHANGELOG.md | 11 +++++++++++
google/cloud/version.py | 2 +-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 145b881..16606b4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,17 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.0.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0-b1...v2.0.0) (2021-08-18)
+
+### â BREAKING CHANGES
+
+* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
+
+
+### Miscellaneous Chores
+
+* trigger 2.0.0 release ([#128](https://www.github.com/googleapis/python-cloud-core/issues/128)) ([aead67a](https://www.github.com/googleapis/python-cloud-core/commit/aead67a1244306d518b8ab150e143e5a29e1ab6f))
+
## [2.0.0b1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.2...v2.0.0b1) (2021-08-02)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 5fa7744..a12de3d 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.0.0b1"
+__version__ = "2.0.0"
From 64c4cc6e63f3ab6ea05dfcdc402a4b3d90431dde Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Thu, 26 Aug 2021 14:45:21 -0400
Subject: [PATCH 030/158] chore: migrate default branch to main (#136)
---
.kokoro/build.sh | 2 +-
.kokoro/test-samples-impl.sh | 2 +-
CONTRIBUTING.rst | 12 +++++-----
docs/conf.py | 10 ++++----
owlbot.py | 44 ++++++++++++++++++++++++++++++++++++
5 files changed, 57 insertions(+), 13 deletions(-)
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index e45c25d..16be3c8 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -41,7 +41,7 @@ python3 -m pip install --upgrade --quiet nox
python3 -m nox --version
# If this is a continuous build, send the test log to the FlakyBot.
-# See https://github.com/googleapis/repo-automation-bots/tree/master/packages/flakybot.
+# See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"continuous"* ]]; then
cleanup() {
chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 311a8d5..8a324c9 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -80,7 +80,7 @@ for file in samples/**/requirements.txt; do
EXIT=$?
# If this is a periodic build, send the test log to the FlakyBot.
- # See https://github.com/googleapis/repo-automation-bots/tree/master/packages/flakybot.
+ # See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
$KOKORO_GFILE_DIR/linux_amd64/flakybot
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index e4542d4..948ec43 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -50,9 +50,9 @@ You'll have to create a development environment using a Git checkout:
# Configure remotes such that you can pull changes from the googleapis/python-cloud-core
# repository into your local repository.
$ git remote add upstream git@github.com:googleapis/python-cloud-core.git
- # fetch and merge changes from upstream into master
+ # fetch and merge changes from upstream into main
$ git fetch upstream
- $ git merge upstream/master
+ $ git merge upstream/main
Now your local repo is set up such that you will push changes to your GitHub
repo, from which you can submit a pull request.
@@ -110,12 +110,12 @@ Coding Style
variables::
export GOOGLE_CLOUD_TESTING_REMOTE="upstream"
- export GOOGLE_CLOUD_TESTING_BRANCH="master"
+ export GOOGLE_CLOUD_TESTING_BRANCH="main"
By doing this, you are specifying the location of the most up-to-date
version of ``python-cloud-core``. The the suggested remote name ``upstream``
should point to the official ``googleapis`` checkout and the
- the branch should be the main branch on that remote (``master``).
+ the branch should be the main branch on that remote (``main``).
- This repository contains configuration for the
`pre-commit `__ tool, which automates checking
@@ -209,7 +209,7 @@ The `description on PyPI`_ for the project comes directly from the
``README``. Due to the reStructuredText (``rst``) parser used by
PyPI, relative links which will work on GitHub (e.g. ``CONTRIBUTING.rst``
instead of
-``https://github.com/googleapis/python-cloud-core/blob/master/CONTRIBUTING.rst``)
+``https://github.com/googleapis/python-cloud-core/blob/main/CONTRIBUTING.rst``)
may cause problems creating links or rendering the description.
.. _description on PyPI: https://pypi.org/project/google-cloud-core
@@ -234,7 +234,7 @@ We support:
Supported versions can be found in our ``noxfile.py`` `config`_.
-.. _config: https://github.com/googleapis/python-cloud-core/blob/master/noxfile.py
+.. _config: https://github.com/googleapis/python-cloud-core/blob/main/noxfile.py
We also explicitly decided to support Python 3 beginning with version 3.6.
diff --git a/docs/conf.py b/docs/conf.py
index 218cd72..67ceda5 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -76,8 +76,8 @@
# The encoding of source files.
# source_encoding = 'utf-8-sig'
-# The master toctree document.
-master_doc = "index"
+# The root toctree document.
+root_doc = "index"
# General information about the project.
project = "google-cloud-core"
@@ -280,7 +280,7 @@
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(
- master_doc,
+ root_doc,
"google-cloud-core.tex",
"google-cloud-core Documentation",
author,
@@ -314,7 +314,7 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (master_doc, "google-cloud-core", "google-cloud-core Documentation", [author], 1,)
+ (root_doc, "google-cloud-core", "google-cloud-core Documentation", [author], 1,)
]
# If true, show URL addresses after external links.
@@ -328,7 +328,7 @@
# dir menu entry, description, category)
texinfo_documents = [
(
- master_doc,
+ root_doc,
"google-cloud-core",
"google-cloud-core Documentation",
author,
diff --git a/owlbot.py b/owlbot.py
index 5b0f6c3..0925a73 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -34,4 +34,48 @@
],
)
+# Remove the replacements below once https://github.com/googleapis/synthtool/pull/1188 is merged
+
+# Update googleapis/repo-automation-bots repo to main in .kokoro/*.sh files
+s.replace(
+ ".kokoro/*.sh", "repo-automation-bots/tree/master", "repo-automation-bots/tree/main"
+)
+
+# Customize CONTRIBUTING.rst to replace master with main
+s.replace(
+ "CONTRIBUTING.rst",
+ "fetch and merge changes from upstream into master",
+ "fetch and merge changes from upstream into main",
+)
+
+s.replace(
+ "CONTRIBUTING.rst", "git merge upstream/master", "git merge upstream/main",
+)
+
+s.replace(
+ "CONTRIBUTING.rst",
+ """export GOOGLE_CLOUD_TESTING_BRANCH=\"master\"""",
+ """export GOOGLE_CLOUD_TESTING_BRANCH=\"main\"""",
+)
+
+s.replace(
+ "CONTRIBUTING.rst", r"remote \(``master``\)", "remote (``main``)",
+)
+
+s.replace(
+ "CONTRIBUTING.rst", "blob/master/CONTRIBUTING.rst", "blob/main/CONTRIBUTING.rst",
+)
+
+s.replace(
+ "CONTRIBUTING.rst", "blob/master/noxfile.py", "blob/main/noxfile.py",
+)
+
+s.replace(
+ "docs/conf.py", "master_doc", "root_doc",
+)
+
+s.replace(
+ "docs/conf.py", "# The master toctree document.", "# The root toctree document.",
+)
+
s.shell.run(["nox", "-s", "blacken"], hide_output=False)
From 08bed1d571976a4284370b3458d4825a97aa7660 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 30 Aug 2021 15:26:31 +0000
Subject: [PATCH 031/158] chore(python): disable dependency dashboard (#137)
---
.github/.OwlBot.lock.yaml | 2 +-
renovate.json | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index a9fcd07..b75186c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:9743664022bd63a8084be67f144898314c7ca12f0a03e422ac17c733c129d803
+ digest: sha256:d6761eec279244e57fe9d21f8343381a01d3632c034811a72f68b83119e58c69
diff --git a/renovate.json b/renovate.json
index c048955..9fa8816 100644
--- a/renovate.json
+++ b/renovate.json
@@ -1,6 +1,8 @@
{
"extends": [
- "config:base", ":preserveSemverRanges"
+ "config:base",
+ ":preserveSemverRanges",
+ ":disableDependencyDashboard"
],
"ignorePaths": [".pre-commit-config.yaml"],
"pip_requirements": {
From c3463dfaa1d74c7bc3693d2bfd2ad8d13c363e9f Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 1 Sep 2021 15:42:43 +0000
Subject: [PATCH 032/158] chore(python): group renovate prs (#138)
---
.github/.OwlBot.lock.yaml | 2 +-
renovate.json | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index b75186c..ef3cb34 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:d6761eec279244e57fe9d21f8343381a01d3632c034811a72f68b83119e58c69
+ digest: sha256:1456ea2b3b523ccff5e13030acef56d1de28f21249c62aa0f196265880338fa7
diff --git a/renovate.json b/renovate.json
index 9fa8816..c21036d 100644
--- a/renovate.json
+++ b/renovate.json
@@ -1,6 +1,7 @@
{
"extends": [
"config:base",
+ "group:all",
":preserveSemverRanges",
":disableDependencyDashboard"
],
From ee4b5d00194962743121fe6e0c50ab255303e609 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 2 Sep 2021 17:07:55 -0600
Subject: [PATCH 033/158] chore(python): rename default branch to main (#139)
Source-Link: https://github.com/googleapis/synthtool/commit/5c0fa62eea9c33ebe61e582424b659eb264e1ba4
Post-Processor: gcr.io/repo-automation-bots/owlbot-python:latest@sha256:0ffe3bdd6c7159692df5f7744da74e5ef19966288a6bf76023e8e04e0c424d7d
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
CONTRIBUTING.rst | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ef3cb34..c07f148 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:1456ea2b3b523ccff5e13030acef56d1de28f21249c62aa0f196265880338fa7
+ digest: sha256:0ffe3bdd6c7159692df5f7744da74e5ef19966288a6bf76023e8e04e0c424d7d
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 948ec43..beac0ba 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -113,9 +113,9 @@ Coding Style
export GOOGLE_CLOUD_TESTING_BRANCH="main"
By doing this, you are specifying the location of the most up-to-date
- version of ``python-cloud-core``. The the suggested remote name ``upstream``
- should point to the official ``googleapis`` checkout and the
- the branch should be the main branch on that remote (``main``).
+ version of ``python-cloud-core``. The
+ remote name ``upstream`` should point to the official ``googleapis``
+ checkout and the branch should be the default branch on that remote (``main``).
- This repository contains configuration for the
`pre-commit `__ tool, which automates checking
From f210cf0a6ed5894a1d28f2e89dc4f9742514c36b Mon Sep 17 00:00:00 2001
From: Jeffrey Rennie
Date: Tue, 21 Sep 2021 12:38:11 -0700
Subject: [PATCH 034/158] chore: relocate owl bot post processor (#141)
chore: relocate owl bot post processor
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/.OwlBot.yaml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index c07f148..2567653 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
- image: gcr.io/repo-automation-bots/owlbot-python:latest
- digest: sha256:0ffe3bdd6c7159692df5f7744da74e5ef19966288a6bf76023e8e04e0c424d7d
+ image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
+ digest: sha256:87eee22d276554e4e52863ec9b1cb6a7245815dfae20439712bf644348215a5a
diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml
index 4ab7b6a..ecb6626 100644
--- a/.github/.OwlBot.yaml
+++ b/.github/.OwlBot.yaml
@@ -13,7 +13,7 @@
# limitations under the License.
docker:
- image: gcr.io/repo-automation-bots/owlbot-python:latest
+ image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
begin-after-commit-hash: 513beb9718c83468c65ed4b1b0f23bb435a7260a
From f8baf89308c338b9da8e568e750188f0b6378805 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Mon, 27 Sep 2021 10:41:59 -0400
Subject: [PATCH 035/158] chore: scrub 'master' -> 'main' fossils from owlbot
(#142)
---
owlbot.py | 44 --------------------------------------------
1 file changed, 44 deletions(-)
diff --git a/owlbot.py b/owlbot.py
index 0925a73..5b0f6c3 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -34,48 +34,4 @@
],
)
-# Remove the replacements below once https://github.com/googleapis/synthtool/pull/1188 is merged
-
-# Update googleapis/repo-automation-bots repo to main in .kokoro/*.sh files
-s.replace(
- ".kokoro/*.sh", "repo-automation-bots/tree/master", "repo-automation-bots/tree/main"
-)
-
-# Customize CONTRIBUTING.rst to replace master with main
-s.replace(
- "CONTRIBUTING.rst",
- "fetch and merge changes from upstream into master",
- "fetch and merge changes from upstream into main",
-)
-
-s.replace(
- "CONTRIBUTING.rst", "git merge upstream/master", "git merge upstream/main",
-)
-
-s.replace(
- "CONTRIBUTING.rst",
- """export GOOGLE_CLOUD_TESTING_BRANCH=\"master\"""",
- """export GOOGLE_CLOUD_TESTING_BRANCH=\"main\"""",
-)
-
-s.replace(
- "CONTRIBUTING.rst", r"remote \(``master``\)", "remote (``main``)",
-)
-
-s.replace(
- "CONTRIBUTING.rst", "blob/master/CONTRIBUTING.rst", "blob/main/CONTRIBUTING.rst",
-)
-
-s.replace(
- "CONTRIBUTING.rst", "blob/master/noxfile.py", "blob/main/noxfile.py",
-)
-
-s.replace(
- "docs/conf.py", "master_doc", "root_doc",
-)
-
-s.replace(
- "docs/conf.py", "# The master toctree document.", "# The root toctree document.",
-)
-
s.shell.run(["nox", "-s", "blacken"], hide_output=False)
From d7bc28bbfa87f53e85d5fd6dfe042a8b836d608c Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 4 Oct 2021 10:56:25 -0400
Subject: [PATCH 036/158] chore: add default_version and codeowner_team to
.repo-metadata.json (#143)
---
.repo-metadata.json | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/.repo-metadata.json b/.repo-metadata.json
index 2323671..fa0cc40 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -1,10 +1,12 @@
{
- "name": "google-cloud-core",
- "name_pretty": "Google API client core library",
- "client_documentation": "https://googleapis.dev/python/google-cloud-core/latest",
- "release_level": "ga",
- "language": "python",
- "library_type": "CORE",
- "repo": "googleapis/python-cloud-core",
- "distribution_name": "google-cloud-core"
-}
\ No newline at end of file
+ "name": "google-cloud-core",
+ "name_pretty": "Google API client core library",
+ "client_documentation": "https://googleapis.dev/python/google-cloud-core/latest",
+ "release_level": "ga",
+ "language": "python",
+ "library_type": "CORE",
+ "repo": "googleapis/python-cloud-core",
+ "distribution_name": "google-cloud-core",
+ "default_version": "",
+ "codeowner_team": ""
+}
From 2bfb1b86b6b4e1744122ccdd39796e184817e5c8 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 5 Oct 2021 19:28:13 +0000
Subject: [PATCH 037/158] build: use trampoline_v2 for python samples and allow
custom dockerfile (#144)
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/samples/lint/common.cfg | 2 +-
.kokoro/samples/python3.6/common.cfg | 2 +-
.kokoro/samples/python3.6/periodic.cfg | 2 +-
.kokoro/samples/python3.7/common.cfg | 2 +-
.kokoro/samples/python3.7/periodic.cfg | 2 +-
.kokoro/samples/python3.8/common.cfg | 2 +-
.kokoro/samples/python3.8/periodic.cfg | 2 +-
.kokoro/samples/python3.9/common.cfg | 2 +-
.kokoro/samples/python3.9/periodic.cfg | 2 +-
.kokoro/test-samples-against-head.sh | 2 --
.kokoro/test-samples.sh | 2 --
.trampolinerc | 17 ++++++++++++++---
13 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 2567653..ee94722 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:87eee22d276554e4e52863ec9b1cb6a7245815dfae20439712bf644348215a5a
+ digest: sha256:6e7328583be8edd3ba8f35311c76a1ecbc823010279ccb6ab46b7a76e25eafcc
diff --git a/.kokoro/samples/lint/common.cfg b/.kokoro/samples/lint/common.cfg
index cc5afe0..a0844fb 100644
--- a/.kokoro/samples/lint/common.cfg
+++ b/.kokoro/samples/lint/common.cfg
@@ -31,4 +31,4 @@ gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.6/common.cfg b/.kokoro/samples/python3.6/common.cfg
index c6d4e55..276a53f 100644
--- a/.kokoro/samples/python3.6/common.cfg
+++ b/.kokoro/samples/python3.6/common.cfg
@@ -37,4 +37,4 @@ gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.6/periodic.cfg b/.kokoro/samples/python3.6/periodic.cfg
index 50fec96..71cd1e5 100644
--- a/.kokoro/samples/python3.6/periodic.cfg
+++ b/.kokoro/samples/python3.6/periodic.cfg
@@ -3,4 +3,4 @@
env_vars: {
key: "INSTALL_LIBRARY_FROM_SOURCE"
value: "False"
-}
\ No newline at end of file
+}
diff --git a/.kokoro/samples/python3.7/common.cfg b/.kokoro/samples/python3.7/common.cfg
index 309b995..c73dd04 100644
--- a/.kokoro/samples/python3.7/common.cfg
+++ b/.kokoro/samples/python3.7/common.cfg
@@ -37,4 +37,4 @@ gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.7/periodic.cfg b/.kokoro/samples/python3.7/periodic.cfg
index 50fec96..71cd1e5 100644
--- a/.kokoro/samples/python3.7/periodic.cfg
+++ b/.kokoro/samples/python3.7/periodic.cfg
@@ -3,4 +3,4 @@
env_vars: {
key: "INSTALL_LIBRARY_FROM_SOURCE"
value: "False"
-}
\ No newline at end of file
+}
diff --git a/.kokoro/samples/python3.8/common.cfg b/.kokoro/samples/python3.8/common.cfg
index acb54fe..dc2327d 100644
--- a/.kokoro/samples/python3.8/common.cfg
+++ b/.kokoro/samples/python3.8/common.cfg
@@ -37,4 +37,4 @@ gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.8/periodic.cfg b/.kokoro/samples/python3.8/periodic.cfg
index 50fec96..71cd1e5 100644
--- a/.kokoro/samples/python3.8/periodic.cfg
+++ b/.kokoro/samples/python3.8/periodic.cfg
@@ -3,4 +3,4 @@
env_vars: {
key: "INSTALL_LIBRARY_FROM_SOURCE"
value: "False"
-}
\ No newline at end of file
+}
diff --git a/.kokoro/samples/python3.9/common.cfg b/.kokoro/samples/python3.9/common.cfg
index a024f54..34cfc60 100644
--- a/.kokoro/samples/python3.9/common.cfg
+++ b/.kokoro/samples/python3.9/common.cfg
@@ -37,4 +37,4 @@ gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
\ No newline at end of file
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/periodic.cfg b/.kokoro/samples/python3.9/periodic.cfg
index 50fec96..71cd1e5 100644
--- a/.kokoro/samples/python3.9/periodic.cfg
+++ b/.kokoro/samples/python3.9/periodic.cfg
@@ -3,4 +3,4 @@
env_vars: {
key: "INSTALL_LIBRARY_FROM_SOURCE"
value: "False"
-}
\ No newline at end of file
+}
diff --git a/.kokoro/test-samples-against-head.sh b/.kokoro/test-samples-against-head.sh
index 33a24b0..ba3a707 100755
--- a/.kokoro/test-samples-against-head.sh
+++ b/.kokoro/test-samples-against-head.sh
@@ -23,6 +23,4 @@ set -eo pipefail
# Enables `**` to include files nested inside sub-folders
shopt -s globstar
-cd github/python-cloud-core
-
exec .kokoro/test-samples-impl.sh
diff --git a/.kokoro/test-samples.sh b/.kokoro/test-samples.sh
index 6c3dde5..11c042d 100755
--- a/.kokoro/test-samples.sh
+++ b/.kokoro/test-samples.sh
@@ -24,8 +24,6 @@ set -eo pipefail
# Enables `**` to include files nested inside sub-folders
shopt -s globstar
-cd github/python-cloud-core
-
# Run periodic samples tests at latest release
if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
# preserving the test runner implementation.
diff --git a/.trampolinerc b/.trampolinerc
index 383b6ec..0eee72a 100644
--- a/.trampolinerc
+++ b/.trampolinerc
@@ -16,15 +16,26 @@
# Add required env vars here.
required_envvars+=(
- "STAGING_BUCKET"
- "V2_STAGING_BUCKET"
)
# Add env vars which are passed down into the container here.
pass_down_envvars+=(
+ "NOX_SESSION"
+ ###############
+ # Docs builds
+ ###############
"STAGING_BUCKET"
"V2_STAGING_BUCKET"
- "NOX_SESSION"
+ ##################
+ # Samples builds
+ ##################
+ "INSTALL_LIBRARY_FROM_SOURCE"
+ "RUN_TESTS_SESSION"
+ "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ # Target directories.
+ "RUN_TESTS_DIRS"
+ # The nox session to run.
+ "RUN_TESTS_SESSION"
)
# Prevent unintentional override on the default image.
From c9370b9598ae337abf1d9f9c02fdc5390ca83ff7 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Tue, 5 Oct 2021 16:55:02 -0400
Subject: [PATCH 038/158] feat: add support for Python 3.10 (#145)
---
CONTRIBUTING.rst | 6 ++++--
noxfile.py | 2 +-
owlbot.py | 6 +++++-
setup.py | 1 +
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index beac0ba..73c2ae2 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.6, 3.7, 3.8 and 3.9 on both UNIX and Windows.
+ 3.6, 3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests.
- To run a single unit test::
- $ nox -s unit-3.9 -- -k
+ $ nox -s unit-3.10 -- -k
.. note::
@@ -225,11 +225,13 @@ We support:
- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
+- `Python 3.10`_
.. _Python 3.6: https://docs.python.org/3.6/
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
+.. _Python 3.10: https://docs.python.org/3.10/
Supported versions can be found in our ``noxfile.py`` `config`_.
diff --git a/noxfile.py b/noxfile.py
index fbe1359..c29d0f3 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -78,7 +78,7 @@ def default(session):
)
-@nox.session(python=["3.6", "3.7", "3.8", "3.9"])
+@nox.session(python=["3.6", "3.7", "3.8", "3.9", "3.10"])
def unit(session):
"""Default unit test session."""
default(session)
diff --git a/owlbot.py b/owlbot.py
index 5b0f6c3..b24dd44 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -22,7 +22,11 @@
# ----------------------------------------------------------------------------
# Add templated files
# ----------------------------------------------------------------------------
-templated_files = common.py_library(microgenerator=True, cov_level=100)
+templated_files = common.py_library(
+ microgenerator=True,
+ cov_level=100,
+ unit_test_python_versions=["3.6", "3.7", "3.8", "3.9", "3.10"],
+)
s.move(
templated_files,
excludes=[
diff --git a/setup.py b/setup.py
index 78457ca..750c467 100644
--- a/setup.py
+++ b/setup.py
@@ -78,6 +78,7 @@
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
"Operating System :: OS Independent",
"Topic :: Internet",
],
From 1afc7ac96bb16b320099fb324cd5af124e33724e Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 5 Oct 2021 17:08:35 -0400
Subject: [PATCH 039/158] chore: release 2.1.0 (#146)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 16606b4..2bd179a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.1.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0...v2.1.0) (2021-10-05)
+
+
+### Features
+
+* add support for Python 3.10 ([#145](https://www.github.com/googleapis/python-cloud-core/issues/145)) ([c9370b9](https://www.github.com/googleapis/python-cloud-core/commit/c9370b9598ae337abf1d9f9c02fdc5390ca83ff7))
+
## [2.0.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0-b1...v2.0.0) (2021-08-18)
### â BREAKING CHANGES
diff --git a/google/cloud/version.py b/google/cloud/version.py
index a12de3d..8b5d332 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.0.0"
+__version__ = "2.1.0"
From d9ee877980fee21a789c22b0a7a5d903d15f7b60 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 8 Oct 2021 17:16:35 +0000
Subject: [PATCH 040/158] chore(python): Add kokoro configs for python 3.10
samples testing (#147)
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/samples/python3.10/common.cfg | 40 ++++++++++++++++++++
.kokoro/samples/python3.10/continuous.cfg | 6 +++
.kokoro/samples/python3.10/periodic-head.cfg | 11 ++++++
.kokoro/samples/python3.10/periodic.cfg | 6 +++
.kokoro/samples/python3.10/presubmit.cfg | 6 +++
6 files changed, 70 insertions(+), 1 deletion(-)
create mode 100644 .kokoro/samples/python3.10/common.cfg
create mode 100644 .kokoro/samples/python3.10/continuous.cfg
create mode 100644 .kokoro/samples/python3.10/periodic-head.cfg
create mode 100644 .kokoro/samples/python3.10/periodic.cfg
create mode 100644 .kokoro/samples/python3.10/presubmit.cfg
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ee94722..7d98291 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:6e7328583be8edd3ba8f35311c76a1ecbc823010279ccb6ab46b7a76e25eafcc
+ digest: sha256:58f73ba196b5414782605236dd0712a73541b44ff2ff4d3a36ec41092dd6fa5b
diff --git a/.kokoro/samples/python3.10/common.cfg b/.kokoro/samples/python3.10/common.cfg
new file mode 100644
index 0000000..0bce697
--- /dev/null
+++ b/.kokoro/samples/python3.10/common.cfg
@@ -0,0 +1,40 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Build logs will be here
+action {
+ define_artifacts {
+ regex: "**/*sponge_log.xml"
+ }
+}
+
+# Specify which tests to run
+env_vars: {
+ key: "RUN_TESTS_SESSION"
+ value: "py-3.10"
+}
+
+# Declare build specific Cloud project.
+env_vars: {
+ key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ value: "python-docs-samples-tests-310"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples.sh"
+}
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
+}
+
+# Download secrets for samples
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
+
+# Download trampoline resources.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Use the trampoline script to run in docker.
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.10/continuous.cfg b/.kokoro/samples/python3.10/continuous.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.10/continuous.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.10/periodic-head.cfg b/.kokoro/samples/python3.10/periodic-head.cfg
new file mode 100644
index 0000000..f9e9e94
--- /dev/null
+++ b/.kokoro/samples/python3.10/periodic-head.cfg
@@ -0,0 +1,11 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
+}
diff --git a/.kokoro/samples/python3.10/periodic.cfg b/.kokoro/samples/python3.10/periodic.cfg
new file mode 100644
index 0000000..71cd1e5
--- /dev/null
+++ b/.kokoro/samples/python3.10/periodic.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "False"
+}
diff --git a/.kokoro/samples/python3.10/presubmit.cfg b/.kokoro/samples/python3.10/presubmit.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.10/presubmit.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
From 35d78d018977fa33f425368df4b3c5f8ef254579 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 25 Oct 2021 16:58:01 -0400
Subject: [PATCH 041/158] chore(python): push cloud library docs to staging
bucket for Cloud RAD (#150)
Source-Link: https://github.com/googleapis/synthtool/commit/7fd61f8efae782a7cfcecc599faf52f9737fe584
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:4ee57a76a176ede9087c14330c625a71553cf9c72828b2c0ca12f5338171ba60
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/docs/common.cfg | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 7d98291..108063d 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:58f73ba196b5414782605236dd0712a73541b44ff2ff4d3a36ec41092dd6fa5b
+ digest: sha256:4ee57a76a176ede9087c14330c625a71553cf9c72828b2c0ca12f5338171ba60
diff --git a/.kokoro/docs/common.cfg b/.kokoro/docs/common.cfg
index 10be942..ff5ab7e 100644
--- a/.kokoro/docs/common.cfg
+++ b/.kokoro/docs/common.cfg
@@ -30,6 +30,7 @@ env_vars: {
env_vars: {
key: "V2_STAGING_BUCKET"
+ # Push google cloud library docs to the Cloud RAD bucket `docs-staging-v2`
value: "docs-staging-v2"
}
From f20ef60abaff13520d2e7b9719741746bd0d1c7b Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Tue, 9 Nov 2021 10:46:21 -0500
Subject: [PATCH 042/158] fix: add mypy checking + 'py.typed' files (#149)
* ci: add mypy checking
* chore: add py.typed file.
* chore: use DEFAULT_PYTHON_VERSION to run mypy
* fix: add typing for 'Client.SCOPE'
* fix: cannot have 'py.typed' in the namespace package dir
* chore: make top-level modules in 'google/core' into packages
FBO typing, which interprets 'py.typed' file as always-inherited in subdirs.
* chore: back out converson of 'version.py' to a package
Our 'release-please' tooling won't find it there, and nobody is likely
to a) import the module, and then b) choke on its lack of typing.
* chore: fix thinko
---
.coveragerc | 4 ++--
google/__init__.py | 2 +-
google/cloud/__init__.py | 2 +-
google/cloud/{_helpers.py => _helpers/__init__.py} | 2 ++
google/cloud/_helpers/py.typed | 2 ++
google/cloud/{_http.py => _http/__init__.py} | 0
google/cloud/_http/py.typed | 2 ++
google/cloud/{_testing.py => _testing/__init__.py} | 0
google/cloud/_testing/py.typed | 2 ++
google/cloud/{client.py => client/__init__.py} | 4 +++-
google/cloud/client/py.typed | 2 ++
.../__init__.py} | 0
google/cloud/environment_vars/py.typed | 2 ++
google/cloud/{exceptions.py => exceptions/__init__.py} | 0
google/cloud/exceptions/py.typed | 2 ++
google/cloud/{obsolete.py => obsolete/__init__.py} | 0
google/cloud/obsolete/py.typed | 2 ++
google/cloud/{operation.py => operation/__init__.py} | 4 +++-
google/cloud/operation/py.typed | 2 ++
mypy.ini | 7 +++++++
noxfile.py | 10 ++++++++++
21 files changed, 45 insertions(+), 6 deletions(-)
rename google/cloud/{_helpers.py => _helpers/__init__.py} (99%)
create mode 100644 google/cloud/_helpers/py.typed
rename google/cloud/{_http.py => _http/__init__.py} (100%)
create mode 100644 google/cloud/_http/py.typed
rename google/cloud/{_testing.py => _testing/__init__.py} (100%)
create mode 100644 google/cloud/_testing/py.typed
rename google/cloud/{client.py => client/__init__.py} (99%)
create mode 100644 google/cloud/client/py.typed
rename google/cloud/{environment_vars.py => environment_vars/__init__.py} (100%)
create mode 100644 google/cloud/environment_vars/py.typed
rename google/cloud/{exceptions.py => exceptions/__init__.py} (100%)
create mode 100644 google/cloud/exceptions/py.typed
rename google/cloud/{obsolete.py => obsolete/__init__.py} (100%)
create mode 100644 google/cloud/obsolete/py.typed
rename google/cloud/{operation.py => operation/__init__.py} (99%)
create mode 100644 google/cloud/operation/py.typed
create mode 100644 mypy.ini
diff --git a/.coveragerc b/.coveragerc
index ce75f60..c6430d3 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -3,9 +3,9 @@ branch = True
[report]
omit =
- google/cloud/_testing.py
google/cloud/__init__.py
- google/cloud/environment_vars.py
+ google/cloud/_testing/__init__.py
+ google/cloud/environment_vars/__init__.py
fail_under = 100
show_missing = True
exclude_lines =
diff --git a/google/__init__.py b/google/__init__.py
index 0d0a4c3..70a7bd9 100644
--- a/google/__init__.py
+++ b/google/__init__.py
@@ -21,4 +21,4 @@
except ImportError:
import pkgutil
- __path__ = pkgutil.extend_path(__path__, __name__)
+ __path__ = pkgutil.extend_path(__path__, __name__) # type: ignore
diff --git a/google/cloud/__init__.py b/google/cloud/__init__.py
index f281ec0..ef78099 100644
--- a/google/cloud/__init__.py
+++ b/google/cloud/__init__.py
@@ -21,4 +21,4 @@
except ImportError:
import pkgutil
- __path__ = pkgutil.extend_path(__path__, __name__)
+ __path__ = pkgutil.extend_path(__path__, __name__) # type: ignore
diff --git a/google/cloud/_helpers.py b/google/cloud/_helpers/__init__.py
similarity index 99%
rename from google/cloud/_helpers.py
rename to google/cloud/_helpers/__init__.py
index d8f2851..291f587 100644
--- a/google/cloud/_helpers.py
+++ b/google/cloud/_helpers/__init__.py
@@ -25,6 +25,7 @@
import os
import re
from threading import local as Local
+from typing import Union
import google.auth
import google.auth.transport.requests
@@ -62,6 +63,7 @@
)
# NOTE: Catching this ImportError is a workaround for GAE not supporting the
# "pwd" module which is imported lazily when "expanduser" is called.
+_USER_ROOT: Union[str, None]
try:
_USER_ROOT = os.path.expanduser("~")
except ImportError: # pragma: NO COVER
diff --git a/google/cloud/_helpers/py.typed b/google/cloud/_helpers/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/_helpers/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/_http.py b/google/cloud/_http/__init__.py
similarity index 100%
rename from google/cloud/_http.py
rename to google/cloud/_http/__init__.py
diff --git a/google/cloud/_http/py.typed b/google/cloud/_http/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/_http/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/_testing.py b/google/cloud/_testing/__init__.py
similarity index 100%
rename from google/cloud/_testing.py
rename to google/cloud/_testing/__init__.py
diff --git a/google/cloud/_testing/py.typed b/google/cloud/_testing/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/_testing/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/client.py b/google/cloud/client/__init__.py
similarity index 99%
rename from google/cloud/client.py
rename to google/cloud/client/__init__.py
index e058c2d..b3ca4b8 100644
--- a/google/cloud/client.py
+++ b/google/cloud/client/__init__.py
@@ -18,6 +18,8 @@
import json
import os
from pickle import PicklingError
+from typing import Tuple
+from typing import Union
import google.api_core.client_options
import google.api_core.exceptions
@@ -142,7 +144,7 @@ class Client(_ClientFactoryMixin):
to acquire default credentials.
"""
- SCOPE = None
+ SCOPE: Union[Tuple[str], None] = None
"""The scopes required for authenticating with a service.
Needs to be set by subclasses.
diff --git a/google/cloud/client/py.typed b/google/cloud/client/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/client/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/environment_vars.py b/google/cloud/environment_vars/__init__.py
similarity index 100%
rename from google/cloud/environment_vars.py
rename to google/cloud/environment_vars/__init__.py
diff --git a/google/cloud/environment_vars/py.typed b/google/cloud/environment_vars/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/environment_vars/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/exceptions.py b/google/cloud/exceptions/__init__.py
similarity index 100%
rename from google/cloud/exceptions.py
rename to google/cloud/exceptions/__init__.py
diff --git a/google/cloud/exceptions/py.typed b/google/cloud/exceptions/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/exceptions/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/obsolete.py b/google/cloud/obsolete/__init__.py
similarity index 100%
rename from google/cloud/obsolete.py
rename to google/cloud/obsolete/__init__.py
diff --git a/google/cloud/obsolete/py.typed b/google/cloud/obsolete/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/obsolete/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/google/cloud/operation.py b/google/cloud/operation/__init__.py
similarity index 99%
rename from google/cloud/operation.py
rename to google/cloud/operation/__init__.py
index 28ac8cf..4fd1f27 100644
--- a/google/cloud/operation.py
+++ b/google/cloud/operation/__init__.py
@@ -14,13 +14,15 @@
"""Wrap long-running operations returned from Google Cloud APIs."""
+from typing import Dict
+
from google.longrunning import operations_pb2
from google.protobuf import json_format
_GOOGLE_APIS_PREFIX = "type.googleapis.com"
-_TYPE_URL_MAP = {}
+_TYPE_URL_MAP: Dict[str, type] = {}
def _compute_type_url(klass, prefix=_GOOGLE_APIS_PREFIX):
diff --git a/google/cloud/operation/py.typed b/google/cloud/operation/py.typed
new file mode 100644
index 0000000..dfc5374
--- /dev/null
+++ b/google/cloud/operation/py.typed
@@ -0,0 +1,2 @@
+# Marker file for PEP 561.
+# This package uses inline types.
diff --git a/mypy.ini b/mypy.ini
new file mode 100644
index 0000000..5663b40
--- /dev/null
+++ b/mypy.ini
@@ -0,0 +1,7 @@
+[mypy]
+python_version = 3.6
+namespace_packages = True
+ignore_missing_imports = True
+
+[mypy-google.protobuf]
+ignore_missing_imports = True
diff --git a/noxfile.py b/noxfile.py
index c29d0f3..8fc781f 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -38,6 +38,16 @@ def lint(session):
session.run("flake8", "google", "tests")
+@nox.session(python=DEFAULT_PYTHON_VERSION)
+def mypy(session):
+ """Run type-checking."""
+ session.install(".", "mypy")
+ session.install(
+ "types-setuptools", "types-requests", "types-mock", "types-protobuf",
+ )
+ session.run("mypy", "google", "tests")
+
+
@nox.session(python=DEFAULT_PYTHON_VERSION)
def blacken(session):
"""Run black.
From a389fb28e05060764aff674f1af6aba1cfd1807e Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Tue, 9 Nov 2021 12:03:28 -0500
Subject: [PATCH 043/158] chore: bump to semver minor (#153)
Release-As: 2.2.0
From debb93af61c4670b0aca1e1230b28ba372127dda Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 9 Nov 2021 12:15:10 -0500
Subject: [PATCH 044/158] chore: release 2.2.0 (#154)
---
CHANGELOG.md | 6 ++++++
google/cloud/version.py | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2bd179a..01e2c7d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.2.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.1.0...v2.2.0) (2021-11-09)
+
+
+### Features
+
+* add mypy checking + 'py.typed' files ([#149](https://www.github.com/googleapis/python-cloud-core/issues/149)) ([f20ef60](https://www.github.com/googleapis/python-cloud-core/commit/f20ef60abaff13520d2e7b9719741746bd0d1c7b))
## [2.1.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0...v2.1.0) (2021-10-05)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 8b5d332..bd0f8e5 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.1.0"
+__version__ = "2.2.0"
From a427681913ab76379e007a8c3ae519b41e8cee62 Mon Sep 17 00:00:00 2001
From: Tim Swast
Date: Wed, 10 Nov 2021 10:03:09 -0600
Subject: [PATCH 045/158] fix: correct Client and Connection type annotations
(#156)
---
google/cloud/_http/__init__.py | 9 +++++----
google/cloud/client/__init__.py | 2 +-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/google/cloud/_http/__init__.py b/google/cloud/_http/__init__.py
index 7c9cbc9..4c3ed96 100644
--- a/google/cloud/_http/__init__.py
+++ b/google/cloud/_http/__init__.py
@@ -19,6 +19,7 @@
import json
import os
import platform
+from typing import Optional
from urllib.parse import urlencode
import warnings
@@ -168,19 +169,19 @@ class JSONConnection(Connection):
must be updated by subclasses.
"""
- API_BASE_URL = None
+ API_BASE_URL: Optional[str] = None
"""The base of the API call URL."""
- API_BASE_MTLS_URL = None
+ API_BASE_MTLS_URL: Optional[str] = None
"""The base of the API call URL for mutual TLS."""
ALLOW_AUTO_SWITCH_TO_MTLS_URL = False
"""Indicates if auto switch to mTLS url is allowed."""
- API_VERSION = None
+ API_VERSION: Optional[str] = None
"""The version of the API, used in building the API call's URL."""
- API_URL_TEMPLATE = None
+ API_URL_TEMPLATE: Optional[str] = None
"""A template for the URL of a particular API call."""
def get_api_base_url_for_mtls(self, api_base_url=None):
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
index b3ca4b8..5bd12f2 100644
--- a/google/cloud/client/__init__.py
+++ b/google/cloud/client/__init__.py
@@ -144,7 +144,7 @@ class Client(_ClientFactoryMixin):
to acquire default credentials.
"""
- SCOPE: Union[Tuple[str], None] = None
+ SCOPE: Union[Tuple[str, ...], None] = None
"""The scopes required for authenticating with a service.
Needs to be set by subclasses.
From a4290ece2cd86d552892fe84c50149a2773e03e4 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 10 Nov 2021 16:10:23 +0000
Subject: [PATCH 046/158] chore: release 2.2.1 (#157)
:robot: I have created a release \*beep\* \*boop\*
---
### [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
### Bug Fixes
* correct Client and Connection type annotations ([#156](https://www.github.com/googleapis/python-cloud-core/issues/156)) ([a427681](https://www.github.com/googleapis/python-cloud-core/commit/a427681913ab76379e007a8c3ae519b41e8cee62))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 01e2c7d..144dfcd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+### [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
+
+
+### Bug Fixes
+
+* correct Client and Connection type annotations ([#156](https://www.github.com/googleapis/python-cloud-core/issues/156)) ([a427681](https://www.github.com/googleapis/python-cloud-core/commit/a427681913ab76379e007a8c3ae519b41e8cee62))
+
## [2.2.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.1.0...v2.2.0) (2021-11-09)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index bd0f8e5..b1be7d8 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.2.0"
+__version__ = "2.2.1"
From 1dba3d1e00e0dffd8c653030d3ef4dcc67390331 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 11 Nov 2021 13:28:51 -0500
Subject: [PATCH 047/158] chore(python): add .github/CODEOWNERS as a templated
file (#158)
Source-Link: https://github.com/googleapis/synthtool/commit/c5026b3217973a8db55db8ee85feee0e9a65e295
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:0e18b9475fbeb12d9ad4302283171edebb6baf2dfca1bd215ee3b34ed79d95d7
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.github/CODEOWNERS | 9 +++++----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 108063d..7519fa3 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:4ee57a76a176ede9087c14330c625a71553cf9c72828b2c0ca12f5338171ba60
+ digest: sha256:0e18b9475fbeb12d9ad4302283171edebb6baf2dfca1bd215ee3b34ed79d95d7
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 30c3973..44cc868 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -3,9 +3,10 @@
#
# For syntax help see:
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax
+# Note: This file is autogenerated. To make changes to the codeowner team, please update .repo-metadata.json.
-# The @googleapis/yoshi-python is the default owner for changes in this repo
-* @googleapis/yoshi-python
+# @googleapis/yoshi-python is the default owner for changes in this repo
+* @googleapis/yoshi-python
-# The python-samples-reviewers team is the default owner for samples changes
-/samples/ @googleapis/python-samples-owners
\ No newline at end of file
+# @googleapis/python-samples-owners is the default owner for samples changes
+/samples/ @googleapis/python-samples-owners
From aabfd6cf555e49f77507cd1a4423c2ed1b3832db Mon Sep 17 00:00:00 2001
From: Tim Swast
Date: Mon, 15 Nov 2021 09:10:12 -0600
Subject: [PATCH 048/158] test: add constraints for google-auth minimum version
(#159)
google-auth is listed as a dependency here: https://github.com/googleapis/python-cloud-core/blob/main/setup.py
But the constraint to test with lowest possible version was missing.
---
testing/constraints-3.6.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt
index 9bd2a7c..bc4f7d2 100644
--- a/testing/constraints-3.6.txt
+++ b/testing/constraints-3.6.txt
@@ -6,4 +6,5 @@
# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
# Then this file should have foo==1.14.0
google-api-core==1.21.0
+google-auth==1.24.0
grpcio==1.8.2
From 45dcc73722846f671cc1434bebdd99d154a8c892 Mon Sep 17 00:00:00 2001
From: Dan Lee <71398022+dandhlee@users.noreply.github.com>
Date: Tue, 16 Nov 2021 03:19:09 -0500
Subject: [PATCH 049/158] chore: update doc links from googleapis.dev to
cloud.google.com (#160)
---
.repo-metadata.json | 2 +-
README.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.repo-metadata.json b/.repo-metadata.json
index fa0cc40..c0ded60 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -1,7 +1,7 @@
{
"name": "google-cloud-core",
"name_pretty": "Google API client core library",
- "client_documentation": "https://googleapis.dev/python/google-cloud-core/latest",
+ "client_documentation": "https://cloud.google.com/python/docs/reference/google-cloud-core/latest",
"release_level": "ga",
"language": "python",
"library_type": "CORE",
diff --git a/README.rst b/README.rst
index f64c3f6..ab2f629 100644
--- a/README.rst
+++ b/README.rst
@@ -14,7 +14,7 @@ common helpers (e.g. base ``Client`` classes) used by all of the
:target: https://pypi.org/project/google-cloud-core/
.. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-core.svg
:target: https://pypi.org/project/google-cloud-core/
-.. _Documentation: https://googleapis.dev/python/google-cloud-core/latest
+.. _Documentation: https://cloud.google.com/python/docs/reference/google-cloud-core/latest
Quick Start
-----------
From 24b7de49943a49e8235f9dbee6b32693deed8c1f Mon Sep 17 00:00:00 2001
From: Takayuki Hirayama
Date: Wed, 17 Nov 2021 01:04:17 +0900
Subject: [PATCH 050/158] fix: correct param type of
_ClientFactoryMixin.from_service_account_info method (#161)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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:
- [x] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/python-cloud-core/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
Fixes #162 đŠ
---
google/cloud/client/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
index 5bd12f2..d77e200 100644
--- a/google/cloud/client/__init__.py
+++ b/google/cloud/client/__init__.py
@@ -55,7 +55,7 @@ class _ClientFactoryMixin(object):
def from_service_account_info(cls, info, *args, **kwargs):
"""Factory to retrieve JSON credentials while creating client.
- :type info: str
+ :type info: dict
:param info:
The JSON object with a private key and other credentials
information (downloaded from the Google APIs console).
From 3799fdb31429fc737b2466c9b838c30268c2e6f1 Mon Sep 17 00:00:00 2001
From: Tres Seaver
Date: Tue, 7 Dec 2021 15:02:30 -0500
Subject: [PATCH 051/158] ci: prototype running lint / mypy / unit tests /
coverage as GH actions (#148)
---
.github/sync-repo-settings.yaml | 18 +++++
.github/workflows/unittest_lint.yml | 111 ++++++++++++++++++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 .github/sync-repo-settings.yaml
create mode 100644 .github/workflows/unittest_lint.yml
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
new file mode 100644
index 0000000..39c7b3f
--- /dev/null
+++ b/.github/sync-repo-settings.yaml
@@ -0,0 +1,18 @@
+# https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings
+# Rules for main branch protection
+branchProtectionRules:
+# Identifies the protection rule pattern. Name of the branch to be protected.
+# Defaults to `main`
+- pattern: main
+ requiresCodeOwnerReviews: true
+ requiresStrictStatusChecks: true
+ requiredStatusCheckContexts:
+ - 'cla/google'
+ # No Kokoro: the following are Github actions
+ - 'lint-mypy'
+ - 'unit-3.6'
+ - 'unit-3.7'
+ - 'unit-3.8'
+ - 'unit-3.9'
+ - 'unit-3.10'
+ - 'cover'
diff --git a/.github/workflows/unittest_lint.yml b/.github/workflows/unittest_lint.yml
new file mode 100644
index 0000000..e48398e
--- /dev/null
+++ b/.github/workflows/unittest_lint.yml
@@ -0,0 +1,111 @@
+name: "Lint / Unit tests / Cover / Mypy"
+
+on:
+ pull_request:
+ branches:
+ - main
+
+
+jobs:
+
+ run-lint-mypy:
+ name: lint-mypy
+ runs-on: ubuntu-latest
+
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.10"
+
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+
+ - name: Run lint
+ run: |
+ nox -s lint
+
+ - name: Run lint_setup_py
+ run: |
+ nox -s lint_setup_py
+
+ - name: Run mypy
+ run: |
+ nox -s mypy
+
+ run-unittests:
+ name: unit-${{ matrix.python }}
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python:
+ - "3.6"
+ - "3.7"
+ - "3.8"
+ - "3.9"
+ - "3.10"
+
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+
+ - name: Run unit tests
+ env:
+ COVERAGE_FILE: .coverage-${{matrix.python }}
+ run: |
+ nox -s unit-${{ matrix.python }}
+
+ - name: Upload coverage results
+ uses: actions/upload-artifact@v2
+ with:
+ name: coverage-artifacts
+ path: .coverage-${{ matrix.python }}
+
+ report-coverage:
+ name: cover
+ runs-on: ubuntu-latest
+ needs:
+ - run-unittests
+
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.10"
+
+ - name: Install coverage
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install coverage
+
+ - name: Download coverage results
+ uses: actions/download-artifact@v2
+ with:
+ name: coverage-artifacts
+ path: .coverage-results/
+
+ - name: Report coverage results
+ run: |
+ coverage combine .coverage-results/.coverage*
+ coverage report --show-missing --fail-under=100
From 346ff32d225094ac047fdcd2b78017ea9e8e6df2 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 6 Jan 2022 09:11:26 -0700
Subject: [PATCH 052/158] chore: use python-samples-reviewers (#167)
Source-Link: https://github.com/googleapis/synthtool/commit/da9308710160980198d85a4bcddac1d6f6f1a5bc
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:899d5d7cc340fa8ef9d8ae1a8cfba362c6898584f779e156f25ee828ba824610
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.github/CODEOWNERS | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 7519fa3..f33299d 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:0e18b9475fbeb12d9ad4302283171edebb6baf2dfca1bd215ee3b34ed79d95d7
+ digest: sha256:899d5d7cc340fa8ef9d8ae1a8cfba362c6898584f779e156f25ee828ba824610
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 44cc868..e446644 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -8,5 +8,5 @@
# @googleapis/yoshi-python is the default owner for changes in this repo
* @googleapis/yoshi-python
-# @googleapis/python-samples-owners is the default owner for samples changes
-/samples/ @googleapis/python-samples-owners
+# @googleapis/python-samples-reviewers is the default owner for samples changes
+/samples/ @googleapis/python-samples-reviewers
From 102edef02e2e8859c4dd96963cff37f10808f9e0 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Fri, 7 Jan 2022 13:53:44 -0500
Subject: [PATCH 053/158] chore: update release_level in repo-metadata.json
(#165)
* chore: update .repo-metadata.json
* remove api_shortname
---
.repo-metadata.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.repo-metadata.json b/.repo-metadata.json
index c0ded60..a2fe751 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -2,7 +2,7 @@
"name": "google-cloud-core",
"name_pretty": "Google API client core library",
"client_documentation": "https://cloud.google.com/python/docs/reference/google-cloud-core/latest",
- "release_level": "ga",
+ "release_level": "stable",
"language": "python",
"library_type": "CORE",
"repo": "googleapis/python-cloud-core",
From d495bb6380cb9fc2818e8c1bd5c27b4532fa690a Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 13 Jan 2022 15:48:22 +0000
Subject: [PATCH 054/158] build: switch to release-please for tagging (#168)
---
.github/.OwlBot.lock.yaml | 2 +-
.github/release-please.yml | 1 +
.github/release-trigger.yml | 1 +
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 .github/release-trigger.yml
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index f33299d..ff5126c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:899d5d7cc340fa8ef9d8ae1a8cfba362c6898584f779e156f25ee828ba824610
+ digest: sha256:dfa9b663b32de8b5b327e32c1da665a80de48876558dd58091d8160c60ad7355
diff --git a/.github/release-please.yml b/.github/release-please.yml
index 4507ad0..466597e 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -1 +1,2 @@
releaseType: python
+handleGHRelease: true
diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml
new file mode 100644
index 0000000..d4ca941
--- /dev/null
+++ b/.github/release-trigger.yml
@@ -0,0 +1 @@
+enabled: true
From f7f3c1b061966a7731ec82ca93ff22440742bc98 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 14 Jan 2022 11:43:22 -0500
Subject: [PATCH 055/158] chore(python): update release.sh to use keystore
(#170)
Source-Link: https://github.com/googleapis/synthtool/commit/69fda12e2994f0b595a397e8bb6e3e9f380524eb
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ae600f36b6bc972b368367b6f83a1d91ec2c82a4a116b383d67d547c56fe6de3
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/release.sh | 2 +-
.kokoro/release/common.cfg | 12 +++++++++++-
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ff5126c..eecb84c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,3 @@
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:dfa9b663b32de8b5b327e32c1da665a80de48876558dd58091d8160c60ad7355
+ digest: sha256:ae600f36b6bc972b368367b6f83a1d91ec2c82a4a116b383d67d547c56fe6de3
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index d8436f4..32ad624 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -26,7 +26,7 @@ python3 -m pip install --upgrade twine wheel setuptools
export PYTHONUNBUFFERED=1
# Move into the package, build the distribution and upload.
-TWINE_PASSWORD=$(cat "${KOKORO_GFILE_DIR}/secret_manager/google-cloud-pypi-token")
+TWINE_PASSWORD=$(cat "${KOKORO_KEYSTORE_DIR}/73713_google-cloud-pypi-token-keystore-1")
cd github/python-cloud-core
python3 setup.py sdist bdist_wheel
twine upload --username __token__ --password "${TWINE_PASSWORD}" dist/*
diff --git a/.kokoro/release/common.cfg b/.kokoro/release/common.cfg
index d85ecd7..8e9adae 100644
--- a/.kokoro/release/common.cfg
+++ b/.kokoro/release/common.cfg
@@ -23,8 +23,18 @@ env_vars: {
value: "github/python-cloud-core/.kokoro/release.sh"
}
+# Fetch PyPI password
+before_action {
+ fetch_keystore {
+ keystore_resource {
+ keystore_config_id: 73713
+ keyname: "google-cloud-pypi-token-keystore-1"
+ }
+ }
+}
+
# Tokens needed to report release status back to GitHub
env_vars: {
key: "SECRET_MANAGER_KEYS"
- value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem,google-cloud-pypi-token"
+ value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem"
}
From fe5f7dda545a6cb43d987802c456675e966af7db Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 17 Jan 2022 12:04:16 -0500
Subject: [PATCH 056/158] chore: move docs check from kokoro to GH actions
(#171)
---
.github/sync-repo-settings.yaml | 1 +
.github/workflows/docs.yml | 24 ++++++++++
.github/workflows/lint.yml | 30 ++++++++++++
.../{unittest_lint.yml => unittest.yml} | 47 +------------------
4 files changed, 56 insertions(+), 46 deletions(-)
create mode 100644 .github/workflows/docs.yml
create mode 100644 .github/workflows/lint.yml
rename .github/workflows/{unittest_lint.yml => unittest.yml} (72%)
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 39c7b3f..046b083 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -16,3 +16,4 @@ branchProtectionRules:
- 'unit-3.9'
- 'unit-3.10'
- 'cover'
+ - 'docs'
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..10f9b76
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,24 @@
+name: "Docs"
+
+on:
+ pull_request:
+ branches:
+ - main
+jobs:
+ run-docs:
+ name: docs
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.7"
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+ - name: Run docs
+ run: |
+ nox -s docs docfx
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..c6d94b0
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,30 @@
+name: "Lint"
+
+on:
+ pull_request:
+ branches:
+ - main
+jobs:
+ run-lint-mypy:
+ name: lint-mypy
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.7"
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+ - name: Run lint
+ run: |
+ nox -s lint
+ - name: Run lint_setup_py
+ run: |
+ nox -s lint_setup_py
+ - name: Run mypy
+ run: |
+ nox -s mypy
diff --git a/.github/workflows/unittest_lint.yml b/.github/workflows/unittest.yml
similarity index 72%
rename from .github/workflows/unittest_lint.yml
rename to .github/workflows/unittest.yml
index e48398e..a7a8796 100644
--- a/.github/workflows/unittest_lint.yml
+++ b/.github/workflows/unittest.yml
@@ -1,44 +1,11 @@
-name: "Lint / Unit tests / Cover / Mypy"
+name: "Unit tests"
on:
pull_request:
branches:
- main
-
jobs:
-
- run-lint-mypy:
- name: lint-mypy
- runs-on: ubuntu-latest
-
- steps:
-
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Setup Python
- uses: actions/setup-python@v2
- with:
- python-version: "3.10"
-
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
-
- - name: Run lint
- run: |
- nox -s lint
-
- - name: Run lint_setup_py
- run: |
- nox -s lint_setup_py
-
- - name: Run mypy
- run: |
- nox -s mypy
-
run-unittests:
name: unit-${{ matrix.python }}
runs-on: ubuntu-latest
@@ -50,28 +17,22 @@ jobs:
- "3.8"
- "3.9"
- "3.10"
-
steps:
-
- name: Checkout
uses: actions/checkout@v2
-
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
-
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
python -m pip install nox
-
- name: Run unit tests
env:
COVERAGE_FILE: .coverage-${{matrix.python }}
run: |
nox -s unit-${{ matrix.python }}
-
- name: Upload coverage results
uses: actions/upload-artifact@v2
with:
@@ -83,28 +44,22 @@ jobs:
runs-on: ubuntu-latest
needs:
- run-unittests
-
steps:
-
- name: Checkout
uses: actions/checkout@v2
-
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: "3.10"
-
- name: Install coverage
run: |
python -m pip install --upgrade setuptools pip wheel
python -m pip install coverage
-
- name: Download coverage results
uses: actions/download-artifact@v2
with:
name: coverage-artifacts
path: .coverage-results/
-
- name: Report coverage results
run: |
coverage combine .coverage-results/.coverage*
From 1630cac479e3ae5a14b0ed3bb7e1b61e5429bac2 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 18 Jan 2022 22:58:18 +0000
Subject: [PATCH 057/158] chore(main): release 2.2.2 (#169)
:robot: I have created a release *beep* *boop*
---
### [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
### Bug Fixes
* correct param type of _ClientFactoryMixin.from_service_account_info method ([#161](https://github.com/googleapis/python-cloud-core/issues/161)) ([24b7de4](https://github.com/googleapis/python-cloud-core/commit/24b7de49943a49e8235f9dbee6b32693deed8c1f))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 144dfcd..d592134 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+### [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
+
+
+### Bug Fixes
+
+* correct param type of _ClientFactoryMixin.from_service_account_info method ([#161](https://github.com/googleapis/python-cloud-core/issues/161)) ([24b7de4](https://github.com/googleapis/python-cloud-core/commit/24b7de49943a49e8235f9dbee6b32693deed8c1f))
+
### [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index b1be7d8..bcc59c4 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.2.1"
+__version__ = "2.2.2"
From 66fed4600894743ee52629e5207564a198d73e43 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 20 Jan 2022 10:43:20 -0500
Subject: [PATCH 058/158] ci(python): use templated workflows for GH actions
(#172)
* ci(python): run lint / unit tests / docs as GH actions
Source-Link: https://github.com/googleapis/synthtool/commit/57be0cdb0b94e1669cee0ca38d790de1dfdbcd44
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ed1f9983d5a935a89fe8085e8bb97d94e41015252c5b6c9771257cf8624367e6
* restore mypy check; update required checks
* set python version to 3.7 for mypy
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 15 ++++++++++++++-
.github/sync-repo-settings.yaml | 14 ++++++++------
.github/workflows/docs.yml | 26 ++++++++++++++++++++------
.github/workflows/lint.yml | 11 +++--------
.github/workflows/mypy.yml | 22 ++++++++++++++++++++++
.github/workflows/unittest.yml | 21 ++++++---------------
6 files changed, 73 insertions(+), 36 deletions(-)
create mode 100644 .github/workflows/mypy.yml
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index eecb84c..8cb4380 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,3 +1,16 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:ae600f36b6bc972b368367b6f83a1d91ec2c82a4a116b383d67d547c56fe6de3
+ digest: sha256:ed1f9983d5a935a89fe8085e8bb97d94e41015252c5b6c9771257cf8624367e6
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 046b083..19f4daa 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -9,11 +9,13 @@ branchProtectionRules:
requiredStatusCheckContexts:
- 'cla/google'
# No Kokoro: the following are Github actions
- - 'lint-mypy'
- - 'unit-3.6'
- - 'unit-3.7'
- - 'unit-3.8'
- - 'unit-3.9'
- - 'unit-3.10'
+ - 'mypy'
+ - 'lint'
+ - 'unit (3.6)'
+ - 'unit (3.7)'
+ - 'unit (3.8)'
+ - 'unit (3.9)'
+ - 'unit (3.10)'
- 'cover'
- 'docs'
+ - 'docfx'
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 10f9b76..f7b8344 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -1,12 +1,10 @@
-name: "Docs"
-
on:
pull_request:
branches:
- main
+name: docs
jobs:
- run-docs:
- name: docs
+ docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -14,11 +12,27 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v2
with:
- python-version: "3.7"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
python -m pip install nox
- name: Run docs
run: |
- nox -s docs docfx
+ nox -s docs
+ docfx:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.10"
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+ - name: Run docfx
+ run: |
+ nox -s docfx
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index c6d94b0..1e8b05c 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,12 +1,10 @@
-name: "Lint"
-
on:
pull_request:
branches:
- main
+name: lint
jobs:
- run-lint-mypy:
- name: lint-mypy
+ lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -14,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v2
with:
- python-version: "3.7"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
@@ -25,6 +23,3 @@ jobs:
- name: Run lint_setup_py
run: |
nox -s lint_setup_py
- - name: Run mypy
- run: |
- nox -s mypy
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
new file mode 100644
index 0000000..9758abd
--- /dev/null
+++ b/.github/workflows/mypy.yml
@@ -0,0 +1,22 @@
+on:
+ pull_request:
+ branches:
+ - main
+name: mypy
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.7"
+ - name: Install nox
+ run: |
+ python -m pip install --upgrade setuptools pip wheel
+ python -m pip install nox
+ - name: Run mypy
+ run: |
+ nox -s mypy
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index a7a8796..074ee25 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -1,22 +1,14 @@
-name: "Unit tests"
-
on:
pull_request:
branches:
- main
-
+name: unittest
jobs:
- run-unittests:
- name: unit-${{ matrix.python }}
+ unit:
runs-on: ubuntu-latest
strategy:
matrix:
- python:
- - "3.6"
- - "3.7"
- - "3.8"
- - "3.9"
- - "3.10"
+ python: ['3.6', '3.7', '3.8', '3.9', '3.10']
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -30,7 +22,7 @@ jobs:
python -m pip install nox
- name: Run unit tests
env:
- COVERAGE_FILE: .coverage-${{matrix.python }}
+ COVERAGE_FILE: .coverage-${{ matrix.python }}
run: |
nox -s unit-${{ matrix.python }}
- name: Upload coverage results
@@ -39,11 +31,10 @@ jobs:
name: coverage-artifacts
path: .coverage-${{ matrix.python }}
- report-coverage:
- name: cover
+ cover:
runs-on: ubuntu-latest
needs:
- - run-unittests
+ - unit
steps:
- name: Checkout
uses: actions/checkout@v2
From 2e388a29938c96196f270d13f6f10b22cfaafcb5 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 1 Mar 2022 12:00:56 -0500
Subject: [PATCH 059/158] chore(deps): update actions/setup-python action to v3
(#175)
* chore(deps): update actions/setup-python action to v3
Source-Link: https://github.com/googleapis/synthtool/commit/571ee2c3b26182429eddcf115122ee545d7d3787
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:09af371bb7d8ebbaef620bfc76c0a3a42da96d75f4821409b54f3466d4ebbd3c
* fix name for mypy check
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 2 +-
.github/workflows/docs.yml | 4 ++--
.github/workflows/lint.yml | 2 +-
.github/workflows/mypy.yml | 2 +-
.github/workflows/unittest.yml | 4 ++--
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 8cb4380..2a654fa 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:ed1f9983d5a935a89fe8085e8bb97d94e41015252c5b6c9771257cf8624367e6
+ digest: sha256:09af371bb7d8ebbaef620bfc76c0a3a42da96d75f4821409b54f3466d4ebbd3c
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index f7b8344..cca4e98 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -10,7 +10,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install nox
@@ -26,7 +26,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install nox
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 1e8b05c..f687324 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -10,7 +10,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install nox
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index 9758abd..f3212da 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -4,7 +4,7 @@ on:
- main
name: mypy
jobs:
- lint:
+ mypy:
runs-on: ubuntu-latest
steps:
- name: Checkout
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 074ee25..d3003e0 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -13,7 +13,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: Install nox
@@ -39,7 +39,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install coverage
From 1a31c49200466e0b5631d34c95a6f0f5e1f06691 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 3 Mar 2022 00:22:32 +0000
Subject: [PATCH 060/158] chore(deps): update actions/checkout action to v3
(#177)
Source-Link: https://github.com/googleapis/synthtool/commit/ca879097772aeec2cbb971c3cea8ecc81522b68a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392
---
.github/.OwlBot.lock.yaml | 2 +-
.github/workflows/docs.yml | 4 ++--
.github/workflows/lint.yml | 2 +-
.github/workflows/unittest.yml | 4 ++--
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 2a654fa..480226a 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:09af371bb7d8ebbaef620bfc76c0a3a42da96d75f4821409b54f3466d4ebbd3c
+ digest: sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index cca4e98..b46d730 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index f687324..f512a49 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index d3003e0..e87fe5b 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -11,7 +11,7 @@ jobs:
python: ['3.6', '3.7', '3.8', '3.9', '3.10']
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
@@ -37,7 +37,7 @@ jobs:
- unit
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
From beff8db4cf5f4294dfabc91d364b0bb12b6989d8 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 4 Mar 2022 19:32:18 -0500
Subject: [PATCH 061/158] chore(deps): update actions/download-artifact action
to v3 (#179)
Source-Link: https://github.com/googleapis/synthtool/commit/38e11ad1104dcc1e63b52691ddf2fe4015d06955
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:4e1991042fe54b991db9ca17c8fb386e61b22fe4d1472a568bf0fcac85dcf5d3
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.github/workflows/unittest.yml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 480226a..44c78f7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392
+ digest: sha256:4e1991042fe54b991db9ca17c8fb386e61b22fe4d1472a568bf0fcac85dcf5d3
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index e87fe5b..e5be6ed 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -26,7 +26,7 @@ jobs:
run: |
nox -s unit-${{ matrix.python }}
- name: Upload coverage results
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: coverage-artifacts
path: .coverage-${{ matrix.python }}
@@ -47,7 +47,7 @@ jobs:
python -m pip install --upgrade setuptools pip wheel
python -m pip install coverage
- name: Download coverage results
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: coverage-artifacts
path: .coverage-results/
From c65ad44df0b058120aea0686eddeaffbe9bbdda7 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 7 Mar 2022 16:52:42 -0500
Subject: [PATCH 062/158] fix(deps): require google-api-core>=1.31.5, >=2.3.2
(#178)
fix(deps): require google-auth 1.25.0
---
setup.py | 4 ++--
testing/constraints-3.6.txt | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/setup.py b/setup.py
index 750c467..55100a3 100644
--- a/setup.py
+++ b/setup.py
@@ -28,8 +28,8 @@
# 'Development Status :: 5 - Production/Stable'
release_status = "Development Status :: 5 - Production/Stable"
dependencies = [
- "google-api-core >= 1.21.0, < 3.0.0dev",
- "google-auth >= 1.24.0, < 3.0dev",
+ "google-api-core >= 1.31.5, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
+ "google-auth >= 1.25.0, < 3.0dev",
]
extras = {"grpc": "grpcio >= 1.8.2, < 2.0dev"}
diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt
index bc4f7d2..8b2701c 100644
--- a/testing/constraints-3.6.txt
+++ b/testing/constraints-3.6.txt
@@ -5,6 +5,6 @@
#
# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
# Then this file should have foo==1.14.0
-google-api-core==1.21.0
-google-auth==1.24.0
+google-api-core==1.31.5
+google-auth==1.25.0
grpcio==1.8.2
From 8575b67d2fc6a096e8691aeff4f0c8231904a466 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 7 Mar 2022 16:54:11 -0500
Subject: [PATCH 063/158] chore(main): release 2.2.3 (#180)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 8 ++++++++
google/cloud/version.py | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d592134..7d4c3cd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+### [2.2.3](https://github.com/googleapis/python-cloud-core/compare/v2.2.2...v2.2.3) (2022-03-07)
+
+
+### Bug Fixes
+
+* **deps:** require google-api-core>=1.31.5, >=2.3.2 ([#178](https://github.com/googleapis/python-cloud-core/issues/178)) ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
+* **deps:** require google-auth 1.25.0 ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
+
### [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index bcc59c4..75ec9d3 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.2.2"
+__version__ = "2.2.3"
From 8ca0faa17e87aa842d154b965be5ef39f1f7490d Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 30 Mar 2022 05:46:05 -0400
Subject: [PATCH 064/158] chore(python): use black==22.3.0 (#181)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(python): use black==22.3.0
Source-Link: https://github.com/googleapis/synthtool/commit/6fab84af09f2cf89a031fd8671d1def6b2931b11
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:7cffbc10910c3ab1b852c05114a08d374c195a81cdec1d4a67a1d129331d0bfe
* chore: update black version in noxfile
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* ci: add commit to trigger gh actions
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 3 ++-
docs/conf.py | 13 +++++++++++--
google/cloud/_helpers/__init__.py | 12 +++++-------
google/cloud/client/__init__.py | 6 ++++--
noxfile.py | 12 +++++++++---
tests/unit/test__helpers.py | 8 +++++---
tests/unit/test_client.py | 15 ++++++++++-----
7 files changed, 46 insertions(+), 23 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 44c78f7..34e11d7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:4e1991042fe54b991db9ca17c8fb386e61b22fe4d1472a568bf0fcac85dcf5d3
+ digest: sha256:7cffbc10910c3ab1b852c05114a08d374c195a81cdec1d4a67a1d129331d0bfe
+
diff --git a/docs/conf.py b/docs/conf.py
index 67ceda5..f105599 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -314,7 +314,13 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (root_doc, "google-cloud-core", "google-cloud-core Documentation", [author], 1,)
+ (
+ root_doc,
+ "google-cloud-core",
+ "google-cloud-core Documentation",
+ [author],
+ 1,
+ )
]
# If true, show URL addresses after external links.
@@ -355,7 +361,10 @@
intersphinx_mapping = {
"python": ("https://python.readthedocs.org/en/latest/", None),
"google-auth": ("https://googleapis.dev/python/google-auth/latest/", None),
- "google.api_core": ("https://googleapis.dev/python/google-api-core/latest/", None,),
+ "google.api_core": (
+ "https://googleapis.dev/python/google-api-core/latest/",
+ None,
+ ),
"grpc": ("https://grpc.github.io/grpc/python/", None),
"proto-plus": ("https://proto-plus-python.readthedocs.io/en/latest/", None),
"protobuf": ("https://googleapis.dev/python/protobuf/latest/", None),
diff --git a/google/cloud/_helpers/__init__.py b/google/cloud/_helpers/__init__.py
index 291f587..3b9d04d 100644
--- a/google/cloud/_helpers/__init__.py
+++ b/google/cloud/_helpers/__init__.py
@@ -85,13 +85,11 @@ def __init__(self):
self._stack = []
def __iter__(self):
- """Iterate the stack in LIFO order.
- """
+ """Iterate the stack in LIFO order."""
return iter(reversed(self._stack))
def push(self, resource):
- """Push a resource onto our stack.
- """
+ """Push a resource onto our stack."""
self._stack.append(resource)
def pop(self):
@@ -284,7 +282,7 @@ def _rfc3339_nanos_to_datetime(dt_str):
micros = 0
else:
scale = 9 - len(fraction)
- nanos = int(fraction) * (10 ** scale)
+ nanos = int(fraction) * (10**scale)
micros = nanos // 1000
return bare_seconds.replace(microsecond=micros, tzinfo=UTC)
@@ -416,8 +414,8 @@ def _datetime_to_pb_timestamp(when):
:returns: A timestamp protobuf corresponding to the object.
"""
ms_value = _microseconds_from_datetime(when)
- seconds, micros = divmod(ms_value, 10 ** 6)
- nanos = micros * 10 ** 3
+ seconds, micros = divmod(ms_value, 10**6)
+ nanos = micros * 10**3
return timestamp_pb2.Timestamp(seconds=seconds, nanos=nanos)
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
index d77e200..93e5d22 100644
--- a/google/cloud/client/__init__.py
+++ b/google/cloud/client/__init__.py
@@ -209,7 +209,8 @@ def _http(self):
"""
if self._http_internal is None:
self._http_internal = google.auth.transport.requests.AuthorizedSession(
- self._credentials, refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT,
+ self._credentials,
+ refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT,
)
self._http_internal.configure_mtls_channel(self._client_cert_source)
return self._http_internal
@@ -254,7 +255,8 @@ def __init__(self, project=None, credentials=None):
# https://github.com/googleapis/python-cloud-core/issues/27
if project is None:
project = os.getenv(
- environment_vars.PROJECT, os.getenv(environment_vars.LEGACY_PROJECT),
+ environment_vars.PROJECT,
+ os.getenv(environment_vars.LEGACY_PROJECT),
)
# Project set on explicit credentials overrides discovery from
diff --git a/noxfile.py b/noxfile.py
index 8fc781f..90baaf0 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -19,7 +19,7 @@
import nox
-BLACK_VERSION = "black==19.10b0"
+BLACK_VERSION = "black==22.3.0"
BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
DEFAULT_PYTHON_VERSION = "3.7"
@@ -43,7 +43,10 @@ def mypy(session):
"""Run type-checking."""
session.install(".", "mypy")
session.install(
- "types-setuptools", "types-requests", "types-mock", "types-protobuf",
+ "types-setuptools",
+ "types-requests",
+ "types-mock",
+ "types-protobuf",
)
session.run("mypy", "google", "tests")
@@ -143,7 +146,10 @@ def docfx(session):
session.install("-e", ".")
session.install(
- "sphinx==4.0.1", "alabaster", "recommonmark", "gcp-sphinx-docfx-yaml",
+ "sphinx==4.0.1",
+ "alabaster",
+ "recommonmark",
+ "gcp-sphinx-docfx-yaml",
)
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py
index db0fa5b..edb5cf3 100644
--- a/tests/unit/test__helpers.py
+++ b/tests/unit/test__helpers.py
@@ -553,7 +553,9 @@ def test_success(self):
out_message = self._call_fut(date_pb2.Date, in_message_any)
self.assertEqual(in_message, out_message)
- def test_failure(self,):
+ def test_failure(
+ self,
+ ):
from google.protobuf import any_pb2
from google.type import date_pb2
from google.type import timeofday_pb2
@@ -636,7 +638,7 @@ def test_with_negative_microseconds(self):
result = self._call_fut(timedelta_val)
self.assertIsInstance(result, duration_pb2.Duration)
self.assertEqual(result.seconds, seconds - 1)
- self.assertEqual(result.nanos, 10 ** 9 + 1000 * microseconds)
+ self.assertEqual(result.nanos, 10**9 + 1000 * microseconds)
def test_with_negative_seconds(self):
import datetime
@@ -648,7 +650,7 @@ def test_with_negative_seconds(self):
result = self._call_fut(timedelta_val)
self.assertIsInstance(result, duration_pb2.Duration)
self.assertEqual(result.seconds, seconds + 1)
- self.assertEqual(result.nanos, -(10 ** 9 - 1000 * microseconds))
+ self.assertEqual(result.nanos, -(10**9 - 1000 * microseconds))
class Test__duration_pb_to_timedelta(unittest.TestCase):
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index febfcfe..fb35da4 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -234,7 +234,8 @@ def test_ctor_defaults_wo_envvar(self):
environ = {}
patch_env = mock.patch("os.environ", new=environ)
patch_default = mock.patch(
- "google.cloud.client._determine_default_project", return_value=None,
+ "google.cloud.client._determine_default_project",
+ return_value=None,
)
with patch_env:
with patch_default as patched:
@@ -268,7 +269,8 @@ def test_ctor_defaults_w_legacy_envvar(self):
def test_ctor_w_explicit_project(self):
explicit_project = "explicit-project-456"
patch_default = mock.patch(
- "google.cloud.client._determine_default_project", return_value=None,
+ "google.cloud.client._determine_default_project",
+ return_value=None,
)
with patch_default as patched:
client = self._make_one(project=explicit_project)
@@ -280,7 +282,8 @@ def test_ctor_w_explicit_project(self):
def test_ctor_w_explicit_project_bytes(self):
explicit_project = b"explicit-project-456"
patch_default = mock.patch(
- "google.cloud.client._determine_default_project", return_value=None,
+ "google.cloud.client._determine_default_project",
+ return_value=None,
)
with patch_default as patched:
client = self._make_one(project=explicit_project)
@@ -292,7 +295,8 @@ def test_ctor_w_explicit_project_bytes(self):
def test_ctor_w_explicit_project_invalid(self):
explicit_project = object()
patch_default = mock.patch(
- "google.cloud.client._determine_default_project", return_value=None,
+ "google.cloud.client._determine_default_project",
+ return_value=None,
)
with patch_default as patched:
with self.assertRaises(ValueError):
@@ -331,7 +335,8 @@ def test_ctor_w_explicit_credentials_w_project(self):
project = "credentials-project-456"
credentials = self._make_credentials(project_id=project)
patch_default = mock.patch(
- "google.cloud.client._determine_default_project", return_value=None,
+ "google.cloud.client._determine_default_project",
+ return_value=None,
)
with patch_default as patched:
client = self._make_one(credentials=credentials)
From 69f130d542c82d3996898ba6a52452cdc5c29f2e Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 1 Apr 2022 00:16:16 +0000
Subject: [PATCH 065/158] chore(python): update .pre-commit-config.yaml to use
black==22.3.0 (#182)
Source-Link: https://github.com/googleapis/synthtool/commit/7804ade3daae0d66649bee8df6c55484c6580b8d
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:eede5672562a32821444a8e803fb984a6f61f2237ea3de229d2de24453f4ae7d
---
.github/.OwlBot.lock.yaml | 4 ++--
.pre-commit-config.yaml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 34e11d7..22cc254 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:7cffbc10910c3ab1b852c05114a08d374c195a81cdec1d4a67a1d129331d0bfe
-
+ digest: sha256:eede5672562a32821444a8e803fb984a6f61f2237ea3de229d2de24453f4ae7d
+# created: 2022-03-30T23:44:26.560599165Z
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 62eb5a7..46d2371 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -22,7 +22,7 @@ repos:
- id: end-of-file-fixer
- id: check-yaml
- repo: https://github.com/psf/black
- rev: 19.10b0
+ rev: 22.3.0
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
From 515a3b2992ce706b893488aced2a339235685dac Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 1 Apr 2022 02:16:11 +0000
Subject: [PATCH 066/158] chore(python): Enable size-label bot (#184)
Source-Link: https://github.com/googleapis/synthtool/commit/06e82790dd719a165ad32b8a06f8f6ec3e3cae0f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:b3500c053313dc34e07b1632ba9e4e589f4f77036a7cf39e1fe8906811ae0fce
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/auto-label.yaml | 2 ++
2 files changed, 4 insertions(+), 2 deletions(-)
create mode 100644 .github/auto-label.yaml
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 22cc254..58a0b15 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:eede5672562a32821444a8e803fb984a6f61f2237ea3de229d2de24453f4ae7d
-# created: 2022-03-30T23:44:26.560599165Z
+ digest: sha256:b3500c053313dc34e07b1632ba9e4e589f4f77036a7cf39e1fe8906811ae0fce
+# created: 2022-04-01T01:42:03.609279246Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
new file mode 100644
index 0000000..09c8d73
--- /dev/null
+++ b/.github/auto-label.yaml
@@ -0,0 +1,2 @@
+requestsize:
+ enabled: true
From 3f8e0581e631cde3163278fff326fd4831a75e75 Mon Sep 17 00:00:00 2001
From: Aaron Gabriel Neyer
Date: Fri, 1 Apr 2022 11:36:57 -0600
Subject: [PATCH 067/158] feat: allow extra_api_info to be passed to api
request (#183)
* feat: allow extra_api_info to be passed to api request
* add doc string
Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>
---
google/cloud/_http/__init__.py | 16 +++++++++++++++-
tests/unit/test__http.py | 25 +++++++++++++++++++++++++
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/google/cloud/_http/__init__.py b/google/cloud/_http/__init__.py
index 4c3ed96..af25e65 100644
--- a/google/cloud/_http/__init__.py
+++ b/google/cloud/_http/__init__.py
@@ -282,6 +282,7 @@ def _make_request(
headers=None,
target_object=None,
timeout=_DEFAULT_TIMEOUT,
+ extra_api_info=None,
):
"""A low level method to send a request to the API.
@@ -317,6 +318,10 @@ def _make_request(
Can also be passed as a tuple (connect_timeout, read_timeout).
See :meth:`requests.Session.request` documentation for details.
+ :type extra_api_info: string
+ :param extra_api_info: (optional) Extra api info to be appended to
+ the X-Goog-API-Client header
+
:rtype: :class:`requests.Response`
:returns: The HTTP response.
"""
@@ -327,7 +332,10 @@ def _make_request(
if content_type:
headers["Content-Type"] = content_type
- headers[CLIENT_INFO_HEADER] = self.user_agent
+ if extra_api_info:
+ headers[CLIENT_INFO_HEADER] = f"{self.user_agent} {extra_api_info}"
+ else:
+ headers[CLIENT_INFO_HEADER] = self.user_agent
headers["User-Agent"] = self.user_agent
return self._do_request(
@@ -385,6 +393,7 @@ def api_request(
expect_json=True,
_target_object=None,
timeout=_DEFAULT_TIMEOUT,
+ extra_api_info=None,
):
"""Make a request over the HTTP transport to the API.
@@ -446,6 +455,10 @@ def api_request(
Can also be passed as a tuple (connect_timeout, read_timeout).
See :meth:`requests.Session.request` documentation for details.
+ :type extra_api_info: string
+ :param extra_api_info: (optional) Extra api info to be appended to
+ the X-Goog-API-Client header
+
:raises ~google.cloud.exceptions.GoogleCloudError: if the response code
is not 200 OK.
:raises ValueError: if the response content type is not JSON.
@@ -474,6 +487,7 @@ def api_request(
headers=headers,
target_object=_target_object,
timeout=timeout,
+ extra_api_info=extra_api_info,
)
if not 200 <= response.status_code < 300:
diff --git a/tests/unit/test__http.py b/tests/unit/test__http.py
index ab03fac..faee193 100644
--- a/tests/unit/test__http.py
+++ b/tests/unit/test__http.py
@@ -575,6 +575,31 @@ def test_api_request_w_timeout(self):
timeout=(2.2, 3.3),
)
+ def test_api_request_w_extra_api_info(self):
+ from google.cloud._http import CLIENT_INFO_HEADER
+
+ session = make_requests_session([self.EMPTY_JSON_RESPONSE])
+ client = mock.Mock(_http=session, spec=["_http"])
+ conn = self._make_mock_one(client)
+
+ EXTRA_API_INFO = "gccl-invocation-id/testing-id-123"
+ result = conn.api_request("GET", "/", extra_api_info=EXTRA_API_INFO)
+
+ self.assertEqual(result, {})
+
+ expected_headers = {
+ "Accept-Encoding": "gzip",
+ "User-Agent": conn.user_agent,
+ CLIENT_INFO_HEADER: f"{conn.user_agent} {EXTRA_API_INFO}",
+ }
+ session.request.assert_called_once_with(
+ method="GET",
+ url=mock.ANY,
+ headers=expected_headers,
+ data=None,
+ timeout=self._get_default_timeout(),
+ )
+
def test_api_request_w_404(self):
from google.cloud import exceptions
From 3414aa736ebfb35ee05acdaa32e7614f85338159 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Tue, 5 Apr 2022 11:14:56 -0400
Subject: [PATCH 068/158] chore: allow releases on previous major versions
(#186)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore: allow releases on previous major versions
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
Co-authored-by: Owl Bot
---
.github/release-please.yml | 9 +++++++++
owlbot.py | 3 +++
2 files changed, 12 insertions(+)
diff --git a/.github/release-please.yml b/.github/release-please.yml
index 466597e..29601ad 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -1,2 +1,11 @@
releaseType: python
handleGHRelease: true
+# NOTE: this section is generated by synthtool.languages.python
+# See https://github.com/googleapis/synthtool/blob/master/synthtool/languages/python.py
+branches:
+- branch: v1
+ handleGHRelease: true
+ releaseType: python
+- branch: v0
+ handleGHRelease: true
+ releaseType: python
diff --git a/owlbot.py b/owlbot.py
index b24dd44..49c6c49 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -16,6 +16,7 @@
import synthtool as s
from synthtool import gcp
+from synthtool.languages import python
common = gcp.CommonTemplates()
@@ -38,4 +39,6 @@
],
)
+python.configure_previous_major_version_branches()
+
s.shell.run(["nox", "-s", "blacken"], hide_output=False)
From 9637c1e18518136e0c0f3293b8bb502988e332c1 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 6 Apr 2022 06:46:06 -0400
Subject: [PATCH 069/158] chore(python): add license header to auto-label.yaml
(#187)
Source-Link: https://github.com/googleapis/synthtool/commit/eb78c980b52c7c6746d2edb77d9cf7aaa99a2aab
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:8a5d3f6a2e43ed8293f34e06a2f56931d1e88a2694c3bb11b15df4eb256ad163
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/auto-label.yaml | 13 +++++++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 58a0b15..bc893c9 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:b3500c053313dc34e07b1632ba9e4e589f4f77036a7cf39e1fe8906811ae0fce
-# created: 2022-04-01T01:42:03.609279246Z
+ digest: sha256:8a5d3f6a2e43ed8293f34e06a2f56931d1e88a2694c3bb11b15df4eb256ad163
+# created: 2022-04-06T10:30:21.687684602Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
index 09c8d73..41bff0b 100644
--- a/.github/auto-label.yaml
+++ b/.github/auto-label.yaml
@@ -1,2 +1,15 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
requestsize:
enabled: true
From 6014db08ca2078a1c8ebb37ee46c53dae381e7d5 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 11 Apr 2022 08:52:39 -0600
Subject: [PATCH 070/158] chore(main): release 2.3.0 (#185)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d4c3cd..46358b6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.3.0](https://github.com/googleapis/python-cloud-core/compare/v2.2.3...v2.3.0) (2022-04-06)
+
+
+### Features
+
+* allow extra_api_info to be passed to api request ([#183](https://github.com/googleapis/python-cloud-core/issues/183)) ([3f8e058](https://github.com/googleapis/python-cloud-core/commit/3f8e0581e631cde3163278fff326fd4831a75e75))
+
### [2.2.3](https://github.com/googleapis/python-cloud-core/compare/v2.2.2...v2.2.3) (2022-03-07)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 75ec9d3..999199f 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.2.3"
+__version__ = "2.3.0"
From 70b348bdfd4c11c77793b907468c206ee457bd32 Mon Sep 17 00:00:00 2001
From: WhiteSource Renovate
Date: Thu, 21 Apr 2022 03:33:44 +0200
Subject: [PATCH 071/158] chore(deps): update all dependencies (#188)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(deps): update all dependencies
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
Co-authored-by: Owl Bot
---
.github/workflows/mypy.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index f3212da..e67dcbc 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v3
with:
python-version: "3.7"
- name: Install nox
From 3f64dde56a5ebd3941cac91f68c2be250978a9c6 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 21 Apr 2022 16:10:21 +0000
Subject: [PATCH 072/158] chore(python): use ubuntu 22.04 in docs image (#190)
Source-Link: https://github.com/googleapis/synthtool/commit/f15cc72fb401b4861cedebb10af74afe428fb1f8
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:bc5eed3804aec2f05fad42aacf973821d9500c174015341f721a984a0825b6fd
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/docker/docs/Dockerfile | 20 ++++++++++++++++++--
2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index bc893c9..64f82d6 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:8a5d3f6a2e43ed8293f34e06a2f56931d1e88a2694c3bb11b15df4eb256ad163
-# created: 2022-04-06T10:30:21.687684602Z
+ digest: sha256:bc5eed3804aec2f05fad42aacf973821d9500c174015341f721a984a0825b6fd
+# created: 2022-04-21T15:43:16.246106921Z
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 4e1b1fb..238b87b 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from ubuntu:20.04
+from ubuntu:22.04
ENV DEBIAN_FRONTEND noninteractive
@@ -60,8 +60,24 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /var/cache/apt/archives/*.deb
+###################### Install python 3.8.11
+
+# Download python 3.8.11
+RUN wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz
+
+# Extract files
+RUN tar -xvf Python-3.8.11.tgz
+
+# Install python 3.8.11
+RUN ./Python-3.8.11/configure --enable-optimizations
+RUN make altinstall
+
+###################### Install pip
RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
- && python3.8 /tmp/get-pip.py \
+ && python3 /tmp/get-pip.py \
&& rm /tmp/get-pip.py
+# Test pip
+RUN python3 -m pip
+
CMD ["python3.8"]
From a41c3a78fd6611a4e0e0044f25b1af36bcf3ca6b Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 5 May 2022 11:47:33 -0400
Subject: [PATCH 073/158] chore: [autoapprove] update readme_gen.py to include
autoescape True (#191)
Source-Link: https://github.com/googleapis/synthtool/commit/6b4d5a6407d740beb4158b302194a62a4108a8a6
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f792ee1320e03eda2d13a5281a2989f7ed8a9e50b73ef6da97fac7e1e850b149
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
scripts/readme-gen/readme_gen.py | 5 ++++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 64f82d6..b631901 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:bc5eed3804aec2f05fad42aacf973821d9500c174015341f721a984a0825b6fd
-# created: 2022-04-21T15:43:16.246106921Z
+ digest: sha256:f792ee1320e03eda2d13a5281a2989f7ed8a9e50b73ef6da97fac7e1e850b149
+# created: 2022-05-05T15:17:27.599381182Z
diff --git a/scripts/readme-gen/readme_gen.py b/scripts/readme-gen/readme_gen.py
index d309d6e..91b5967 100644
--- a/scripts/readme-gen/readme_gen.py
+++ b/scripts/readme-gen/readme_gen.py
@@ -28,7 +28,10 @@
jinja_env = jinja2.Environment(
trim_blocks=True,
loader=jinja2.FileSystemLoader(
- os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates'))))
+ os.path.abspath(os.path.join(os.path.dirname(__file__), "templates"))
+ ),
+ autoescape=True,
+)
README_TMPL = jinja_env.get_template('README.tmpl.rst')
From 66d0e8692123021ae76d5d0802c130ba05cce181 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 5 May 2022 23:04:16 +0000
Subject: [PATCH 074/158] chore(python): auto approve template changes (#193)
Source-Link: https://github.com/googleapis/synthtool/commit/453a5d9c9a55d1969240a37d36cec626d20a9024
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:81ed5ecdfc7cac5b699ba4537376f3563f6f04122c4ec9e735d3b3dc1d43dd32
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/auto-approve.yml | 3 +++
2 files changed, 5 insertions(+), 2 deletions(-)
create mode 100644 .github/auto-approve.yml
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index b631901..757c9dc 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:f792ee1320e03eda2d13a5281a2989f7ed8a9e50b73ef6da97fac7e1e850b149
-# created: 2022-05-05T15:17:27.599381182Z
+ digest: sha256:81ed5ecdfc7cac5b699ba4537376f3563f6f04122c4ec9e735d3b3dc1d43dd32
+# created: 2022-05-05T22:08:23.383410683Z
diff --git a/.github/auto-approve.yml b/.github/auto-approve.yml
new file mode 100644
index 0000000..311ebbb
--- /dev/null
+++ b/.github/auto-approve.yml
@@ -0,0 +1,3 @@
+# https://github.com/googleapis/repo-automation-bots/tree/main/packages/auto-approve
+processes:
+ - "OwlBotTemplateChanges"
From 1b79d69cdb156ae21dddb5ab7579f6c08fd701b8 Mon Sep 17 00:00:00 2001
From: Dan Lee <71398022+dandhlee@users.noreply.github.com>
Date: Thu, 2 Jun 2022 20:44:38 -0400
Subject: [PATCH 075/158] docs: fix changelog header to consistent size (#194)
---
CHANGELOG.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 46358b6..8aef5d6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,7 +11,7 @@
* allow extra_api_info to be passed to api request ([#183](https://github.com/googleapis/python-cloud-core/issues/183)) ([3f8e058](https://github.com/googleapis/python-cloud-core/commit/3f8e0581e631cde3163278fff326fd4831a75e75))
-### [2.2.3](https://github.com/googleapis/python-cloud-core/compare/v2.2.2...v2.2.3) (2022-03-07)
+## [2.2.3](https://github.com/googleapis/python-cloud-core/compare/v2.2.2...v2.2.3) (2022-03-07)
### Bug Fixes
@@ -19,14 +19,14 @@
* **deps:** require google-api-core>=1.31.5, >=2.3.2 ([#178](https://github.com/googleapis/python-cloud-core/issues/178)) ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
* **deps:** require google-auth 1.25.0 ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
-### [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
+## [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
### Bug Fixes
* correct param type of _ClientFactoryMixin.from_service_account_info method ([#161](https://github.com/googleapis/python-cloud-core/issues/161)) ([24b7de4](https://github.com/googleapis/python-cloud-core/commit/24b7de49943a49e8235f9dbee6b32693deed8c1f))
-### [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
+## [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
### Bug Fixes
@@ -64,7 +64,7 @@
* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
-### [1.7.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.1...v1.7.2) (2021-07-27)
+## [1.7.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.1...v1.7.2) (2021-07-27)
### Documentation
@@ -111,21 +111,21 @@
* add support for Python 3.9, drop support for Python 3.5 ([#55](https://www.github.com/googleapis/python-cloud-core/issues/55)) ([ddf7ce5](https://www.github.com/googleapis/python-cloud-core/commit/ddf7ce5cc1be78e580d6450043bace71e789e933))
-### [1.4.4](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.3...v1.4.4) (2020-11-30)
+## [1.4.4](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.3...v1.4.4) (2020-11-30)
### Dependencies
* require `six>=1.12.0` and `google-api-core>=1.21.0` ([#46](https://www.github.com/googleapis/python-cloud-core/issues/46)) ([a97b9ca](https://www.github.com/googleapis/python-cloud-core/commit/a97b9cae6d3b8f0c723dfa825f1b76efc2318f80))
-### [1.4.3](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.2...v1.4.3) (2020-10-06)
+## [1.4.3](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.2...v1.4.3) (2020-10-06)
### Bug Fixes
* avoid using 'pkg_resources' to determine version ([#40](https://www.github.com/googleapis/python-cloud-core/issues/40)) ([568578d](https://www.github.com/googleapis/python-cloud-core/commit/568578d33f71117564ee9212daad72d4e2b739a6)), closes [#39](https://www.github.com/googleapis/python-cloud-core/issues/39)
-### [1.4.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.1...v1.4.2) (2020-09-29)
+## [1.4.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.1...v1.4.2) (2020-09-29)
### Bug Fixes
@@ -137,7 +137,7 @@
* use prettyPrint=false by default ([#28](https://www.github.com/googleapis/python-cloud-core/issues/28)) ([c407b5d](https://www.github.com/googleapis/python-cloud-core/commit/c407b5d617c04affbdb4f444c188edffb25d4336))
-### [1.4.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.0...v1.4.1) (2020-08-06)
+## [1.4.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.0...v1.4.1) (2020-08-06)
### Bug Fixes
From 1bc7354261e2fcb8426d269d0083d2d993fafe66 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 9 Jun 2022 11:17:33 -0400
Subject: [PATCH 076/158] chore(main): release 2.3.1 (#195)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8aef5d6..18e8b16 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.3.1](https://github.com/googleapis/python-cloud-core/compare/v2.3.0...v2.3.1) (2022-06-03)
+
+
+### Documentation
+
+* fix changelog header to consistent size ([#194](https://github.com/googleapis/python-cloud-core/issues/194)) ([1b79d69](https://github.com/googleapis/python-cloud-core/commit/1b79d69cdb156ae21dddb5ab7579f6c08fd701b8))
+
## [2.3.0](https://github.com/googleapis/python-cloud-core/compare/v2.2.3...v2.3.0) (2022-04-06)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 999199f..474ccbc 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.3.0"
+__version__ = "2.3.1"
From 3277c60102803deaae17f665b3f2f80087dd1e0f Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 10 Jul 2022 13:21:13 -0400
Subject: [PATCH 077/158] fix: require python 3.7+ (#201)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(python): drop python 3.6
Source-Link: https://github.com/googleapis/synthtool/commit/4f89b13af10d086458f9b379e56a614f9d6dab7b
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c
* require python 3.7+ in setup.py
* remove python 3.6 sample configs
* exclude templated README
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* remove required check for python 3.6
* fix(deps): require google-api-core >= 1.31.6
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +-
.github/sync-repo-settings.yaml | 1 -
.github/workflows/unittest.yml | 2 +-
.kokoro/continuous/prerelease-deps.cfg | 7 ++++
.kokoro/presubmit/prerelease-deps.cfg | 7 ++++
.kokoro/samples/python3.6/common.cfg | 40 -------------------
.kokoro/samples/python3.6/continuous.cfg | 7 ----
.kokoro/samples/python3.6/periodic-head.cfg | 11 -----
.kokoro/samples/python3.6/periodic.cfg | 6 ---
.kokoro/samples/python3.6/presubmit.cfg | 6 ---
.kokoro/test-samples-impl.sh | 4 +-
CONTRIBUTING.rst | 6 +--
README.rst | 5 ++-
owlbot.py | 2 +-
.../templates/install_deps.tmpl.rst | 2 +-
setup.py | 7 ++--
testing/constraints-3.6.txt | 10 -----
testing/constraints-3.7.txt | 10 +++++
18 files changed, 40 insertions(+), 97 deletions(-)
create mode 100644 .kokoro/continuous/prerelease-deps.cfg
create mode 100644 .kokoro/presubmit/prerelease-deps.cfg
delete mode 100644 .kokoro/samples/python3.6/common.cfg
delete mode 100644 .kokoro/samples/python3.6/continuous.cfg
delete mode 100644 .kokoro/samples/python3.6/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.6/periodic.cfg
delete mode 100644 .kokoro/samples/python3.6/presubmit.cfg
delete mode 100644 testing/constraints-3.6.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 757c9dc..1ce6085 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:81ed5ecdfc7cac5b699ba4537376f3563f6f04122c4ec9e735d3b3dc1d43dd32
-# created: 2022-05-05T22:08:23.383410683Z
+ digest: sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c
+# created: 2022-07-05T18:31:20.838186805Z
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 19f4daa..445e64c 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -11,7 +11,6 @@ branchProtectionRules:
# No Kokoro: the following are Github actions
- 'mypy'
- 'lint'
- - 'unit (3.6)'
- 'unit (3.7)'
- 'unit (3.8)'
- 'unit (3.9)'
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index e5be6ed..5531b01 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python: ['3.6', '3.7', '3.8', '3.9', '3.10']
+ python: ['3.7', '3.8', '3.9', '3.10']
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/.kokoro/continuous/prerelease-deps.cfg b/.kokoro/continuous/prerelease-deps.cfg
new file mode 100644
index 0000000..3595fb4
--- /dev/null
+++ b/.kokoro/continuous/prerelease-deps.cfg
@@ -0,0 +1,7 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Only run this nox session.
+env_vars: {
+ key: "NOX_SESSION"
+ value: "prerelease_deps"
+}
diff --git a/.kokoro/presubmit/prerelease-deps.cfg b/.kokoro/presubmit/prerelease-deps.cfg
new file mode 100644
index 0000000..3595fb4
--- /dev/null
+++ b/.kokoro/presubmit/prerelease-deps.cfg
@@ -0,0 +1,7 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Only run this nox session.
+env_vars: {
+ key: "NOX_SESSION"
+ value: "prerelease_deps"
+}
diff --git a/.kokoro/samples/python3.6/common.cfg b/.kokoro/samples/python3.6/common.cfg
deleted file mode 100644
index 276a53f..0000000
--- a/.kokoro/samples/python3.6/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.6"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-py36"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.6/continuous.cfg b/.kokoro/samples/python3.6/continuous.cfg
deleted file mode 100644
index 7218af1..0000000
--- a/.kokoro/samples/python3.6/continuous.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
diff --git a/.kokoro/samples/python3.6/periodic-head.cfg b/.kokoro/samples/python3.6/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.6/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.6/periodic.cfg b/.kokoro/samples/python3.6/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.6/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.6/presubmit.cfg b/.kokoro/samples/python3.6/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.6/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 8a324c9..2c6500c 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -33,7 +33,7 @@ export PYTHONUNBUFFERED=1
env | grep KOKORO
# Install nox
-python3.6 -m pip install --upgrade --quiet nox
+python3.9 -m pip install --upgrade --quiet nox
# Use secrets acessor service account to get secrets
if [[ -f "${KOKORO_GFILE_DIR}/secrets_viewer_service_account.json" ]]; then
@@ -76,7 +76,7 @@ for file in samples/**/requirements.txt; do
echo "------------------------------------------------------------"
# Use nox to execute the tests for the project.
- python3.6 -m nox -s "$RUN_TESTS_SESSION"
+ python3.9 -m nox -s "$RUN_TESTS_SESSION"
EXIT=$?
# If this is a periodic build, send the test log to the FlakyBot.
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 73c2ae2..1cfccd9 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.6, 3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.
+ 3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -221,13 +221,11 @@ Supported Python Versions
We support:
-- `Python 3.6`_
- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
- `Python 3.10`_
-.. _Python 3.6: https://docs.python.org/3.6/
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
@@ -239,7 +237,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_.
.. _config: https://github.com/googleapis/python-cloud-core/blob/main/noxfile.py
-We also explicitly decided to support Python 3 beginning with version 3.6.
+We also explicitly decided to support Python 3 beginning with version 3.7.
Reasons for this include:
- Encouraging use of newest versions of Python 3
diff --git a/README.rst b/README.rst
index ab2f629..4a3b2b3 100644
--- a/README.rst
+++ b/README.rst
@@ -32,9 +32,12 @@ to `Python Development Environment Setup Guide`_ for Google Cloud Platform.
Supported Python Versions
-------------------------
-Python >= 3.6
+Python >= 3.7
Unsupported Python Versions
---------------------------
Python == 2.7: the last version of this library which supported Python 2.7
is ``google.cloud.core 1.7.2``.
+
+Python == 3.6: the last version of this library which supported Python 3.6
+is ``google.cloud.core 2.3.1``.
diff --git a/owlbot.py b/owlbot.py
index 49c6c49..1006250 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -26,7 +26,6 @@
templated_files = common.py_library(
microgenerator=True,
cov_level=100,
- unit_test_python_versions=["3.6", "3.7", "3.8", "3.9", "3.10"],
)
s.move(
templated_files,
@@ -36,6 +35,7 @@
".flake8",
".coveragerc",
"setup.cfg",
+ "README.rst",
],
)
diff --git a/scripts/readme-gen/templates/install_deps.tmpl.rst b/scripts/readme-gen/templates/install_deps.tmpl.rst
index 275d649..6f069c6 100644
--- a/scripts/readme-gen/templates/install_deps.tmpl.rst
+++ b/scripts/readme-gen/templates/install_deps.tmpl.rst
@@ -12,7 +12,7 @@ Install Dependencies
.. _Python Development Environment Setup Guide:
https://cloud.google.com/python/setup
-#. Create a virtualenv. Samples are compatible with Python 3.6+.
+#. Create a virtualenv. Samples are compatible with Python 3.7+.
.. code-block:: bash
diff --git a/setup.py b/setup.py
index 55100a3..06852b8 100644
--- a/setup.py
+++ b/setup.py
@@ -28,10 +28,10 @@
# 'Development Status :: 5 - Production/Stable'
release_status = "Development Status :: 5 - Production/Stable"
dependencies = [
- "google-api-core >= 1.31.5, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
+ "google-api-core >= 1.31.6, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
"google-auth >= 1.25.0, < 3.0dev",
]
-extras = {"grpc": "grpcio >= 1.8.2, < 2.0dev"}
+extras = {"grpc": "grpcio >= 1.38.0, < 2.0dev"}
# Setup boilerplate below this line.
@@ -74,7 +74,6 @@
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
@@ -87,7 +86,7 @@
namespace_packages=namespaces,
install_requires=dependencies,
extras_require=extras,
- python_requires=">=3.6",
+ python_requires=">=3.7",
include_package_data=True,
zip_safe=False,
)
diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt
deleted file mode 100644
index 8b2701c..0000000
--- a/testing/constraints-3.6.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# This constraints file is used to check that lower bounds
-# are correct in setup.py
-# List *all* library dependencies and extras in this file.
-# Pin the version to the lower bound.
-#
-# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
-# Then this file should have foo==1.14.0
-google-api-core==1.31.5
-google-auth==1.25.0
-grpcio==1.8.2
diff --git a/testing/constraints-3.7.txt b/testing/constraints-3.7.txt
index e69de29..2964afa 100644
--- a/testing/constraints-3.7.txt
+++ b/testing/constraints-3.7.txt
@@ -0,0 +1,10 @@
+# This constraints file is used to check that lower bounds
+# are correct in setup.py
+# List *all* library dependencies and extras in this file.
+# Pin the version to the lower bound.
+#
+# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
+# Then this file should have foo==1.14.0
+google-api-core==1.31.6
+google-auth==1.25.0
+grpcio==1.38.0
From 2dd10a7b737efc6b45cd9ff0d13efeaaa6cbdc88 Mon Sep 17 00:00:00 2001
From: WhiteSource Renovate
Date: Fri, 15 Jul 2022 17:10:54 +0200
Subject: [PATCH 078/158] chore(deps): update actions/setup-python action to v4
(#197)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(deps): update actions/setup-python action to v4
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/workflows/mypy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index e67dcbc..f08164f 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -10,7 +10,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: "3.7"
- name: Install nox
From 57cb3ca14f058c326b15478cd4eacea291020a3e Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 18 Jul 2022 09:15:01 -0400
Subject: [PATCH 079/158] chore(main): release 2.3.2 (#202)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18e8b16..5c41077 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.3.2](https://github.com/googleapis/python-cloud-core/compare/v2.3.1...v2.3.2) (2022-07-15)
+
+
+### Bug Fixes
+
+* require python 3.7+ ([#201](https://github.com/googleapis/python-cloud-core/issues/201)) ([3277c60](https://github.com/googleapis/python-cloud-core/commit/3277c60102803deaae17f665b3f2f80087dd1e0f))
+
## [2.3.1](https://github.com/googleapis/python-cloud-core/compare/v2.3.0...v2.3.1) (2022-06-03)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 474ccbc..ba759b6 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.3.1"
+__version__ = "2.3.2"
From 7bb2f9f60b4c6411d15733d63914b4a8f715edf4 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 9 Aug 2022 21:41:52 -0400
Subject: [PATCH 080/158] chore(deps): update actions/setup-python action to v4
[autoapprove] (#209)
* chore(deps): update actions/setup-python action to v4 [autoapprove]
Source-Link: https://github.com/googleapis/synthtool/commit/8e55b327bae44b6640c7ab4be91df85fc4d6fe8a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:c6c965a4bf40c19011b11f87dbc801a66d3a23fbc6704102be064ef31c51f1c3
* update lint github action to reflect interpreter used
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/docs.yml | 4 ++--
.github/workflows/lint.yml | 4 ++--
.github/workflows/unittest.yml | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 1ce6085..c701359 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c
-# created: 2022-07-05T18:31:20.838186805Z
+ digest: sha256:c6c965a4bf40c19011b11f87dbc801a66d3a23fbc6704102be064ef31c51f1c3
+# created: 2022-08-09T15:58:56.463048506Z
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index b46d730..7092a13 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -10,7 +10,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install nox
@@ -26,7 +26,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install nox
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index f512a49..eae860a 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -10,9 +10,9 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.7"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 5531b01..87ade4d 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -13,7 +13,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install nox
@@ -39,7 +39,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install coverage
From 2cd596391f124565d8ec0d9ac4f78b80b8e5ed0c Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 24 Aug 2022 19:34:33 -0400
Subject: [PATCH 081/158] chore: remove 'pip install' statements from
python_library templates [autoapprove] (#211)
* chore(python): exclude path in renovate.json [autoapprove]
Source-Link: https://github.com/googleapis/synthtool/commit/69fabaee9eca28af7ecaa02c86895e606fbbebd6
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:562802bfac02e012a6ac34eda282f81d06e77326b82a32d7bbb1369ff552b387
* fix lint
* fix lint
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +-
.github/workflows/lint.yml | 2 +-
.kokoro/publish-docs.sh | 4 +-
.kokoro/release.sh | 5 +-
.kokoro/requirements.in | 8 +
.kokoro/requirements.txt | 464 +++++++++++++++++++++++++++++++++++++
noxfile.py | 4 +-
renovate.json | 2 +-
8 files changed, 480 insertions(+), 13 deletions(-)
create mode 100644 .kokoro/requirements.in
create mode 100644 .kokoro/requirements.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index c701359..c6acdf3 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:c6c965a4bf40c19011b11f87dbc801a66d3a23fbc6704102be064ef31c51f1c3
-# created: 2022-08-09T15:58:56.463048506Z
+ digest: sha256:562802bfac02e012a6ac34eda282f81d06e77326b82a32d7bbb1369ff552b387
+# created: 2022-08-24T17:07:22.006876712Z
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index eae860a..d2aee5b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.7"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
index 8acb14e..1c4d623 100755
--- a/.kokoro/publish-docs.sh
+++ b/.kokoro/publish-docs.sh
@@ -21,14 +21,12 @@ export PYTHONUNBUFFERED=1
export PATH="${HOME}/.local/bin:${PATH}"
# Install nox
-python3 -m pip install --user --upgrade --quiet nox
+python3 -m pip install --require-hashes -r .kokoro/requirements.txt
python3 -m nox --version
# build docs
nox -s docs
-python3 -m pip install --user gcp-docuploader
-
# create metadata
python3 -m docuploader create-metadata \
--name=$(jq --raw-output '.name // empty' .repo-metadata.json) \
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index 32ad624..0e05dde 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -16,12 +16,9 @@
set -eo pipefail
# Start the releasetool reporter
-python3 -m pip install gcp-releasetool
+python3 -m pip install --require-hashes -r .kokoro/requirements.txt
python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script
-# Ensure that we have the latest versions of Twine, Wheel, and Setuptools.
-python3 -m pip install --upgrade twine wheel setuptools
-
# Disable buffering, so that the logs stream through.
export PYTHONUNBUFFERED=1
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
new file mode 100644
index 0000000..7718391
--- /dev/null
+++ b/.kokoro/requirements.in
@@ -0,0 +1,8 @@
+gcp-docuploader
+gcp-releasetool
+importlib-metadata
+typing-extensions
+twine
+wheel
+setuptools
+nox
\ No newline at end of file
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
new file mode 100644
index 0000000..c4b824f
--- /dev/null
+++ b/.kokoro/requirements.txt
@@ -0,0 +1,464 @@
+#
+# This file is autogenerated by pip-compile with python 3.10
+# To update, run:
+#
+# pip-compile --allow-unsafe --generate-hashes requirements.in
+#
+argcomplete==2.0.0 \
+ --hash=sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20 \
+ --hash=sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e
+ # via nox
+attrs==22.1.0 \
+ --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \
+ --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c
+ # via gcp-releasetool
+bleach==5.0.1 \
+ --hash=sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a \
+ --hash=sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c
+ # via readme-renderer
+cachetools==5.2.0 \
+ --hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \
+ --hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db
+ # via google-auth
+certifi==2022.6.15 \
+ --hash=sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d \
+ --hash=sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412
+ # via requests
+cffi==1.15.1 \
+ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
+ --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \
+ --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \
+ --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \
+ --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \
+ --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \
+ --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \
+ --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \
+ --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \
+ --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \
+ --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \
+ --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \
+ --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \
+ --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \
+ --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \
+ --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \
+ --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \
+ --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \
+ --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \
+ --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \
+ --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \
+ --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \
+ --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \
+ --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \
+ --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \
+ --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \
+ --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \
+ --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \
+ --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \
+ --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \
+ --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \
+ --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \
+ --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \
+ --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \
+ --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \
+ --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \
+ --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \
+ --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \
+ --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \
+ --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \
+ --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \
+ --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \
+ --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \
+ --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \
+ --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \
+ --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \
+ --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \
+ --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \
+ --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \
+ --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \
+ --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \
+ --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \
+ --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \
+ --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \
+ --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \
+ --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \
+ --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \
+ --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \
+ --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \
+ --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \
+ --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \
+ --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \
+ --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
+ --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
+ # via cryptography
+charset-normalizer==2.1.1 \
+ --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
+ --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f
+ # via requests
+click==8.0.4 \
+ --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \
+ --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb
+ # via
+ # gcp-docuploader
+ # gcp-releasetool
+colorlog==6.6.0 \
+ --hash=sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8 \
+ --hash=sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e
+ # via
+ # gcp-docuploader
+ # nox
+commonmark==0.9.1 \
+ --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
+ --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
+ # via rich
+cryptography==37.0.4 \
+ --hash=sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59 \
+ --hash=sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596 \
+ --hash=sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3 \
+ --hash=sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5 \
+ --hash=sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab \
+ --hash=sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884 \
+ --hash=sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82 \
+ --hash=sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b \
+ --hash=sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441 \
+ --hash=sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa \
+ --hash=sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d \
+ --hash=sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b \
+ --hash=sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a \
+ --hash=sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6 \
+ --hash=sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157 \
+ --hash=sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280 \
+ --hash=sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282 \
+ --hash=sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67 \
+ --hash=sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8 \
+ --hash=sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046 \
+ --hash=sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327 \
+ --hash=sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9
+ # via
+ # gcp-releasetool
+ # secretstorage
+distlib==0.3.5 \
+ --hash=sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe \
+ --hash=sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c
+ # via virtualenv
+docutils==0.19 \
+ --hash=sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 \
+ --hash=sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc
+ # via readme-renderer
+filelock==3.8.0 \
+ --hash=sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc \
+ --hash=sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4
+ # via virtualenv
+gcp-docuploader==0.6.3 \
+ --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \
+ --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b
+ # via -r requirements.in
+gcp-releasetool==1.8.6 \
+ --hash=sha256:42e51ab8e2e789bc8e22a03c09352962cd3452951c801a2230d564816630304a \
+ --hash=sha256:a3518b79d1b243c494eac392a01c7fd65187fd6d52602dcab9b529bc934d4da1
+ # via -r requirements.in
+google-api-core==2.8.2 \
+ --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \
+ --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50
+ # via
+ # google-cloud-core
+ # google-cloud-storage
+google-auth==2.11.0 \
+ --hash=sha256:be62acaae38d0049c21ca90f27a23847245c9f161ff54ede13af2cb6afecbac9 \
+ --hash=sha256:ed65ecf9f681832298e29328e1ef0a3676e3732b2e56f41532d45f70a22de0fb
+ # via
+ # gcp-releasetool
+ # google-api-core
+ # google-cloud-core
+ # google-cloud-storage
+google-cloud-core==2.3.2 \
+ --hash=sha256:8417acf6466be2fa85123441696c4badda48db314c607cf1e5d543fa8bdc22fe \
+ --hash=sha256:b9529ee7047fd8d4bf4a2182de619154240df17fbe60ead399078c1ae152af9a
+ # via google-cloud-storage
+google-cloud-storage==2.5.0 \
+ --hash=sha256:19a26c66c317ce542cea0830b7e787e8dac2588b6bfa4d3fd3b871ba16305ab0 \
+ --hash=sha256:382f34b91de2212e3c2e7b40ec079d27ee2e3dbbae99b75b1bcd8c63063ce235
+ # via gcp-docuploader
+google-crc32c==1.3.0 \
+ --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \
+ --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \
+ --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \
+ --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \
+ --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \
+ --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \
+ --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \
+ --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \
+ --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \
+ --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \
+ --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \
+ --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \
+ --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \
+ --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \
+ --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \
+ --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \
+ --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \
+ --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \
+ --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \
+ --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \
+ --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \
+ --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \
+ --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \
+ --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \
+ --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \
+ --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \
+ --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \
+ --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \
+ --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \
+ --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \
+ --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \
+ --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \
+ --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \
+ --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \
+ --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \
+ --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \
+ --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \
+ --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \
+ --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \
+ --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \
+ --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \
+ --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \
+ --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3
+ # via google-resumable-media
+google-resumable-media==2.3.3 \
+ --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \
+ --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5
+ # via google-cloud-storage
+googleapis-common-protos==1.56.4 \
+ --hash=sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394 \
+ --hash=sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417
+ # via google-api-core
+idna==3.3 \
+ --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \
+ --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d
+ # via requests
+importlib-metadata==4.12.0 \
+ --hash=sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670 \
+ --hash=sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23
+ # via
+ # -r requirements.in
+ # twine
+jeepney==0.8.0 \
+ --hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
+ --hash=sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755
+ # via
+ # keyring
+ # secretstorage
+jinja2==3.1.2 \
+ --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
+ --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
+ # via gcp-releasetool
+keyring==23.8.2 \
+ --hash=sha256:0d9973f8891850f1ade5f26aafd06bb16865fbbae3fc56b0defb6a14a2624003 \
+ --hash=sha256:10d2a8639663fe2090705a00b8c47c687cacdf97598ea9c11456679fa974473a
+ # via
+ # gcp-releasetool
+ # twine
+markupsafe==2.1.1 \
+ --hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \
+ --hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \
+ --hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \
+ --hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \
+ --hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \
+ --hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \
+ --hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \
+ --hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \
+ --hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \
+ --hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \
+ --hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \
+ --hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \
+ --hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \
+ --hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \
+ --hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \
+ --hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \
+ --hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \
+ --hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \
+ --hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \
+ --hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \
+ --hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \
+ --hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \
+ --hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \
+ --hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \
+ --hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \
+ --hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \
+ --hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \
+ --hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \
+ --hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \
+ --hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \
+ --hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \
+ --hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \
+ --hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \
+ --hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \
+ --hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \
+ --hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \
+ --hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \
+ --hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \
+ --hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \
+ --hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7
+ # via jinja2
+nox==2022.8.7 \
+ --hash=sha256:1b894940551dc5c389f9271d197ca5d655d40bdc6ccf93ed6880e4042760a34b \
+ --hash=sha256:96cca88779e08282a699d672258ec01eb7c792d35bbbf538c723172bce23212c
+ # via -r requirements.in
+packaging==21.3 \
+ --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \
+ --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522
+ # via
+ # gcp-releasetool
+ # nox
+pkginfo==1.8.3 \
+ --hash=sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594 \
+ --hash=sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c
+ # via twine
+platformdirs==2.5.2 \
+ --hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \
+ --hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19
+ # via virtualenv
+protobuf==3.20.1 \
+ --hash=sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf \
+ --hash=sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f \
+ --hash=sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f \
+ --hash=sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7 \
+ --hash=sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996 \
+ --hash=sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067 \
+ --hash=sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c \
+ --hash=sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7 \
+ --hash=sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9 \
+ --hash=sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c \
+ --hash=sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739 \
+ --hash=sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91 \
+ --hash=sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c \
+ --hash=sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153 \
+ --hash=sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9 \
+ --hash=sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388 \
+ --hash=sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e \
+ --hash=sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab \
+ --hash=sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde \
+ --hash=sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531 \
+ --hash=sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8 \
+ --hash=sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7 \
+ --hash=sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20 \
+ --hash=sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3
+ # via
+ # gcp-docuploader
+ # gcp-releasetool
+ # google-api-core
+py==1.11.0 \
+ --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \
+ --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378
+ # via nox
+pyasn1==0.4.8 \
+ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
+ --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
+ # via
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.2.8 \
+ --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \
+ --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74
+ # via google-auth
+pycparser==2.21 \
+ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
+ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
+ # via cffi
+pygments==2.13.0 \
+ --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \
+ --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42
+ # via
+ # readme-renderer
+ # rich
+pyjwt==2.4.0 \
+ --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \
+ --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba
+ # via gcp-releasetool
+pyparsing==3.0.9 \
+ --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \
+ --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc
+ # via packaging
+pyperclip==1.8.2 \
+ --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57
+ # via gcp-releasetool
+python-dateutil==2.8.2 \
+ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
+ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+ # via gcp-releasetool
+readme-renderer==37.0 \
+ --hash=sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5 \
+ --hash=sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69
+ # via twine
+requests==2.28.1 \
+ --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \
+ --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349
+ # via
+ # gcp-releasetool
+ # google-api-core
+ # google-cloud-storage
+ # requests-toolbelt
+ # twine
+requests-toolbelt==0.9.1 \
+ --hash=sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f \
+ --hash=sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0
+ # via twine
+rfc3986==2.0.0 \
+ --hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \
+ --hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c
+ # via twine
+rich==12.5.1 \
+ --hash=sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb \
+ --hash=sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca
+ # via twine
+rsa==4.9 \
+ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
+ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21
+ # via google-auth
+secretstorage==3.3.3 \
+ --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \
+ --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99
+ # via keyring
+six==1.16.0 \
+ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
+ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
+ # via
+ # bleach
+ # gcp-docuploader
+ # google-auth
+ # python-dateutil
+twine==4.0.1 \
+ --hash=sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e \
+ --hash=sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0
+ # via -r requirements.in
+typing-extensions==4.3.0 \
+ --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \
+ --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6
+ # via -r requirements.in
+urllib3==1.26.12 \
+ --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \
+ --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997
+ # via
+ # requests
+ # twine
+virtualenv==20.16.3 \
+ --hash=sha256:4193b7bc8a6cd23e4eb251ac64f29b4398ab2c233531e66e40b19a6b7b0d30c1 \
+ --hash=sha256:d86ea0bb50e06252d79e6c241507cb904fcd66090c3271381372d6221a3970f9
+ # via nox
+webencodings==0.5.1 \
+ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
+ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
+ # via bleach
+wheel==0.37.1 \
+ --hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \
+ --hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4
+ # via -r requirements.in
+zipp==3.8.1 \
+ --hash=sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2 \
+ --hash=sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009
+ # via importlib-metadata
+
+# The following packages are considered to be unsafe in a requirements file:
+setuptools==65.2.0 \
+ --hash=sha256:7f4bc85450898a09f76ebf28b72fa25bc7111f6c7d665d514a60bba9c75ef2a9 \
+ --hash=sha256:a3ca5857c89f82f5c9410e8508cb32f4872a3bafd4aa7ae122a24ca33bccc750
+ # via -r requirements.in
diff --git a/noxfile.py b/noxfile.py
index 90baaf0..712ecb2 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -26,7 +26,7 @@
CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
-@nox.session(python=DEFAULT_PYTHON_VERSION)
+@nox.session(python="3.10")
def lint(session):
"""Run linters.
@@ -97,7 +97,7 @@ def unit(session):
default(session)
-@nox.session(python=DEFAULT_PYTHON_VERSION)
+@nox.session(python="3.10")
def lint_setup_py(session):
"""Verify that setup.py is valid (including RST check)."""
diff --git a/renovate.json b/renovate.json
index c21036d..566a70f 100644
--- a/renovate.json
+++ b/renovate.json
@@ -5,7 +5,7 @@
":preserveSemverRanges",
":disableDependencyDashboard"
],
- "ignorePaths": [".pre-commit-config.yaml"],
+ "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt"],
"pip_requirements": {
"fileMatch": ["requirements-test.txt", "samples/[\\S/]*constraints.txt", "samples/[\\S/]*constraints-test.txt"]
}
From d7d38056935dfad7d21c3b703fb412a86910c54e Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 30 Aug 2022 08:45:25 -0400
Subject: [PATCH 082/158] chore(python): exclude `grpcio==1.49.0rc1` in tests
(#213)
Source-Link: https://github.com/googleapis/synthtool/commit/c4dd5953003d13b239f872d329c3146586bb417e
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ce3c1686bc81145c81dd269bd12c4025c6b275b22d14641358827334fddb1d72
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index c6acdf3..23e106b 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:562802bfac02e012a6ac34eda282f81d06e77326b82a32d7bbb1369ff552b387
-# created: 2022-08-24T17:07:22.006876712Z
+ digest: sha256:ce3c1686bc81145c81dd269bd12c4025c6b275b22d14641358827334fddb1d72
+# created: 2022-08-29T17:28:30.441852797Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index c4b824f..4b29ef2 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -136,9 +136,9 @@ cryptography==37.0.4 \
# via
# gcp-releasetool
# secretstorage
-distlib==0.3.5 \
- --hash=sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe \
- --hash=sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c
+distlib==0.3.6 \
+ --hash=sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46 \
+ --hash=sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e
# via virtualenv
docutils==0.19 \
--hash=sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 \
From 612058d3938f572a86038ec7e676391f8fe5f1c1 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 1 Sep 2022 15:04:10 -0400
Subject: [PATCH 083/158] ci(python): fix path to requirements.txt in release
script (#214)
Source-Link: https://github.com/googleapis/synthtool/commit/fdba3ed145bdb2f4f3eff434d4284b1d03b80d34
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:1f0dbd02745fb7cf255563dab5968345989308544e52b7f460deadd5e78e63b0
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 3 +--
.kokoro/release.sh | 2 +-
.kokoro/requirements.txt | 24 ++++++++++++------------
3 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 23e106b..0d9eb2a 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:ce3c1686bc81145c81dd269bd12c4025c6b275b22d14641358827334fddb1d72
-# created: 2022-08-29T17:28:30.441852797Z
+ digest: sha256:1f0dbd02745fb7cf255563dab5968345989308544e52b7f460deadd5e78e63b0
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index 0e05dde..4f9e137 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -16,7 +16,7 @@
set -eo pipefail
# Start the releasetool reporter
-python3 -m pip install --require-hashes -r .kokoro/requirements.txt
+python3 -m pip install --require-hashes -r github/python-cloud-core/.kokoro/requirements.txt
python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script
# Disable buffering, so that the logs stream through.
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 4b29ef2..92b2f72 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -100,9 +100,9 @@ click==8.0.4 \
# via
# gcp-docuploader
# gcp-releasetool
-colorlog==6.6.0 \
- --hash=sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8 \
- --hash=sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e
+colorlog==6.7.0 \
+ --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \
+ --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5
# via
# gcp-docuploader
# nox
@@ -152,9 +152,9 @@ gcp-docuploader==0.6.3 \
--hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \
--hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b
# via -r requirements.in
-gcp-releasetool==1.8.6 \
- --hash=sha256:42e51ab8e2e789bc8e22a03c09352962cd3452951c801a2230d564816630304a \
- --hash=sha256:a3518b79d1b243c494eac392a01c7fd65187fd6d52602dcab9b529bc934d4da1
+gcp-releasetool==1.8.7 \
+ --hash=sha256:3d2a67c9db39322194afb3b427e9cb0476ce8f2a04033695f0aeb63979fc2b37 \
+ --hash=sha256:5e4d28f66e90780d77f3ecf1e9155852b0c3b13cbccb08ab07e66b2357c8da8d
# via -r requirements.in
google-api-core==2.8.2 \
--hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \
@@ -251,9 +251,9 @@ jinja2==3.1.2 \
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
# via gcp-releasetool
-keyring==23.8.2 \
- --hash=sha256:0d9973f8891850f1ade5f26aafd06bb16865fbbae3fc56b0defb6a14a2624003 \
- --hash=sha256:10d2a8639663fe2090705a00b8c47c687cacdf97598ea9c11456679fa974473a
+keyring==23.9.0 \
+ --hash=sha256:4c32a31174faaee48f43a7e2c7e9c3216ec5e95acf22a2bebfb4a1d05056ee44 \
+ --hash=sha256:98f060ec95ada2ab910c195a2d4317be6ef87936a766b239c46aa3c7aac4f0db
# via
# gcp-releasetool
# twine
@@ -440,9 +440,9 @@ urllib3==1.26.12 \
# via
# requests
# twine
-virtualenv==20.16.3 \
- --hash=sha256:4193b7bc8a6cd23e4eb251ac64f29b4398ab2c233531e66e40b19a6b7b0d30c1 \
- --hash=sha256:d86ea0bb50e06252d79e6c241507cb904fcd66090c3271381372d6221a3970f9
+virtualenv==20.16.4 \
+ --hash=sha256:014f766e4134d0008dcaa1f95bafa0fb0f575795d07cae50b1bee514185d6782 \
+ --hash=sha256:035ed57acce4ac35c82c9d8802202b0e71adac011a511ff650cbcf9635006a22
# via nox
webencodings==0.5.1 \
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
From 721902929cf38085118f03eef1ddca87fa3c4636 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 2 Sep 2022 00:34:31 +0000
Subject: [PATCH 084/158] chore(python): update .kokoro/requirements.txt (#215)
Source-Link: https://github.com/googleapis/synthtool/commit/703554a14c7479542335b62fa69279f93a9e38ec
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:94961fdc5c9ca6d13530a6a414a49d2f607203168215d074cdb0a1df9ec31c0b
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.txt | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 0d9eb2a..2fa0f7c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:1f0dbd02745fb7cf255563dab5968345989308544e52b7f460deadd5e78e63b0
+ digest: sha256:94961fdc5c9ca6d13530a6a414a49d2f607203168215d074cdb0a1df9ec31c0b
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 92b2f72..385f2d4 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -241,6 +241,10 @@ importlib-metadata==4.12.0 \
# via
# -r requirements.in
# twine
+jaraco-classes==3.2.2 \
+ --hash=sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594 \
+ --hash=sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647
+ # via keyring
jeepney==0.8.0 \
--hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
--hash=sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755
@@ -299,6 +303,10 @@ markupsafe==2.1.1 \
--hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \
--hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7
# via jinja2
+more-itertools==8.14.0 \
+ --hash=sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2 \
+ --hash=sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750
+ # via jaraco-classes
nox==2022.8.7 \
--hash=sha256:1b894940551dc5c389f9271d197ca5d655d40bdc6ccf93ed6880e4042760a34b \
--hash=sha256:96cca88779e08282a699d672258ec01eb7c792d35bbbf538c723172bce23212c
From ff353d955410a52ee13ebe988c97621508640b63 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 2 Sep 2022 18:50:18 +0000
Subject: [PATCH 085/158] chore(python): exclude setup.py in renovate config
(#217)
Source-Link: https://github.com/googleapis/synthtool/commit/56da63e80c384a871356d1ea6640802017f213b4
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:993a058718e84a82fda04c3177e58f0a43281a996c7c395e0a56ccc4d6d210d7
---
.github/.OwlBot.lock.yaml | 2 +-
renovate.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 2fa0f7c..b8dcb4a 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:94961fdc5c9ca6d13530a6a414a49d2f607203168215d074cdb0a1df9ec31c0b
+ digest: sha256:993a058718e84a82fda04c3177e58f0a43281a996c7c395e0a56ccc4d6d210d7
diff --git a/renovate.json b/renovate.json
index 566a70f..39b2a0e 100644
--- a/renovate.json
+++ b/renovate.json
@@ -5,7 +5,7 @@
":preserveSemverRanges",
":disableDependencyDashboard"
],
- "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt"],
+ "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt", "setup.py"],
"pip_requirements": {
"fileMatch": ["requirements-test.txt", "samples/[\\S/]*constraints.txt", "samples/[\\S/]*constraints-test.txt"]
}
From 7e29c4c2a8c316b29ef4c15151112826395308b8 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 29 Sep 2022 15:38:45 -0400
Subject: [PATCH 086/158] chore: update dependency protobuf >= 3.20.2 (#219)
Source-Link: https://github.com/googleapis/synthtool/commit/f58d3135a2fab20e225d98741dbc06d57459b816
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:7a40313731a7cb1454eef6b33d3446ebb121836738dc3ab3d2d3ded5268c35b6
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.txt | 49 +++++++++++++++++++--------------------
2 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index b8dcb4a..3815c98 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:993a058718e84a82fda04c3177e58f0a43281a996c7c395e0a56ccc4d6d210d7
+ digest: sha256:7a40313731a7cb1454eef6b33d3446ebb121836738dc3ab3d2d3ded5268c35b6
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 385f2d4..d15994b 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -325,31 +325,30 @@ platformdirs==2.5.2 \
--hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \
--hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19
# via virtualenv
-protobuf==3.20.1 \
- --hash=sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf \
- --hash=sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f \
- --hash=sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f \
- --hash=sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7 \
- --hash=sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996 \
- --hash=sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067 \
- --hash=sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c \
- --hash=sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7 \
- --hash=sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9 \
- --hash=sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c \
- --hash=sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739 \
- --hash=sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91 \
- --hash=sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c \
- --hash=sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153 \
- --hash=sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9 \
- --hash=sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388 \
- --hash=sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e \
- --hash=sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab \
- --hash=sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde \
- --hash=sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531 \
- --hash=sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8 \
- --hash=sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7 \
- --hash=sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20 \
- --hash=sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3
+protobuf==3.20.2 \
+ --hash=sha256:03d76b7bd42ac4a6e109742a4edf81ffe26ffd87c5993126d894fe48a120396a \
+ --hash=sha256:09e25909c4297d71d97612f04f41cea8fa8510096864f2835ad2f3b3df5a5559 \
+ --hash=sha256:18e34a10ae10d458b027d7638a599c964b030c1739ebd035a1dfc0e22baa3bfe \
+ --hash=sha256:291fb4307094bf5ccc29f424b42268640e00d5240bf0d9b86bf3079f7576474d \
+ --hash=sha256:2c0b040d0b5d5d207936ca2d02f00f765906622c07d3fa19c23a16a8ca71873f \
+ --hash=sha256:384164994727f274cc34b8abd41a9e7e0562801361ee77437099ff6dfedd024b \
+ --hash=sha256:3cb608e5a0eb61b8e00fe641d9f0282cd0eedb603be372f91f163cbfbca0ded0 \
+ --hash=sha256:5d9402bf27d11e37801d1743eada54372f986a372ec9679673bfcc5c60441151 \
+ --hash=sha256:712dca319eee507a1e7df3591e639a2b112a2f4a62d40fe7832a16fd19151750 \
+ --hash=sha256:7a5037af4e76c975b88c3becdf53922b5ffa3f2cddf657574a4920a3b33b80f3 \
+ --hash=sha256:8228e56a865c27163d5d1d1771d94b98194aa6917bcfb6ce139cbfa8e3c27334 \
+ --hash=sha256:84a1544252a933ef07bb0b5ef13afe7c36232a774affa673fc3636f7cee1db6c \
+ --hash=sha256:84fe5953b18a383fd4495d375fe16e1e55e0a3afe7b4f7b4d01a3a0649fcda9d \
+ --hash=sha256:9c673c8bfdf52f903081816b9e0e612186684f4eb4c17eeb729133022d6032e3 \
+ --hash=sha256:9f876a69ca55aed879b43c295a328970306e8e80a263ec91cf6e9189243c613b \
+ --hash=sha256:a9e5ae5a8e8985c67e8944c23035a0dff2c26b0f5070b2f55b217a1c33bbe8b1 \
+ --hash=sha256:b4fdb29c5a7406e3f7ef176b2a7079baa68b5b854f364c21abe327bbeec01cdb \
+ --hash=sha256:c184485e0dfba4dfd451c3bd348c2e685d6523543a0f91b9fd4ae90eb09e8422 \
+ --hash=sha256:c9cdf251c582c16fd6a9f5e95836c90828d51b0069ad22f463761d27c6c19019 \
+ --hash=sha256:e39cf61bb8582bda88cdfebc0db163b774e7e03364bbf9ce1ead13863e81e359 \
+ --hash=sha256:e8fbc522303e09036c752a0afcc5c0603e917222d8bedc02813fd73b4b4ed804 \
+ --hash=sha256:f34464ab1207114e73bba0794d1257c150a2b89b7a9faf504e00af7c9fd58978 \
+ --hash=sha256:f52dabc96ca99ebd2169dadbe018824ebda08a795c7684a0b7d203a290f3adb0
# via
# gcp-docuploader
# gcp-releasetool
From c194fc4caf7f3014e77563cbc123ea74014ded8b Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sat, 19 Nov 2022 11:09:06 -0500
Subject: [PATCH 087/158] chore(python): update dependencies in
.kokoro/requirements.txt (#220)
Source-Link: https://github.com/googleapis/synthtool/commit/e3a1277ac35fc88c09db1930533e24292b132ced
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.txt | 325 +++++++++++++++++++++-----------------
2 files changed, 178 insertions(+), 149 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 3815c98..12edee7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:7a40313731a7cb1454eef6b33d3446ebb121836738dc3ab3d2d3ded5268c35b6
+ digest: sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index d15994b..31425f1 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -20,9 +20,9 @@ cachetools==5.2.0 \
--hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \
--hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db
# via google-auth
-certifi==2022.6.15 \
- --hash=sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d \
- --hash=sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412
+certifi==2022.9.24 \
+ --hash=sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14 \
+ --hash=sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382
# via requests
cffi==1.15.1 \
--hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
@@ -110,29 +110,33 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==37.0.4 \
- --hash=sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59 \
- --hash=sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596 \
- --hash=sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3 \
- --hash=sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5 \
- --hash=sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab \
- --hash=sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884 \
- --hash=sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82 \
- --hash=sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b \
- --hash=sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441 \
- --hash=sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa \
- --hash=sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d \
- --hash=sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b \
- --hash=sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a \
- --hash=sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6 \
- --hash=sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157 \
- --hash=sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280 \
- --hash=sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282 \
- --hash=sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67 \
- --hash=sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8 \
- --hash=sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046 \
- --hash=sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327 \
- --hash=sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9
+cryptography==38.0.3 \
+ --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \
+ --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \
+ --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \
+ --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \
+ --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \
+ --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \
+ --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \
+ --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \
+ --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \
+ --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \
+ --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \
+ --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \
+ --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \
+ --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \
+ --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \
+ --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \
+ --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \
+ --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \
+ --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \
+ --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \
+ --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \
+ --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \
+ --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \
+ --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \
+ --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \
+ --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722
# via
# gcp-releasetool
# secretstorage
@@ -148,23 +152,23 @@ filelock==3.8.0 \
--hash=sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc \
--hash=sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4
# via virtualenv
-gcp-docuploader==0.6.3 \
- --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \
- --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b
+gcp-docuploader==0.6.4 \
+ --hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \
+ --hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf
# via -r requirements.in
-gcp-releasetool==1.8.7 \
- --hash=sha256:3d2a67c9db39322194afb3b427e9cb0476ce8f2a04033695f0aeb63979fc2b37 \
- --hash=sha256:5e4d28f66e90780d77f3ecf1e9155852b0c3b13cbccb08ab07e66b2357c8da8d
+gcp-releasetool==1.9.1 \
+ --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \
+ --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b
# via -r requirements.in
-google-api-core==2.8.2 \
- --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \
- --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50
+google-api-core==2.10.2 \
+ --hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \
+ --hash=sha256:34f24bd1d5f72a8c4519773d99ca6bf080a6c4e041b4e9f024fe230191dda62e
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.11.0 \
- --hash=sha256:be62acaae38d0049c21ca90f27a23847245c9f161ff54ede13af2cb6afecbac9 \
- --hash=sha256:ed65ecf9f681832298e29328e1ef0a3676e3732b2e56f41532d45f70a22de0fb
+google-auth==2.14.0 \
+ --hash=sha256:1ad5b0e6eba5f69645971abb3d2c197537d5914070a8c6d30299dfdb07c5c700 \
+ --hash=sha256:cf24817855d874ede2efd071aa22125445f555de1685b739a9782fcf408c2a3d
# via
# gcp-releasetool
# google-api-core
@@ -178,72 +182,97 @@ google-cloud-storage==2.5.0 \
--hash=sha256:19a26c66c317ce542cea0830b7e787e8dac2588b6bfa4d3fd3b871ba16305ab0 \
--hash=sha256:382f34b91de2212e3c2e7b40ec079d27ee2e3dbbae99b75b1bcd8c63063ce235
# via gcp-docuploader
-google-crc32c==1.3.0 \
- --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \
- --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \
- --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \
- --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \
- --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \
- --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \
- --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \
- --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \
- --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \
- --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \
- --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \
- --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \
- --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \
- --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \
- --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \
- --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \
- --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \
- --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \
- --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \
- --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \
- --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \
- --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \
- --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \
- --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \
- --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \
- --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \
- --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \
- --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \
- --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \
- --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \
- --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \
- --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \
- --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \
- --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \
- --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \
- --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \
- --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \
- --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \
- --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \
- --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \
- --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \
- --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \
- --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3
+google-crc32c==1.5.0 \
+ --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \
+ --hash=sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876 \
+ --hash=sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c \
+ --hash=sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289 \
+ --hash=sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 \
+ --hash=sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02 \
+ --hash=sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f \
+ --hash=sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2 \
+ --hash=sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a \
+ --hash=sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb \
+ --hash=sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210 \
+ --hash=sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5 \
+ --hash=sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee \
+ --hash=sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c \
+ --hash=sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a \
+ --hash=sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314 \
+ --hash=sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd \
+ --hash=sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65 \
+ --hash=sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37 \
+ --hash=sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4 \
+ --hash=sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13 \
+ --hash=sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894 \
+ --hash=sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31 \
+ --hash=sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e \
+ --hash=sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709 \
+ --hash=sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740 \
+ --hash=sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc \
+ --hash=sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d \
+ --hash=sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c \
+ --hash=sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c \
+ --hash=sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d \
+ --hash=sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906 \
+ --hash=sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61 \
+ --hash=sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 \
+ --hash=sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c \
+ --hash=sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a \
+ --hash=sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438 \
+ --hash=sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946 \
+ --hash=sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7 \
+ --hash=sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96 \
+ --hash=sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091 \
+ --hash=sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae \
+ --hash=sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d \
+ --hash=sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88 \
+ --hash=sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2 \
+ --hash=sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd \
+ --hash=sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541 \
+ --hash=sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728 \
+ --hash=sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178 \
+ --hash=sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 \
+ --hash=sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346 \
+ --hash=sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8 \
+ --hash=sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93 \
+ --hash=sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7 \
+ --hash=sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 \
+ --hash=sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462 \
+ --hash=sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94 \
+ --hash=sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd \
+ --hash=sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e \
+ --hash=sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57 \
+ --hash=sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b \
+ --hash=sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9 \
+ --hash=sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a \
+ --hash=sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100 \
+ --hash=sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325 \
+ --hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \
+ --hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \
+ --hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4
# via google-resumable-media
-google-resumable-media==2.3.3 \
- --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \
- --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5
+google-resumable-media==2.4.0 \
+ --hash=sha256:2aa004c16d295c8f6c33b2b4788ba59d366677c0a25ae7382436cb30f776deaa \
+ --hash=sha256:8d5518502f92b9ecc84ac46779bd4f09694ecb3ba38a3e7ca737a86d15cbca1f
# via google-cloud-storage
googleapis-common-protos==1.56.4 \
--hash=sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394 \
--hash=sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417
# via google-api-core
-idna==3.3 \
- --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \
- --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d
+idna==3.4 \
+ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
+ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
# via requests
-importlib-metadata==4.12.0 \
- --hash=sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670 \
- --hash=sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23
+importlib-metadata==5.0.0 \
+ --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \
+ --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43
# via
# -r requirements.in
# twine
-jaraco-classes==3.2.2 \
- --hash=sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594 \
- --hash=sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647
+jaraco-classes==3.2.3 \
+ --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \
+ --hash=sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a
# via keyring
jeepney==0.8.0 \
--hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
@@ -255,9 +284,9 @@ jinja2==3.1.2 \
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
# via gcp-releasetool
-keyring==23.9.0 \
- --hash=sha256:4c32a31174faaee48f43a7e2c7e9c3216ec5e95acf22a2bebfb4a1d05056ee44 \
- --hash=sha256:98f060ec95ada2ab910c195a2d4317be6ef87936a766b239c46aa3c7aac4f0db
+keyring==23.9.3 \
+ --hash=sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0 \
+ --hash=sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5
# via
# gcp-releasetool
# twine
@@ -303,9 +332,9 @@ markupsafe==2.1.1 \
--hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \
--hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7
# via jinja2
-more-itertools==8.14.0 \
- --hash=sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2 \
- --hash=sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750
+more-itertools==9.0.0 \
+ --hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \
+ --hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab
# via jaraco-classes
nox==2022.8.7 \
--hash=sha256:1b894940551dc5c389f9271d197ca5d655d40bdc6ccf93ed6880e4042760a34b \
@@ -325,34 +354,34 @@ platformdirs==2.5.2 \
--hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \
--hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19
# via virtualenv
-protobuf==3.20.2 \
- --hash=sha256:03d76b7bd42ac4a6e109742a4edf81ffe26ffd87c5993126d894fe48a120396a \
- --hash=sha256:09e25909c4297d71d97612f04f41cea8fa8510096864f2835ad2f3b3df5a5559 \
- --hash=sha256:18e34a10ae10d458b027d7638a599c964b030c1739ebd035a1dfc0e22baa3bfe \
- --hash=sha256:291fb4307094bf5ccc29f424b42268640e00d5240bf0d9b86bf3079f7576474d \
- --hash=sha256:2c0b040d0b5d5d207936ca2d02f00f765906622c07d3fa19c23a16a8ca71873f \
- --hash=sha256:384164994727f274cc34b8abd41a9e7e0562801361ee77437099ff6dfedd024b \
- --hash=sha256:3cb608e5a0eb61b8e00fe641d9f0282cd0eedb603be372f91f163cbfbca0ded0 \
- --hash=sha256:5d9402bf27d11e37801d1743eada54372f986a372ec9679673bfcc5c60441151 \
- --hash=sha256:712dca319eee507a1e7df3591e639a2b112a2f4a62d40fe7832a16fd19151750 \
- --hash=sha256:7a5037af4e76c975b88c3becdf53922b5ffa3f2cddf657574a4920a3b33b80f3 \
- --hash=sha256:8228e56a865c27163d5d1d1771d94b98194aa6917bcfb6ce139cbfa8e3c27334 \
- --hash=sha256:84a1544252a933ef07bb0b5ef13afe7c36232a774affa673fc3636f7cee1db6c \
- --hash=sha256:84fe5953b18a383fd4495d375fe16e1e55e0a3afe7b4f7b4d01a3a0649fcda9d \
- --hash=sha256:9c673c8bfdf52f903081816b9e0e612186684f4eb4c17eeb729133022d6032e3 \
- --hash=sha256:9f876a69ca55aed879b43c295a328970306e8e80a263ec91cf6e9189243c613b \
- --hash=sha256:a9e5ae5a8e8985c67e8944c23035a0dff2c26b0f5070b2f55b217a1c33bbe8b1 \
- --hash=sha256:b4fdb29c5a7406e3f7ef176b2a7079baa68b5b854f364c21abe327bbeec01cdb \
- --hash=sha256:c184485e0dfba4dfd451c3bd348c2e685d6523543a0f91b9fd4ae90eb09e8422 \
- --hash=sha256:c9cdf251c582c16fd6a9f5e95836c90828d51b0069ad22f463761d27c6c19019 \
- --hash=sha256:e39cf61bb8582bda88cdfebc0db163b774e7e03364bbf9ce1ead13863e81e359 \
- --hash=sha256:e8fbc522303e09036c752a0afcc5c0603e917222d8bedc02813fd73b4b4ed804 \
- --hash=sha256:f34464ab1207114e73bba0794d1257c150a2b89b7a9faf504e00af7c9fd58978 \
- --hash=sha256:f52dabc96ca99ebd2169dadbe018824ebda08a795c7684a0b7d203a290f3adb0
+protobuf==3.20.3 \
+ --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \
+ --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \
+ --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \
+ --hash=sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b \
+ --hash=sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050 \
+ --hash=sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9 \
+ --hash=sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7 \
+ --hash=sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454 \
+ --hash=sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480 \
+ --hash=sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469 \
+ --hash=sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c \
+ --hash=sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e \
+ --hash=sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db \
+ --hash=sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905 \
+ --hash=sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b \
+ --hash=sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86 \
+ --hash=sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4 \
+ --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \
+ --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \
+ --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \
+ --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \
+ --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee
# via
# gcp-docuploader
# gcp-releasetool
# google-api-core
+ # googleapis-common-protos
py==1.11.0 \
--hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \
--hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378
@@ -377,9 +406,9 @@ pygments==2.13.0 \
# via
# readme-renderer
# rich
-pyjwt==2.4.0 \
- --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \
- --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba
+pyjwt==2.6.0 \
+ --hash=sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd \
+ --hash=sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14
# via gcp-releasetool
pyparsing==3.0.9 \
--hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \
@@ -392,9 +421,9 @@ python-dateutil==2.8.2 \
--hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
--hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
# via gcp-releasetool
-readme-renderer==37.0 \
- --hash=sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5 \
- --hash=sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69
+readme-renderer==37.3 \
+ --hash=sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273 \
+ --hash=sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343
# via twine
requests==2.28.1 \
--hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \
@@ -405,17 +434,17 @@ requests==2.28.1 \
# google-cloud-storage
# requests-toolbelt
# twine
-requests-toolbelt==0.9.1 \
- --hash=sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f \
- --hash=sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0
+requests-toolbelt==0.10.1 \
+ --hash=sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7 \
+ --hash=sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d
# via twine
rfc3986==2.0.0 \
--hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \
--hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c
# via twine
-rich==12.5.1 \
- --hash=sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb \
- --hash=sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca
+rich==12.6.0 \
+ --hash=sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e \
+ --hash=sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0
# via twine
rsa==4.9 \
--hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
@@ -437,9 +466,9 @@ twine==4.0.1 \
--hash=sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e \
--hash=sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0
# via -r requirements.in
-typing-extensions==4.3.0 \
- --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \
- --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6
+typing-extensions==4.4.0 \
+ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \
+ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e
# via -r requirements.in
urllib3==1.26.12 \
--hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \
@@ -447,9 +476,9 @@ urllib3==1.26.12 \
# via
# requests
# twine
-virtualenv==20.16.4 \
- --hash=sha256:014f766e4134d0008dcaa1f95bafa0fb0f575795d07cae50b1bee514185d6782 \
- --hash=sha256:035ed57acce4ac35c82c9d8802202b0e71adac011a511ff650cbcf9635006a22
+virtualenv==20.16.6 \
+ --hash=sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108 \
+ --hash=sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e
# via nox
webencodings==0.5.1 \
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
@@ -459,13 +488,13 @@ wheel==0.37.1 \
--hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \
--hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4
# via -r requirements.in
-zipp==3.8.1 \
- --hash=sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2 \
- --hash=sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009
+zipp==3.10.0 \
+ --hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \
+ --hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-setuptools==65.2.0 \
- --hash=sha256:7f4bc85450898a09f76ebf28b72fa25bc7111f6c7d665d514a60bba9c75ef2a9 \
- --hash=sha256:a3ca5857c89f82f5c9410e8508cb32f4872a3bafd4aa7ae122a24ca33bccc750
+setuptools==65.5.0 \
+ --hash=sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17 \
+ --hash=sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356
# via -r requirements.in
From 1d040f1d4f50ec7366c39826367781020b28aa2c Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 28 Nov 2022 12:32:06 -0500
Subject: [PATCH 088/158] chore(python): update release script dependencies
(#223)
* chore(python): drop flake8-import-order in samples noxfile
Source-Link: https://github.com/googleapis/synthtool/commit/6ed3a831cb9ff69ef8a504c353e098ec0192ad93
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb
* use python 3.9 for docs session
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 2 +-
.github/workflows/docs.yml | 4 +--
.github/workflows/lint.yml | 2 +-
.github/workflows/unittest.yml | 2 +-
.kokoro/docker/docs/Dockerfile | 12 +++----
.kokoro/requirements.in | 4 ++-
.kokoro/requirements.txt | 61 ++++++++++++++++++----------------
noxfile.py | 4 +--
8 files changed, 48 insertions(+), 43 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 12edee7..bb21147 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2
+ digest: sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 7092a13..e97d89e 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.9"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
@@ -28,7 +28,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.9"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index d2aee5b..16d5a9e 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.8"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 87ade4d..23000c0 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -41,7 +41,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.8"
- name: Install coverage
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 238b87b..f8137d0 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -60,16 +60,16 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /var/cache/apt/archives/*.deb
-###################### Install python 3.8.11
+###################### Install python 3.9.13
-# Download python 3.8.11
-RUN wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz
+# Download python 3.9.13
+RUN wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz
# Extract files
-RUN tar -xvf Python-3.8.11.tgz
+RUN tar -xvf Python-3.9.13.tgz
-# Install python 3.8.11
-RUN ./Python-3.8.11/configure --enable-optimizations
+# Install python 3.9.13
+RUN ./Python-3.9.13/configure --enable-optimizations
RUN make altinstall
###################### Install pip
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
index 7718391..cbd7e77 100644
--- a/.kokoro/requirements.in
+++ b/.kokoro/requirements.in
@@ -5,4 +5,6 @@ typing-extensions
twine
wheel
setuptools
-nox
\ No newline at end of file
+nox
+charset-normalizer<3
+click<8.1.0
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 31425f1..9c1b9be 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,11 +93,14 @@ cffi==1.15.1 \
charset-normalizer==2.1.1 \
--hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
--hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f
- # via requests
+ # via
+ # -r requirements.in
+ # requests
click==8.0.4 \
--hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \
--hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb
# via
+ # -r requirements.in
# gcp-docuploader
# gcp-releasetool
colorlog==6.7.0 \
@@ -156,9 +159,9 @@ gcp-docuploader==0.6.4 \
--hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \
--hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf
# via -r requirements.in
-gcp-releasetool==1.9.1 \
- --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \
- --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b
+gcp-releasetool==1.10.0 \
+ --hash=sha256:72a38ca91b59c24f7e699e9227c90cbe4dd71b789383cb0164b088abae294c83 \
+ --hash=sha256:8c7c99320208383d4bb2b808c6880eb7a81424afe7cdba3c8d84b25f4f0e097d
# via -r requirements.in
google-api-core==2.10.2 \
--hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \
@@ -166,9 +169,9 @@ google-api-core==2.10.2 \
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.14.0 \
- --hash=sha256:1ad5b0e6eba5f69645971abb3d2c197537d5914070a8c6d30299dfdb07c5c700 \
- --hash=sha256:cf24817855d874ede2efd071aa22125445f555de1685b739a9782fcf408c2a3d
+google-auth==2.14.1 \
+ --hash=sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d \
+ --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016
# via
# gcp-releasetool
# google-api-core
@@ -178,9 +181,9 @@ google-cloud-core==2.3.2 \
--hash=sha256:8417acf6466be2fa85123441696c4badda48db314c607cf1e5d543fa8bdc22fe \
--hash=sha256:b9529ee7047fd8d4bf4a2182de619154240df17fbe60ead399078c1ae152af9a
# via google-cloud-storage
-google-cloud-storage==2.5.0 \
- --hash=sha256:19a26c66c317ce542cea0830b7e787e8dac2588b6bfa4d3fd3b871ba16305ab0 \
- --hash=sha256:382f34b91de2212e3c2e7b40ec079d27ee2e3dbbae99b75b1bcd8c63063ce235
+google-cloud-storage==2.6.0 \
+ --hash=sha256:104ca28ae61243b637f2f01455cc8a05e8f15a2a18ced96cb587241cdd3820f5 \
+ --hash=sha256:4ad0415ff61abdd8bb2ae81c1f8f7ec7d91a1011613f2db87c614c550f97bfe9
# via gcp-docuploader
google-crc32c==1.5.0 \
--hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \
@@ -256,9 +259,9 @@ google-resumable-media==2.4.0 \
--hash=sha256:2aa004c16d295c8f6c33b2b4788ba59d366677c0a25ae7382436cb30f776deaa \
--hash=sha256:8d5518502f92b9ecc84ac46779bd4f09694ecb3ba38a3e7ca737a86d15cbca1f
# via google-cloud-storage
-googleapis-common-protos==1.56.4 \
- --hash=sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394 \
- --hash=sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417
+googleapis-common-protos==1.57.0 \
+ --hash=sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46 \
+ --hash=sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c
# via google-api-core
idna==3.4 \
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
@@ -269,6 +272,7 @@ importlib-metadata==5.0.0 \
--hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43
# via
# -r requirements.in
+ # keyring
# twine
jaraco-classes==3.2.3 \
--hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \
@@ -284,9 +288,9 @@ jinja2==3.1.2 \
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
# via gcp-releasetool
-keyring==23.9.3 \
- --hash=sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0 \
- --hash=sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5
+keyring==23.11.0 \
+ --hash=sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e \
+ --hash=sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361
# via
# gcp-releasetool
# twine
@@ -350,9 +354,9 @@ pkginfo==1.8.3 \
--hash=sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594 \
--hash=sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c
# via twine
-platformdirs==2.5.2 \
- --hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \
- --hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19
+platformdirs==2.5.4 \
+ --hash=sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7 \
+ --hash=sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10
# via virtualenv
protobuf==3.20.3 \
--hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \
@@ -381,7 +385,6 @@ protobuf==3.20.3 \
# gcp-docuploader
# gcp-releasetool
# google-api-core
- # googleapis-common-protos
py==1.11.0 \
--hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \
--hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378
@@ -476,17 +479,17 @@ urllib3==1.26.12 \
# via
# requests
# twine
-virtualenv==20.16.6 \
- --hash=sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108 \
- --hash=sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e
+virtualenv==20.16.7 \
+ --hash=sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e \
+ --hash=sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29
# via nox
webencodings==0.5.1 \
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
--hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
# via bleach
-wheel==0.37.1 \
- --hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \
- --hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4
+wheel==0.38.4 \
+ --hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \
+ --hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8
# via -r requirements.in
zipp==3.10.0 \
--hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \
@@ -494,7 +497,7 @@ zipp==3.10.0 \
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-setuptools==65.5.0 \
- --hash=sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17 \
- --hash=sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356
+setuptools==65.5.1 \
+ --hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \
+ --hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f
# via -r requirements.in
diff --git a/noxfile.py b/noxfile.py
index 712ecb2..8239d1d 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -117,7 +117,7 @@ def cover(session):
session.run("coverage", "erase")
-@nox.session(python="3.8")
+@nox.session(python="3.9")
def docs(session):
"""Build the docs for this library."""
@@ -140,7 +140,7 @@ def docs(session):
)
-@nox.session(python="3.8")
+@nox.session(python="3.9")
def docfx(session):
"""Build the docfx yaml files for this library."""
From 9955830c0e33f0a727da737d88d485ef130d7864 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 8 Dec 2022 14:33:40 -0500
Subject: [PATCH 089/158] build(deps): bump certifi from 2022.9.24 to 2022.12.7
in /synthtool/gcp/templates/python_library/.kokoro (#224)
Source-Link: https://github.com/googleapis/synthtool/commit/b4fe62efb5114b6738ad4b13d6f654f2bf4b7cc0
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.txt | 6 +++---
.pre-commit-config.yaml | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index bb21147..fccaa8e 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb
+ digest: sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 9c1b9be..05dc467 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -20,9 +20,9 @@ cachetools==5.2.0 \
--hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \
--hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db
# via google-auth
-certifi==2022.9.24 \
- --hash=sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14 \
- --hash=sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382
+certifi==2022.12.7 \
+ --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \
+ --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18
# via requests
cffi==1.15.1 \
--hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 46d2371..5405cc8 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -25,7 +25,7 @@ repos:
rev: 22.3.0
hooks:
- id: black
-- repo: https://gitlab.com/pycqa/flake8
+- repo: https://github.com/pycqa/flake8
rev: 3.9.2
hooks:
- id: flake8
From 7f131e3d065fdcc1913d23c124a8a6c22214b003 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 6 Jan 2023 15:58:53 -0500
Subject: [PATCH 090/158] chore(python): add support for python 3.11
[autoapprove] (#225)
* chore(python): add support for python 3.11
Source-Link: https://github.com/googleapis/synthtool/commit/7197a001ffb6d8ce7b0b9b11c280f0c536c1033a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:c43f1d918bcf817d337aa29ff833439494a158a0831508fda4ec75dc4c0d0320
* add python 3.11 to noxfile
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +-
.github/workflows/unittest.yml | 2 +-
.kokoro/samples/python3.11/common.cfg | 40 ++++++++++++++++++++
.kokoro/samples/python3.11/continuous.cfg | 6 +++
.kokoro/samples/python3.11/periodic-head.cfg | 11 ++++++
.kokoro/samples/python3.11/periodic.cfg | 6 +++
.kokoro/samples/python3.11/presubmit.cfg | 6 +++
CONTRIBUTING.rst | 6 ++-
noxfile.py | 2 +-
9 files changed, 77 insertions(+), 6 deletions(-)
create mode 100644 .kokoro/samples/python3.11/common.cfg
create mode 100644 .kokoro/samples/python3.11/continuous.cfg
create mode 100644 .kokoro/samples/python3.11/periodic-head.cfg
create mode 100644 .kokoro/samples/python3.11/periodic.cfg
create mode 100644 .kokoro/samples/python3.11/presubmit.cfg
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index fccaa8e..889f77d 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,4 +1,4 @@
-# Copyright 2022 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1
+ digest: sha256:c43f1d918bcf817d337aa29ff833439494a158a0831508fda4ec75dc4c0d0320
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 23000c0..8057a76 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python: ['3.7', '3.8', '3.9', '3.10']
+ python: ['3.7', '3.8', '3.9', '3.10', '3.11']
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/.kokoro/samples/python3.11/common.cfg b/.kokoro/samples/python3.11/common.cfg
new file mode 100644
index 0000000..74c8cf3
--- /dev/null
+++ b/.kokoro/samples/python3.11/common.cfg
@@ -0,0 +1,40 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Build logs will be here
+action {
+ define_artifacts {
+ regex: "**/*sponge_log.xml"
+ }
+}
+
+# Specify which tests to run
+env_vars: {
+ key: "RUN_TESTS_SESSION"
+ value: "py-3.11"
+}
+
+# Declare build specific Cloud project.
+env_vars: {
+ key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ value: "python-docs-samples-tests-311"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples.sh"
+}
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
+}
+
+# Download secrets for samples
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
+
+# Download trampoline resources.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Use the trampoline script to run in docker.
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.11/continuous.cfg b/.kokoro/samples/python3.11/continuous.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.11/continuous.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.11/periodic-head.cfg b/.kokoro/samples/python3.11/periodic-head.cfg
new file mode 100644
index 0000000..f9e9e94
--- /dev/null
+++ b/.kokoro/samples/python3.11/periodic-head.cfg
@@ -0,0 +1,11 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
+}
diff --git a/.kokoro/samples/python3.11/periodic.cfg b/.kokoro/samples/python3.11/periodic.cfg
new file mode 100644
index 0000000..71cd1e5
--- /dev/null
+++ b/.kokoro/samples/python3.11/periodic.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "False"
+}
diff --git a/.kokoro/samples/python3.11/presubmit.cfg b/.kokoro/samples/python3.11/presubmit.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.11/presubmit.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 1cfccd9..cdde200 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.
+ 3.7, 3.8, 3.9, 3.10 and 3.11 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests.
- To run a single unit test::
- $ nox -s unit-3.10 -- -k
+ $ nox -s unit-3.11 -- -k
.. note::
@@ -225,11 +225,13 @@ We support:
- `Python 3.8`_
- `Python 3.9`_
- `Python 3.10`_
+- `Python 3.11`_
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
.. _Python 3.10: https://docs.python.org/3.10/
+.. _Python 3.11: https://docs.python.org/3.11/
Supported versions can be found in our ``noxfile.py`` `config`_.
diff --git a/noxfile.py b/noxfile.py
index 8239d1d..ec30a03 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -91,7 +91,7 @@ def default(session):
)
-@nox.session(python=["3.6", "3.7", "3.8", "3.9", "3.10"])
+@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11"])
def unit(session):
"""Default unit test session."""
default(session)
From 3c481968adc3b74498a284cc852f5aa1c55c8c66 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 8 Feb 2023 15:18:38 +0000
Subject: [PATCH 091/158] build(deps): bump cryptography from 38.0.3 to 39.0.1
in /synthtool/gcp/templates/python_library/.kokoro (#228)
Source-Link: https://togithub.com/googleapis/synthtool/commit/bb171351c3946d3c3c32e60f5f18cee8c464ec51
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f62c53736eccb0c4934a3ea9316e0d57696bb49c1a7c86c726e9bb8a2f87dadf
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.txt | 49 ++++++++++++++++++---------------------
2 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 889f77d..894fb6b 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:c43f1d918bcf817d337aa29ff833439494a158a0831508fda4ec75dc4c0d0320
+ digest: sha256:f62c53736eccb0c4934a3ea9316e0d57696bb49c1a7c86c726e9bb8a2f87dadf
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 05dc467..096e480 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -113,33 +113,28 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==38.0.3 \
- --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \
- --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \
- --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \
- --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \
- --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \
- --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \
- --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \
- --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \
- --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \
- --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \
- --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \
- --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \
- --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \
- --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \
- --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \
- --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \
- --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \
- --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \
- --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \
- --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \
- --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \
- --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \
- --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \
- --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \
- --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \
- --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722
+cryptography==39.0.1 \
+ --hash=sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4 \
+ --hash=sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f \
+ --hash=sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502 \
+ --hash=sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41 \
+ --hash=sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965 \
+ --hash=sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e \
+ --hash=sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc \
+ --hash=sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad \
+ --hash=sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505 \
+ --hash=sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388 \
+ --hash=sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6 \
+ --hash=sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2 \
+ --hash=sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac \
+ --hash=sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695 \
+ --hash=sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6 \
+ --hash=sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336 \
+ --hash=sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0 \
+ --hash=sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c \
+ --hash=sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106 \
+ --hash=sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a \
+ --hash=sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8
# via
# gcp-releasetool
# secretstorage
From 15529e043b683074d554dff0eaa116471898fc72 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 27 Feb 2023 12:15:53 -0500
Subject: [PATCH 092/158] chore(python): upgrade gcp-releasetool in .kokoro
[autoapprove] (#229)
Source-Link: https://github.com/googleapis/synthtool/commit/5f2a6089f73abf06238fe4310f6a14d6f6d1eed3
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:8555f0e37e6261408f792bfd6635102d2da5ad73f8f09bcb24f25e6afb5fac97
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.in | 2 +-
.kokoro/requirements.txt | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 894fb6b..5fc5daa 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:f62c53736eccb0c4934a3ea9316e0d57696bb49c1a7c86c726e9bb8a2f87dadf
+ digest: sha256:8555f0e37e6261408f792bfd6635102d2da5ad73f8f09bcb24f25e6afb5fac97
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
index cbd7e77..882178c 100644
--- a/.kokoro/requirements.in
+++ b/.kokoro/requirements.in
@@ -1,5 +1,5 @@
gcp-docuploader
-gcp-releasetool
+gcp-releasetool>=1.10.5 # required for compatibility with cryptography>=39.x
importlib-metadata
typing-extensions
twine
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 096e480..fa99c12 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -154,9 +154,9 @@ gcp-docuploader==0.6.4 \
--hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \
--hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf
# via -r requirements.in
-gcp-releasetool==1.10.0 \
- --hash=sha256:72a38ca91b59c24f7e699e9227c90cbe4dd71b789383cb0164b088abae294c83 \
- --hash=sha256:8c7c99320208383d4bb2b808c6880eb7a81424afe7cdba3c8d84b25f4f0e097d
+gcp-releasetool==1.10.5 \
+ --hash=sha256:174b7b102d704b254f2a26a3eda2c684fd3543320ec239baf771542a2e58e109 \
+ --hash=sha256:e29d29927fe2ca493105a82958c6873bb2b90d503acac56be2c229e74de0eec9
# via -r requirements.in
google-api-core==2.10.2 \
--hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \
From 44de0d893daab18b74de9aa032f7e580a2e47d22 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 16 Mar 2023 08:33:12 -0400
Subject: [PATCH 093/158] chore(deps): Update nox in .kokoro/requirements.in
[autoapprove] (#231)
Source-Link: https://github.com/googleapis/synthtool/commit/92006bb3cdc84677aa93c7f5235424ec2b157146
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2e247c7bf5154df7f98cce087a20ca7605e236340c7d6d1a14447e5c06791bd6
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 2 +-
.kokoro/requirements.in | 2 +-
.kokoro/requirements.txt | 14 +++++---------
3 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 5fc5daa..b8edda5 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,4 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:8555f0e37e6261408f792bfd6635102d2da5ad73f8f09bcb24f25e6afb5fac97
+ digest: sha256:2e247c7bf5154df7f98cce087a20ca7605e236340c7d6d1a14447e5c06791bd6
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
index 882178c..ec867d9 100644
--- a/.kokoro/requirements.in
+++ b/.kokoro/requirements.in
@@ -5,6 +5,6 @@ typing-extensions
twine
wheel
setuptools
-nox
+nox>=2022.11.21 # required to remove dependency on py
charset-normalizer<3
click<8.1.0
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index fa99c12..66a2172 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -1,6 +1,6 @@
#
-# This file is autogenerated by pip-compile with python 3.10
-# To update, run:
+# This file is autogenerated by pip-compile with Python 3.9
+# by the following command:
#
# pip-compile --allow-unsafe --generate-hashes requirements.in
#
@@ -335,9 +335,9 @@ more-itertools==9.0.0 \
--hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \
--hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab
# via jaraco-classes
-nox==2022.8.7 \
- --hash=sha256:1b894940551dc5c389f9271d197ca5d655d40bdc6ccf93ed6880e4042760a34b \
- --hash=sha256:96cca88779e08282a699d672258ec01eb7c792d35bbbf538c723172bce23212c
+nox==2022.11.21 \
+ --hash=sha256:0e41a990e290e274cb205a976c4c97ee3c5234441a8132c8c3fd9ea3c22149eb \
+ --hash=sha256:e21c31de0711d1274ca585a2c5fde36b1aa962005ba8e9322bf5eeed16dcd684
# via -r requirements.in
packaging==21.3 \
--hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \
@@ -380,10 +380,6 @@ protobuf==3.20.3 \
# gcp-docuploader
# gcp-releasetool
# google-api-core
-py==1.11.0 \
- --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \
- --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378
- # via nox
pyasn1==0.4.8 \
--hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
--hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
From 72da095caf1a30af7a380eaed5c4be1394ebf95b Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 25 May 2023 12:44:58 -0400
Subject: [PATCH 094/158] build(deps): bump requests from 2.28.1 to 2.31.0 in
/synthtool/gcp/templates/python_library/.kokoro (#233)
Source-Link: https://github.com/googleapis/synthtool/commit/30bd01b4ab78bf1b2a425816e15b3e7e090993dd
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:9bc5fa3b62b091f60614c08a7fb4fd1d3e1678e326f34dd66ce1eefb5dc3267b
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 3 ++-
.kokoro/requirements.txt | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index b8edda5..32b3c48 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:2e247c7bf5154df7f98cce087a20ca7605e236340c7d6d1a14447e5c06791bd6
+ digest: sha256:9bc5fa3b62b091f60614c08a7fb4fd1d3e1678e326f34dd66ce1eefb5dc3267b
+# created: 2023-05-25T14:56:16.294623272Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 66a2172..3b8d7ee 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -419,9 +419,9 @@ readme-renderer==37.3 \
--hash=sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273 \
--hash=sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343
# via twine
-requests==2.28.1 \
- --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \
- --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349
+requests==2.31.0 \
+ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
+ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1
# via
# gcp-releasetool
# google-api-core
From 78f75e11c25c6485fe4aab73f28018dbde4ad825 Mon Sep 17 00:00:00 2001
From: meredithslota
Date: Thu, 25 May 2023 16:46:21 +0000
Subject: [PATCH 095/158] chore: update wording to use "allowlist" (#230)
Co-authored-by: Anthonios Partheniou
---
google/cloud/_helpers/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google/cloud/_helpers/__init__.py b/google/cloud/_helpers/__init__.py
index 3b9d04d..5a7e2b0 100644
--- a/google/cloud/_helpers/__init__.py
+++ b/google/cloud/_helpers/__init__.py
@@ -116,7 +116,7 @@ def _ensure_tuple_or_list(arg_name, tuple_or_list):
"""Ensures an input is a tuple or list.
This effectively reduces the iterable types allowed to a very short
- whitelist: list and tuple.
+ allowlist: list and tuple.
:type arg_name: str
:param arg_name: Name of argument to use in error message.
From db37432b732349d967a4db22b48a5afa4bc34700 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sat, 3 Jun 2023 18:15:43 -0400
Subject: [PATCH 096/158] build(deps): bump cryptography from 39.0.1 to 41.0.0
in /synthtool/gcp/templates/python_library/.kokoro (#235)
Source-Link: https://github.com/googleapis/synthtool/commit/d0f51a0c2a9a6bcca86911eabea9e484baadf64b
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:240b5bcc2bafd450912d2da2be15e62bc6de2cf839823ae4bf94d4f392b451dc
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 42 +++++++++++++++++++--------------------
2 files changed, 22 insertions(+), 24 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 32b3c48..02a4ded 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:9bc5fa3b62b091f60614c08a7fb4fd1d3e1678e326f34dd66ce1eefb5dc3267b
-# created: 2023-05-25T14:56:16.294623272Z
+ digest: sha256:240b5bcc2bafd450912d2da2be15e62bc6de2cf839823ae4bf94d4f392b451dc
+# created: 2023-06-03T21:25:37.968717478Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 3b8d7ee..c7929db 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -113,28 +113,26 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==39.0.1 \
- --hash=sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4 \
- --hash=sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f \
- --hash=sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502 \
- --hash=sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41 \
- --hash=sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965 \
- --hash=sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e \
- --hash=sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc \
- --hash=sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad \
- --hash=sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505 \
- --hash=sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388 \
- --hash=sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6 \
- --hash=sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2 \
- --hash=sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac \
- --hash=sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695 \
- --hash=sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6 \
- --hash=sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336 \
- --hash=sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0 \
- --hash=sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c \
- --hash=sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106 \
- --hash=sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a \
- --hash=sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8
+cryptography==41.0.0 \
+ --hash=sha256:0ddaee209d1cf1f180f1efa338a68c4621154de0afaef92b89486f5f96047c55 \
+ --hash=sha256:14754bcdae909d66ff24b7b5f166d69340ccc6cb15731670435efd5719294895 \
+ --hash=sha256:344c6de9f8bda3c425b3a41b319522ba3208551b70c2ae00099c205f0d9fd3be \
+ --hash=sha256:34d405ea69a8b34566ba3dfb0521379b210ea5d560fafedf9f800a9a94a41928 \
+ --hash=sha256:3680248309d340fda9611498a5319b0193a8dbdb73586a1acf8109d06f25b92d \
+ --hash=sha256:3c5ef25d060c80d6d9f7f9892e1d41bb1c79b78ce74805b8cb4aa373cb7d5ec8 \
+ --hash=sha256:4ab14d567f7bbe7f1cdff1c53d5324ed4d3fc8bd17c481b395db224fb405c237 \
+ --hash=sha256:5c1f7293c31ebc72163a9a0df246f890d65f66b4a40d9ec80081969ba8c78cc9 \
+ --hash=sha256:6b71f64beeea341c9b4f963b48ee3b62d62d57ba93eb120e1196b31dc1025e78 \
+ --hash=sha256:7d92f0248d38faa411d17f4107fc0bce0c42cae0b0ba5415505df72d751bf62d \
+ --hash=sha256:8362565b3835ceacf4dc8f3b56471a2289cf51ac80946f9087e66dc283a810e0 \
+ --hash=sha256:84a165379cb9d411d58ed739e4af3396e544eac190805a54ba2e0322feb55c46 \
+ --hash=sha256:88ff107f211ea696455ea8d911389f6d2b276aabf3231bf72c8853d22db755c5 \
+ --hash=sha256:9f65e842cb02550fac96536edb1d17f24c0a338fd84eaf582be25926e993dde4 \
+ --hash=sha256:a4fc68d1c5b951cfb72dfd54702afdbbf0fb7acdc9b7dc4301bbf2225a27714d \
+ --hash=sha256:b7f2f5c525a642cecad24ee8670443ba27ac1fab81bba4cc24c7b6b41f2d0c75 \
+ --hash=sha256:b846d59a8d5a9ba87e2c3d757ca019fa576793e8758174d3868aecb88d6fc8eb \
+ --hash=sha256:bf8fc66012ca857d62f6a347007e166ed59c0bc150cefa49f28376ebe7d992a2 \
+ --hash=sha256:f5d0bf9b252f30a31664b6f64432b4730bb7038339bd18b1fafe129cfc2be9be
# via
# gcp-releasetool
# secretstorage
From b805f4a273de53017f74ca693ba7243fb4694848 Mon Sep 17 00:00:00 2001
From: Dan Lee <71398022+dandhlee@users.noreply.github.com>
Date: Sat, 3 Jun 2023 18:17:10 -0400
Subject: [PATCH 097/158] docs: update docs structure for c.g.c usage (#226)
Co-authored-by: Anthonios Partheniou
---
docs/README.rst | 1 +
docs/{ => client}/client.rst | 0
docs/index.rst | 6 ++++--
3 files changed, 5 insertions(+), 2 deletions(-)
create mode 120000 docs/README.rst
rename docs/{ => client}/client.rst (100%)
diff --git a/docs/README.rst b/docs/README.rst
new file mode 120000
index 0000000..89a0106
--- /dev/null
+++ b/docs/README.rst
@@ -0,0 +1 @@
+../README.rst
\ No newline at end of file
diff --git a/docs/client.rst b/docs/client/client.rst
similarity index 100%
rename from docs/client.rst
rename to docs/client/client.rst
diff --git a/docs/index.rst b/docs/index.rst
index fa77d7d..15526b4 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,3 +1,5 @@
+.. include:: README.rst
+
The ``google-cloud-core`` package contains helpers common to all
``google-cloud-*`` packages. In an attempt to reach a stable API,
much of the functionality has been split out into a new package
@@ -9,10 +11,10 @@ Core
.. toctree::
config
- client
+ client/client
Changelog
-~~~~~~~~~
+=========
.. toctree::
:maxdepth: 2
From ef0c83e7d3e49ab82d8610521ef07b25e2985012 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 29 Jun 2023 12:38:10 -0400
Subject: [PATCH 098/158] chore: store artifacts in placer [autoapprove] (#237)
* chore: store artifacts in placer
Source-Link: https://github.com/googleapis/synthtool/commit/cb960373d12d20f8dc38beee2bf884d49627165e
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2d816f26f728ac8b24248741e7d4c461c09764ef9f7be3684d557c9632e46dbd
* remove pinned sphinx
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/release/common.cfg | 9 +++++++++
noxfile.py | 7 +------
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 02a4ded..98994f4 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:240b5bcc2bafd450912d2da2be15e62bc6de2cf839823ae4bf94d4f392b451dc
-# created: 2023-06-03T21:25:37.968717478Z
+ digest: sha256:2d816f26f728ac8b24248741e7d4c461c09764ef9f7be3684d557c9632e46dbd
+# created: 2023-06-28T17:03:33.371210701Z
diff --git a/.kokoro/release/common.cfg b/.kokoro/release/common.cfg
index 8e9adae..fd40bcb 100644
--- a/.kokoro/release/common.cfg
+++ b/.kokoro/release/common.cfg
@@ -38,3 +38,12 @@ env_vars: {
key: "SECRET_MANAGER_KEYS"
value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem"
}
+
+# Store the packages we uploaded to PyPI. That way, we have a record of exactly
+# what we published, which we can use to generate SBOMs and attestations.
+action {
+ define_artifacts {
+ regex: "github/python-cloud-core/**/*.tar.gz"
+ strip_prefix: "github/python-cloud-core"
+ }
+}
diff --git a/noxfile.py b/noxfile.py
index ec30a03..166a235 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -145,12 +145,7 @@ def docfx(session):
"""Build the docfx yaml files for this library."""
session.install("-e", ".")
- session.install(
- "sphinx==4.0.1",
- "alabaster",
- "recommonmark",
- "gcp-sphinx-docfx-yaml",
- )
+ session.install("gcp-sphinx-docfx-yaml", "alabaster", "recommonmark")
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
session.run(
From c5f86620142ff1e1b0d200bfb2c22f97f3163363 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 5 Jul 2023 15:40:54 -0400
Subject: [PATCH 099/158] chore(main): release 2.3.3 (#236)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c41077..dd90738 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.3.3](https://github.com/googleapis/python-cloud-core/compare/v2.3.2...v2.3.3) (2023-06-29)
+
+
+### Documentation
+
+* Update docs structure for c.g.c usage ([#226](https://github.com/googleapis/python-cloud-core/issues/226)) ([b805f4a](https://github.com/googleapis/python-cloud-core/commit/b805f4a273de53017f74ca693ba7243fb4694848))
+
## [2.3.2](https://github.com/googleapis/python-cloud-core/compare/v2.3.1...v2.3.2) (2022-07-15)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index ba759b6..a95986d 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.3.2"
+__version__ = "2.3.3"
From 3eb7bd23bd51534a93ca062365c2ed39a334887a Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 17 Jul 2023 11:52:09 -0400
Subject: [PATCH 100/158] build(deps): [autoapprove] bump cryptography from
41.0.0 to 41.0.2 (#239)
Source-Link: https://github.com/googleapis/synthtool/commit/d6103f4a3540ba60f633a9e25c37ec5fe7e6286d
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:39f0f3f2be02ef036e297e376fe3b6256775576da8a6ccb1d5eeb80f4c8bf8fb
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +--
.github/auto-label.yaml | 2 +-
.kokoro/build.sh | 2 +-
.kokoro/docker/docs/Dockerfile | 2 +-
.kokoro/populate-secrets.sh | 2 +-
.kokoro/publish-docs.sh | 2 +-
.kokoro/release.sh | 2 +-
.kokoro/requirements.txt | 44 +++++++++++++++-------------
.kokoro/test-samples-against-head.sh | 2 +-
.kokoro/test-samples-impl.sh | 2 +-
.kokoro/test-samples.sh | 2 +-
.kokoro/trampoline.sh | 2 +-
.kokoro/trampoline_v2.sh | 2 +-
.pre-commit-config.yaml | 2 +-
.trampolinerc | 4 +--
MANIFEST.in | 2 +-
docs/conf.py | 2 +-
scripts/decrypt-secrets.sh | 2 +-
scripts/readme-gen/readme_gen.py | 18 ++++++------
19 files changed, 51 insertions(+), 49 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 98994f4..ae4a522 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:2d816f26f728ac8b24248741e7d4c461c09764ef9f7be3684d557c9632e46dbd
-# created: 2023-06-28T17:03:33.371210701Z
+ digest: sha256:39f0f3f2be02ef036e297e376fe3b6256775576da8a6ccb1d5eeb80f4c8bf8fb
+# created: 2023-07-17T15:20:13.819193964Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
index 41bff0b..b2016d1 100644
--- a/.github/auto-label.yaml
+++ b/.github/auto-label.yaml
@@ -1,4 +1,4 @@
-# Copyright 2022 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 16be3c8..55a7d67 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2018 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index f8137d0..8e39a2c 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/populate-secrets.sh b/.kokoro/populate-secrets.sh
index f525142..6f39721 100755
--- a/.kokoro/populate-secrets.sh
+++ b/.kokoro/populate-secrets.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2020 Google LLC.
+# Copyright 2023 Google LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
index 1c4d623..9eafe0b 100755
--- a/.kokoro/publish-docs.sh
+++ b/.kokoro/publish-docs.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index 4f9e137..a0ff71e 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index c7929db..67d70a1 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -113,26 +113,30 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==41.0.0 \
- --hash=sha256:0ddaee209d1cf1f180f1efa338a68c4621154de0afaef92b89486f5f96047c55 \
- --hash=sha256:14754bcdae909d66ff24b7b5f166d69340ccc6cb15731670435efd5719294895 \
- --hash=sha256:344c6de9f8bda3c425b3a41b319522ba3208551b70c2ae00099c205f0d9fd3be \
- --hash=sha256:34d405ea69a8b34566ba3dfb0521379b210ea5d560fafedf9f800a9a94a41928 \
- --hash=sha256:3680248309d340fda9611498a5319b0193a8dbdb73586a1acf8109d06f25b92d \
- --hash=sha256:3c5ef25d060c80d6d9f7f9892e1d41bb1c79b78ce74805b8cb4aa373cb7d5ec8 \
- --hash=sha256:4ab14d567f7bbe7f1cdff1c53d5324ed4d3fc8bd17c481b395db224fb405c237 \
- --hash=sha256:5c1f7293c31ebc72163a9a0df246f890d65f66b4a40d9ec80081969ba8c78cc9 \
- --hash=sha256:6b71f64beeea341c9b4f963b48ee3b62d62d57ba93eb120e1196b31dc1025e78 \
- --hash=sha256:7d92f0248d38faa411d17f4107fc0bce0c42cae0b0ba5415505df72d751bf62d \
- --hash=sha256:8362565b3835ceacf4dc8f3b56471a2289cf51ac80946f9087e66dc283a810e0 \
- --hash=sha256:84a165379cb9d411d58ed739e4af3396e544eac190805a54ba2e0322feb55c46 \
- --hash=sha256:88ff107f211ea696455ea8d911389f6d2b276aabf3231bf72c8853d22db755c5 \
- --hash=sha256:9f65e842cb02550fac96536edb1d17f24c0a338fd84eaf582be25926e993dde4 \
- --hash=sha256:a4fc68d1c5b951cfb72dfd54702afdbbf0fb7acdc9b7dc4301bbf2225a27714d \
- --hash=sha256:b7f2f5c525a642cecad24ee8670443ba27ac1fab81bba4cc24c7b6b41f2d0c75 \
- --hash=sha256:b846d59a8d5a9ba87e2c3d757ca019fa576793e8758174d3868aecb88d6fc8eb \
- --hash=sha256:bf8fc66012ca857d62f6a347007e166ed59c0bc150cefa49f28376ebe7d992a2 \
- --hash=sha256:f5d0bf9b252f30a31664b6f64432b4730bb7038339bd18b1fafe129cfc2be9be
+cryptography==41.0.2 \
+ --hash=sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711 \
+ --hash=sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7 \
+ --hash=sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd \
+ --hash=sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e \
+ --hash=sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58 \
+ --hash=sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0 \
+ --hash=sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d \
+ --hash=sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83 \
+ --hash=sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831 \
+ --hash=sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766 \
+ --hash=sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b \
+ --hash=sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c \
+ --hash=sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182 \
+ --hash=sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f \
+ --hash=sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa \
+ --hash=sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4 \
+ --hash=sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a \
+ --hash=sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2 \
+ --hash=sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76 \
+ --hash=sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5 \
+ --hash=sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee \
+ --hash=sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f \
+ --hash=sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14
# via
# gcp-releasetool
# secretstorage
diff --git a/.kokoro/test-samples-against-head.sh b/.kokoro/test-samples-against-head.sh
index ba3a707..63ac41d 100755
--- a/.kokoro/test-samples-against-head.sh
+++ b/.kokoro/test-samples-against-head.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 2c6500c..5a0f5fa 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2021 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/test-samples.sh b/.kokoro/test-samples.sh
index 11c042d..50b35a4 100755
--- a/.kokoro/test-samples.sh
+++ b/.kokoro/test-samples.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh
index f39236e..d85b1f2 100755
--- a/.kokoro/trampoline.sh
+++ b/.kokoro/trampoline.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Google Inc.
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/trampoline_v2.sh b/.kokoro/trampoline_v2.sh
index 4af6cdc..59a7cf3 100755
--- a/.kokoro/trampoline_v2.sh
+++ b/.kokoro/trampoline_v2.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5405cc8..9e3898f 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,4 +1,4 @@
-# Copyright 2021 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.trampolinerc b/.trampolinerc
index 0eee72a..a7dfeb4 100644
--- a/.trampolinerc
+++ b/.trampolinerc
@@ -1,4 +1,4 @@
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,8 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Template for .trampolinerc
-
# Add required env vars here.
required_envvars+=(
)
diff --git a/MANIFEST.in b/MANIFEST.in
index e783f4c..e0a6670 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# Copyright 2020 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/docs/conf.py b/docs/conf.py
index f105599..eb10718 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright 2021 Google LLC
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/scripts/decrypt-secrets.sh b/scripts/decrypt-secrets.sh
index 21f6d2a..0018b42 100755
--- a/scripts/decrypt-secrets.sh
+++ b/scripts/decrypt-secrets.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2015 Google Inc. All rights reserved.
+# Copyright 2023 Google LLC All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/scripts/readme-gen/readme_gen.py b/scripts/readme-gen/readme_gen.py
index 91b5967..1acc119 100644
--- a/scripts/readme-gen/readme_gen.py
+++ b/scripts/readme-gen/readme_gen.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-# Copyright 2016 Google Inc
+# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -33,17 +33,17 @@
autoescape=True,
)
-README_TMPL = jinja_env.get_template('README.tmpl.rst')
+README_TMPL = jinja_env.get_template("README.tmpl.rst")
def get_help(file):
- return subprocess.check_output(['python', file, '--help']).decode()
+ return subprocess.check_output(["python", file, "--help"]).decode()
def main():
parser = argparse.ArgumentParser()
- parser.add_argument('source')
- parser.add_argument('--destination', default='README.rst')
+ parser.add_argument("source")
+ parser.add_argument("--destination", default="README.rst")
args = parser.parse_args()
@@ -51,9 +51,9 @@ def main():
root = os.path.dirname(source)
destination = os.path.join(root, args.destination)
- jinja_env.globals['get_help'] = get_help
+ jinja_env.globals["get_help"] = get_help
- with io.open(source, 'r') as f:
+ with io.open(source, "r") as f:
config = yaml.load(f)
# This allows get_help to execute in the right directory.
@@ -61,9 +61,9 @@ def main():
output = README_TMPL.render(config)
- with io.open(destination, 'w') as f:
+ with io.open(destination, "w") as f:
f.write(output)
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
From 206b8f8fb5063dca3d93a03d8fb9e1f92f28f87f Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 21 Jul 2023 09:42:43 -0400
Subject: [PATCH 101/158] build(deps): [autoapprove] bump pygments from 2.13.0
to 2.15.0 (#241)
Source-Link: https://github.com/googleapis/synthtool/commit/eaef28efd179e6eeb9f4e9bf697530d074a6f3b9
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f8ca7655fa8a449cadcabcbce4054f593dcbae7aeeab34aa3fcc8b5cf7a93c9e
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ae4a522..17c21d9 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:39f0f3f2be02ef036e297e376fe3b6256775576da8a6ccb1d5eeb80f4c8bf8fb
-# created: 2023-07-17T15:20:13.819193964Z
+ digest: sha256:f8ca7655fa8a449cadcabcbce4054f593dcbae7aeeab34aa3fcc8b5cf7a93c9e
+# created: 2023-07-21T02:12:46.49799314Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 67d70a1..b563eb2 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -396,9 +396,9 @@ pycparser==2.21 \
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
# via cffi
-pygments==2.13.0 \
- --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \
- --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42
+pygments==2.15.0 \
+ --hash=sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094 \
+ --hash=sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500
# via
# readme-renderer
# rich
From 70f0423691f9550b9ca4e084117bdd857935978f Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 26 Jul 2023 07:05:00 -0400
Subject: [PATCH 102/158] build(deps): [autoapprove] bump certifi from
2022.12.7 to 2023.7.22 (#243)
Source-Link: https://github.com/googleapis/synthtool/commit/395d53adeeacfca00b73abf197f65f3c17c8f1e9
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:6c1cbc75c74b8bdd71dada2fa1677e9d6d78a889e9a70ee75b93d1d0543f96e1
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 17c21d9..0ddd0e4 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:f8ca7655fa8a449cadcabcbce4054f593dcbae7aeeab34aa3fcc8b5cf7a93c9e
-# created: 2023-07-21T02:12:46.49799314Z
+ digest: sha256:6c1cbc75c74b8bdd71dada2fa1677e9d6d78a889e9a70ee75b93d1d0543f96e1
+# created: 2023-07-25T21:01:10.396410762Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index b563eb2..76d9bba 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -20,9 +20,9 @@ cachetools==5.2.0 \
--hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \
--hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db
# via google-auth
-certifi==2022.12.7 \
- --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \
- --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18
+certifi==2023.7.22 \
+ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \
+ --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9
# via requests
cffi==1.15.1 \
--hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
From ec075527110cd25ae0bd5a231aa67c5d4d9271bb Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 1 Aug 2023 16:18:54 -0400
Subject: [PATCH 103/158] chore: [autoapprove] Pin flake8 version (#244)
Source-Link: https://github.com/googleapis/synthtool/commit/0ddbff8012e47cde4462fe3f9feab01fbc4cdfd6
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:bced5ca77c4dda0fd2f5d845d4035fc3c5d3d6b81f245246a36aee114970082b
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.pre-commit-config.yaml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 0ddd0e4..d71329c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:6c1cbc75c74b8bdd71dada2fa1677e9d6d78a889e9a70ee75b93d1d0543f96e1
-# created: 2023-07-25T21:01:10.396410762Z
+ digest: sha256:bced5ca77c4dda0fd2f5d845d4035fc3c5d3d6b81f245246a36aee114970082b
+# created: 2023-08-01T17:41:45.434027321Z
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9e3898f..19409cb 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,6 +26,6 @@ repos:
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
- rev: 3.9.2
+ rev: 6.1.0
hooks:
- id: flake8
From ec6c69e1a1ea44365959cdb82329c26253d97286 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 3 Aug 2023 10:43:27 -0400
Subject: [PATCH 104/158] build: [autoapprove] bump cryptography from 41.0.2 to
41.0.3 (#246)
Source-Link: https://github.com/googleapis/synthtool/commit/352b9d4c068ce7c05908172af128b294073bf53c
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3e3800bb100af5d7f9e810d48212b37812c1856d20ffeafb99ebe66461b61fc7
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 48 +++++++++++++++++++--------------------
2 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index d71329c..a3da1b0 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:bced5ca77c4dda0fd2f5d845d4035fc3c5d3d6b81f245246a36aee114970082b
-# created: 2023-08-01T17:41:45.434027321Z
+ digest: sha256:3e3800bb100af5d7f9e810d48212b37812c1856d20ffeafb99ebe66461b61fc7
+# created: 2023-08-02T10:53:29.114535628Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 76d9bba..029bd34 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -113,30 +113,30 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==41.0.2 \
- --hash=sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711 \
- --hash=sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7 \
- --hash=sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd \
- --hash=sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e \
- --hash=sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58 \
- --hash=sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0 \
- --hash=sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d \
- --hash=sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83 \
- --hash=sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831 \
- --hash=sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766 \
- --hash=sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b \
- --hash=sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c \
- --hash=sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182 \
- --hash=sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f \
- --hash=sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa \
- --hash=sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4 \
- --hash=sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a \
- --hash=sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2 \
- --hash=sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76 \
- --hash=sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5 \
- --hash=sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee \
- --hash=sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f \
- --hash=sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14
+cryptography==41.0.3 \
+ --hash=sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306 \
+ --hash=sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84 \
+ --hash=sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47 \
+ --hash=sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d \
+ --hash=sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116 \
+ --hash=sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207 \
+ --hash=sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81 \
+ --hash=sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087 \
+ --hash=sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd \
+ --hash=sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507 \
+ --hash=sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858 \
+ --hash=sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae \
+ --hash=sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34 \
+ --hash=sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906 \
+ --hash=sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd \
+ --hash=sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922 \
+ --hash=sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7 \
+ --hash=sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4 \
+ --hash=sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574 \
+ --hash=sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1 \
+ --hash=sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c \
+ --hash=sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e \
+ --hash=sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de
# via
# gcp-releasetool
# secretstorage
From 57cd1829ff64fd9be35a5cd91edd039690e149dd Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 4 Oct 2023 15:47:34 -0700
Subject: [PATCH 105/158] chore: [autoapprove] bump cryptography from 41.0.3 to
41.0.4 (#249)
Source-Link: https://github.com/googleapis/synthtool/commit/dede53ff326079b457cfb1aae5bbdc82cbb51dc3
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:fac304457974bb530cc5396abd4ab25d26a469cd3bc97cbfb18c8d4324c584eb
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.gitignore | 1 +
.kokoro/requirements.txt | 49 ++++++++++++++++++++-------------------
3 files changed, 28 insertions(+), 26 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index a3da1b0..a9bdb1b 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:3e3800bb100af5d7f9e810d48212b37812c1856d20ffeafb99ebe66461b61fc7
-# created: 2023-08-02T10:53:29.114535628Z
+ digest: sha256:fac304457974bb530cc5396abd4ab25d26a469cd3bc97cbfb18c8d4324c584eb
+# created: 2023-10-02T21:31:03.517640371Z
diff --git a/.gitignore b/.gitignore
index b4243ce..d083ea1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,6 +50,7 @@ docs.metadata
# Virtual environment
env/
+venv/
# Test logs
coverage.xml
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 029bd34..96d593c 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -113,30 +113,30 @@ commonmark==0.9.1 \
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
--hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
# via rich
-cryptography==41.0.3 \
- --hash=sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306 \
- --hash=sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84 \
- --hash=sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47 \
- --hash=sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d \
- --hash=sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116 \
- --hash=sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207 \
- --hash=sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81 \
- --hash=sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087 \
- --hash=sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd \
- --hash=sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507 \
- --hash=sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858 \
- --hash=sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae \
- --hash=sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34 \
- --hash=sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906 \
- --hash=sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd \
- --hash=sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922 \
- --hash=sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7 \
- --hash=sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4 \
- --hash=sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574 \
- --hash=sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1 \
- --hash=sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c \
- --hash=sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e \
- --hash=sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de
+cryptography==41.0.4 \
+ --hash=sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67 \
+ --hash=sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311 \
+ --hash=sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8 \
+ --hash=sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13 \
+ --hash=sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143 \
+ --hash=sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f \
+ --hash=sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829 \
+ --hash=sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd \
+ --hash=sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397 \
+ --hash=sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac \
+ --hash=sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d \
+ --hash=sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a \
+ --hash=sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839 \
+ --hash=sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e \
+ --hash=sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6 \
+ --hash=sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9 \
+ --hash=sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860 \
+ --hash=sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca \
+ --hash=sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91 \
+ --hash=sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d \
+ --hash=sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714 \
+ --hash=sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb \
+ --hash=sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f
# via
# gcp-releasetool
# secretstorage
@@ -382,6 +382,7 @@ protobuf==3.20.3 \
# gcp-docuploader
# gcp-releasetool
# google-api-core
+ # googleapis-common-protos
pyasn1==0.4.8 \
--hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
--hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
From 4e9447bfc4c1d171d8b4e47e7aa304602cfd80ff Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 10 Oct 2023 10:44:24 -0400
Subject: [PATCH 106/158] chore: [autoapprove] Update `black` and `isort` to
latest versions (#251)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore: [autoapprove] Update `black` and `isort` to latest versions
Source-Link: https://github.com/googleapis/synthtool/commit/0c7b0333f44b2b7075447f43a121a12d15a7b76a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:08e34975760f002746b1d8c86fdc90660be45945ee6d9db914d1508acdf9a547
* update black in noxfile.py
* Update DEFAULT_PYTHON_VERSION in noxfile.py
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* update default python version for mypy presubmit
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/mypy.yml | 2 +-
.kokoro/requirements.txt | 6 +++---
.pre-commit-config.yaml | 2 +-
google/cloud/_testing/__init__.py | 1 -
noxfile.py | 4 ++--
tests/unit/test__helpers.py | 1 -
tests/unit/test_operation.py | 1 -
8 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index a9bdb1b..dd98abb 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:fac304457974bb530cc5396abd4ab25d26a469cd3bc97cbfb18c8d4324c584eb
-# created: 2023-10-02T21:31:03.517640371Z
+ digest: sha256:08e34975760f002746b1d8c86fdc90660be45945ee6d9db914d1508acdf9a547
+# created: 2023-10-09T14:06:13.397766266Z
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index f08164f..c632426 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.7"
+ python-version: "3.8"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 96d593c..0332d32 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -467,9 +467,9 @@ typing-extensions==4.4.0 \
--hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \
--hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e
# via -r requirements.in
-urllib3==1.26.12 \
- --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \
- --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997
+urllib3==1.26.17 \
+ --hash=sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21 \
+ --hash=sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b
# via
# requests
# twine
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 19409cb..6a8e169 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -22,7 +22,7 @@ repos:
- id: end-of-file-fixer
- id: check-yaml
- repo: https://github.com/psf/black
- rev: 22.3.0
+ rev: 23.7.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
diff --git a/google/cloud/_testing/__init__.py b/google/cloud/_testing/__init__.py
index 8bbd082..16b9292 100644
--- a/google/cloud/_testing/__init__.py
+++ b/google/cloud/_testing/__init__.py
@@ -76,7 +76,6 @@ def _tempdir_mgr():
class _GAXBaseAPI(object):
-
_random_gax_error = False
def __init__(self, **kw):
diff --git a/noxfile.py b/noxfile.py
index 166a235..4521c15 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -19,10 +19,10 @@
import nox
-BLACK_VERSION = "black==22.3.0"
+BLACK_VERSION = "black==23.7.0"
BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
-DEFAULT_PYTHON_VERSION = "3.7"
+DEFAULT_PYTHON_VERSION = "3.8"
CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py
index edb5cf3..77f32da 100644
--- a/tests/unit/test__helpers.py
+++ b/tests/unit/test__helpers.py
@@ -672,7 +672,6 @@ def test_it(self):
class Test__name_from_project_path(unittest.TestCase):
-
PROJECT = "PROJECT"
THING_NAME = "THING_NAME"
TEMPLATE = r"projects/(?P\w+)/things/(?P\w+)"
diff --git a/tests/unit/test_operation.py b/tests/unit/test_operation.py
index 3d90048..1be96e8 100644
--- a/tests/unit/test_operation.py
+++ b/tests/unit/test_operation.py
@@ -103,7 +103,6 @@ def test_w_conflict(self):
class TestOperation(unittest.TestCase):
-
OPERATION_NAME = "operations/projects/foo/instances/bar/operations/123"
@staticmethod
From 8cb7ce32343885d8b091f437b61c48f5216d16f9 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 26 Oct 2023 13:56:06 -0700
Subject: [PATCH 107/158] chore: rename rst files to avoid conflict with
service names (#253)
Source-Link: https://github.com/googleapis/synthtool/commit/d52e638b37b091054c869bfa6f5a9fedaba9e0dd
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:4f9b3b106ad0beafc2c8a415e3f62c1a0cc23cabea115dbe841b848f581cfe99
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index dd98abb..7f291db 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:08e34975760f002746b1d8c86fdc90660be45945ee6d9db914d1508acdf9a547
-# created: 2023-10-09T14:06:13.397766266Z
+ digest: sha256:4f9b3b106ad0beafc2c8a415e3f62c1a0cc23cabea115dbe841b848f581cfe99
+# created: 2023-10-18T20:26:37.410353675Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 0332d32..16170d0 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -467,9 +467,9 @@ typing-extensions==4.4.0 \
--hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \
--hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e
# via -r requirements.in
-urllib3==1.26.17 \
- --hash=sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21 \
- --hash=sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b
+urllib3==1.26.18 \
+ --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \
+ --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0
# via
# requests
# twine
From 078070d968bcf892e6bb2e6d334be726fcd74fd0 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 2 Nov 2023 21:21:18 -0400
Subject: [PATCH 108/158] chore: update docfx minimum Python version (#254)
* chore: update docfx minimum Python version
Source-Link: https://github.com/googleapis/synthtool/commit/bc07fd415c39853b382bcf8315f8eeacdf334055
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:30470597773378105e239b59fce8eb27cc97375580d592699206d17d117143d0
* update docfx nox session to use python 3.10
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/docs.yml | 2 +-
noxfile.py | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 7f291db..ec696b5 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:4f9b3b106ad0beafc2c8a415e3f62c1a0cc23cabea115dbe841b848f581cfe99
-# created: 2023-10-18T20:26:37.410353675Z
+ digest: sha256:30470597773378105e239b59fce8eb27cc97375580d592699206d17d117143d0
+# created: 2023-11-03T00:57:07.335914631Z
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index e97d89e..221806c 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -28,7 +28,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: "3.9"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/noxfile.py b/noxfile.py
index 4521c15..9836fcf 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -140,7 +140,7 @@ def docs(session):
)
-@nox.session(python="3.9")
+@nox.session(python="3.10")
def docfx(session):
"""Build the docfx yaml files for this library."""
From eefb3224fcce0f3f1e36b57f817c85aafe0fa2ce Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 9 Nov 2023 11:46:45 -0800
Subject: [PATCH 109/158] chore: bump urllib3 from 1.26.12 to 1.26.18 (#255)
Source-Link: https://github.com/googleapis/synthtool/commit/febacccc98d6d224aff9d0bd0373bb5a4cd5969c
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:caffe0a9277daeccc4d1de5c9b55ebba0901b57c2f713ec9c876b0d4ec064f61
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +-
.kokoro/requirements.txt | 532 ++++++++++++++++++++------------------
2 files changed, 277 insertions(+), 259 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index ec696b5..453b540 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:30470597773378105e239b59fce8eb27cc97375580d592699206d17d117143d0
-# created: 2023-11-03T00:57:07.335914631Z
+ digest: sha256:caffe0a9277daeccc4d1de5c9b55ebba0901b57c2f713ec9c876b0d4ec064f61
+# created: 2023-11-08T19:46:45.022803742Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 16170d0..8957e21 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -4,91 +4,75 @@
#
# pip-compile --allow-unsafe --generate-hashes requirements.in
#
-argcomplete==2.0.0 \
- --hash=sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20 \
- --hash=sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e
+argcomplete==3.1.4 \
+ --hash=sha256:72558ba729e4c468572609817226fb0a6e7e9a0a7d477b882be168c0b4a62b94 \
+ --hash=sha256:fbe56f8cda08aa9a04b307d8482ea703e96a6a801611acb4be9bf3942017989f
# via nox
-attrs==22.1.0 \
- --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \
- --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c
+attrs==23.1.0 \
+ --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \
+ --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015
# via gcp-releasetool
-bleach==5.0.1 \
- --hash=sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a \
- --hash=sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c
- # via readme-renderer
-cachetools==5.2.0 \
- --hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \
- --hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db
+cachetools==5.3.2 \
+ --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \
+ --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1
# via google-auth
certifi==2023.7.22 \
--hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \
--hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9
# via requests
-cffi==1.15.1 \
- --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
- --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \
- --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \
- --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \
- --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \
- --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \
- --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \
- --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \
- --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \
- --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \
- --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \
- --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \
- --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \
- --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \
- --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \
- --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \
- --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \
- --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \
- --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \
- --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \
- --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \
- --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \
- --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \
- --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \
- --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \
- --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \
- --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \
- --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \
- --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \
- --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \
- --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \
- --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \
- --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \
- --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \
- --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \
- --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \
- --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \
- --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \
- --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \
- --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \
- --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \
- --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \
- --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \
- --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \
- --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \
- --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \
- --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \
- --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \
- --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \
- --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \
- --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \
- --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \
- --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \
- --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \
- --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \
- --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \
- --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \
- --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \
- --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \
- --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \
- --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \
- --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \
- --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
- --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
+cffi==1.16.0 \
+ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \
+ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \
+ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \
+ --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \
+ --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \
+ --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \
+ --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \
+ --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \
+ --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \
+ --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \
+ --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \
+ --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \
+ --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \
+ --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \
+ --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \
+ --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \
+ --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \
+ --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \
+ --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \
+ --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \
+ --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \
+ --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \
+ --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \
+ --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \
+ --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \
+ --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \
+ --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \
+ --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \
+ --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \
+ --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \
+ --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \
+ --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \
+ --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \
+ --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \
+ --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \
+ --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \
+ --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \
+ --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \
+ --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \
+ --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \
+ --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \
+ --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \
+ --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \
+ --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \
+ --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \
+ --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \
+ --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \
+ --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \
+ --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \
+ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \
+ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \
+ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357
# via cryptography
charset-normalizer==2.1.1 \
--hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
@@ -109,78 +93,74 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-commonmark==0.9.1 \
- --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
- --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9
- # via rich
-cryptography==41.0.4 \
- --hash=sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67 \
- --hash=sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311 \
- --hash=sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8 \
- --hash=sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13 \
- --hash=sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143 \
- --hash=sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f \
- --hash=sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829 \
- --hash=sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd \
- --hash=sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397 \
- --hash=sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac \
- --hash=sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d \
- --hash=sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a \
- --hash=sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839 \
- --hash=sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e \
- --hash=sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6 \
- --hash=sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9 \
- --hash=sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860 \
- --hash=sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca \
- --hash=sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91 \
- --hash=sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d \
- --hash=sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714 \
- --hash=sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb \
- --hash=sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f
+cryptography==41.0.5 \
+ --hash=sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf \
+ --hash=sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84 \
+ --hash=sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e \
+ --hash=sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8 \
+ --hash=sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7 \
+ --hash=sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1 \
+ --hash=sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88 \
+ --hash=sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86 \
+ --hash=sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179 \
+ --hash=sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81 \
+ --hash=sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20 \
+ --hash=sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548 \
+ --hash=sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d \
+ --hash=sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d \
+ --hash=sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5 \
+ --hash=sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1 \
+ --hash=sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147 \
+ --hash=sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936 \
+ --hash=sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797 \
+ --hash=sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696 \
+ --hash=sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72 \
+ --hash=sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da \
+ --hash=sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723
# via
# gcp-releasetool
# secretstorage
-distlib==0.3.6 \
- --hash=sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46 \
- --hash=sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e
+distlib==0.3.7 \
+ --hash=sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057 \
+ --hash=sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8
# via virtualenv
-docutils==0.19 \
- --hash=sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 \
- --hash=sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc
+docutils==0.20.1 \
+ --hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \
+ --hash=sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b
# via readme-renderer
-filelock==3.8.0 \
- --hash=sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc \
- --hash=sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4
+filelock==3.13.1 \
+ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \
+ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c
# via virtualenv
-gcp-docuploader==0.6.4 \
- --hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \
- --hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf
+gcp-docuploader==0.6.5 \
+ --hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
+ --hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-gcp-releasetool==1.10.5 \
- --hash=sha256:174b7b102d704b254f2a26a3eda2c684fd3543320ec239baf771542a2e58e109 \
- --hash=sha256:e29d29927fe2ca493105a82958c6873bb2b90d503acac56be2c229e74de0eec9
+gcp-releasetool==1.16.0 \
+ --hash=sha256:27bf19d2e87aaa884096ff941aa3c592c482be3d6a2bfe6f06afafa6af2353e3 \
+ --hash=sha256:a316b197a543fd036209d0caba7a8eb4d236d8e65381c80cbc6d7efaa7606d63
# via -r requirements.in
-google-api-core==2.10.2 \
- --hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \
- --hash=sha256:34f24bd1d5f72a8c4519773d99ca6bf080a6c4e041b4e9f024fe230191dda62e
+google-api-core==2.12.0 \
+ --hash=sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553 \
+ --hash=sha256:ec6054f7d64ad13b41e43d96f735acbd763b0f3b695dabaa2d579673f6a6e160
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.14.1 \
- --hash=sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d \
- --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016
+google-auth==2.23.4 \
+ --hash=sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3 \
+ --hash=sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2
# via
# gcp-releasetool
# google-api-core
# google-cloud-core
# google-cloud-storage
-google-cloud-core==2.3.2 \
- --hash=sha256:8417acf6466be2fa85123441696c4badda48db314c607cf1e5d543fa8bdc22fe \
- --hash=sha256:b9529ee7047fd8d4bf4a2182de619154240df17fbe60ead399078c1ae152af9a
+google-cloud-core==2.3.3 \
+ --hash=sha256:37b80273c8d7eee1ae816b3a20ae43585ea50506cb0e60f3cf5be5f87f1373cb \
+ --hash=sha256:fbd11cad3e98a7e5b0343dc07cb1039a5ffd7a5bb96e1f1e27cee4bda4a90863
# via google-cloud-storage
-google-cloud-storage==2.6.0 \
- --hash=sha256:104ca28ae61243b637f2f01455cc8a05e8f15a2a18ced96cb587241cdd3820f5 \
- --hash=sha256:4ad0415ff61abdd8bb2ae81c1f8f7ec7d91a1011613f2db87c614c550f97bfe9
+google-cloud-storage==2.13.0 \
+ --hash=sha256:ab0bf2e1780a1b74cf17fccb13788070b729f50c252f0c94ada2aae0ca95437d \
+ --hash=sha256:f62dc4c7b6cd4360d072e3deb28035fbdad491ac3d9b0b1815a12daea10f37c7
# via gcp-docuploader
google-crc32c==1.5.0 \
--hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \
@@ -251,29 +231,31 @@ google-crc32c==1.5.0 \
--hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \
--hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \
--hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4
- # via google-resumable-media
-google-resumable-media==2.4.0 \
- --hash=sha256:2aa004c16d295c8f6c33b2b4788ba59d366677c0a25ae7382436cb30f776deaa \
- --hash=sha256:8d5518502f92b9ecc84ac46779bd4f09694ecb3ba38a3e7ca737a86d15cbca1f
+ # via
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.6.0 \
+ --hash=sha256:972852f6c65f933e15a4a210c2b96930763b47197cdf4aa5f5bea435efb626e7 \
+ --hash=sha256:fc03d344381970f79eebb632a3c18bb1828593a2dc5572b5f90115ef7d11e81b
# via google-cloud-storage
-googleapis-common-protos==1.57.0 \
- --hash=sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46 \
- --hash=sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c
+googleapis-common-protos==1.61.0 \
+ --hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \
+ --hash=sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b
# via google-api-core
idna==3.4 \
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
# via requests
-importlib-metadata==5.0.0 \
- --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \
- --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43
+importlib-metadata==6.8.0 \
+ --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \
+ --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743
# via
# -r requirements.in
# keyring
# twine
-jaraco-classes==3.2.3 \
- --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \
- --hash=sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a
+jaraco-classes==3.3.0 \
+ --hash=sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb \
+ --hash=sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621
# via keyring
jeepney==0.8.0 \
--hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
@@ -285,75 +267,121 @@ jinja2==3.1.2 \
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
# via gcp-releasetool
-keyring==23.11.0 \
- --hash=sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e \
- --hash=sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361
+keyring==24.2.0 \
+ --hash=sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6 \
+ --hash=sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509
# via
# gcp-releasetool
# twine
-markupsafe==2.1.1 \
- --hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \
- --hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \
- --hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \
- --hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \
- --hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \
- --hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \
- --hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \
- --hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \
- --hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \
- --hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \
- --hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \
- --hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \
- --hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \
- --hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \
- --hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \
- --hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \
- --hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \
- --hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \
- --hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \
- --hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \
- --hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \
- --hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \
- --hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \
- --hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \
- --hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \
- --hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \
- --hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \
- --hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \
- --hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \
- --hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \
- --hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \
- --hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \
- --hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \
- --hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \
- --hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \
- --hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \
- --hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \
- --hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \
- --hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \
- --hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7
+markdown-it-py==3.0.0 \
+ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
+ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
+ # via rich
+markupsafe==2.1.3 \
+ --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \
+ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \
+ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \
+ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \
+ --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \
+ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \
+ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \
+ --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \
+ --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \
+ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \
+ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \
+ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \
+ --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \
+ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \
+ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \
+ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \
+ --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \
+ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \
+ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \
+ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \
+ --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \
+ --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \
+ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \
+ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \
+ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \
+ --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \
+ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \
+ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \
+ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \
+ --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \
+ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \
+ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \
+ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \
+ --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \
+ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \
+ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \
+ --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \
+ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \
+ --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \
+ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \
+ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \
+ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \
+ --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \
+ --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \
+ --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \
+ --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \
+ --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \
+ --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \
+ --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \
+ --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \
+ --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \
+ --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \
+ --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \
+ --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \
+ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \
+ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \
+ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \
+ --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \
+ --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \
+ --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11
# via jinja2
-more-itertools==9.0.0 \
- --hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \
- --hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab
+mdurl==0.1.2 \
+ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
+ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
+ # via markdown-it-py
+more-itertools==10.1.0 \
+ --hash=sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a \
+ --hash=sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6
# via jaraco-classes
-nox==2022.11.21 \
- --hash=sha256:0e41a990e290e274cb205a976c4c97ee3c5234441a8132c8c3fd9ea3c22149eb \
- --hash=sha256:e21c31de0711d1274ca585a2c5fde36b1aa962005ba8e9322bf5eeed16dcd684
+nh3==0.2.14 \
+ --hash=sha256:116c9515937f94f0057ef50ebcbcc10600860065953ba56f14473ff706371873 \
+ --hash=sha256:18415df36db9b001f71a42a3a5395db79cf23d556996090d293764436e98e8ad \
+ --hash=sha256:203cac86e313cf6486704d0ec620a992c8bc164c86d3a4fd3d761dd552d839b5 \
+ --hash=sha256:2b0be5c792bd43d0abef8ca39dd8acb3c0611052ce466d0401d51ea0d9aa7525 \
+ --hash=sha256:377aaf6a9e7c63962f367158d808c6a1344e2b4f83d071c43fbd631b75c4f0b2 \
+ --hash=sha256:525846c56c2bcd376f5eaee76063ebf33cf1e620c1498b2a40107f60cfc6054e \
+ --hash=sha256:5529a3bf99402c34056576d80ae5547123f1078da76aa99e8ed79e44fa67282d \
+ --hash=sha256:7771d43222b639a4cd9e341f870cee336b9d886de1ad9bec8dddab22fe1de450 \
+ --hash=sha256:88c753efbcdfc2644a5012938c6b9753f1c64a5723a67f0301ca43e7b85dcf0e \
+ --hash=sha256:93a943cfd3e33bd03f77b97baa11990148687877b74193bf777956b67054dcc6 \
+ --hash=sha256:9be2f68fb9a40d8440cbf34cbf40758aa7f6093160bfc7fb018cce8e424f0c3a \
+ --hash=sha256:a0c509894fd4dccdff557068e5074999ae3b75f4c5a2d6fb5415e782e25679c4 \
+ --hash=sha256:ac8056e937f264995a82bf0053ca898a1cb1c9efc7cd68fa07fe0060734df7e4 \
+ --hash=sha256:aed56a86daa43966dd790ba86d4b810b219f75b4bb737461b6886ce2bde38fd6 \
+ --hash=sha256:e8986f1dd3221d1e741fda0a12eaa4a273f1d80a35e31a1ffe579e7c621d069e \
+ --hash=sha256:f99212a81c62b5f22f9e7c3e347aa00491114a5647e1f13bbebd79c3e5f08d75
+ # via readme-renderer
+nox==2023.4.22 \
+ --hash=sha256:0b1adc619c58ab4fa57d6ab2e7823fe47a32e70202f287d78474adcc7bda1891 \
+ --hash=sha256:46c0560b0dc609d7d967dc99e22cb463d3c4caf54a5fda735d6c11b5177e3a9f
# via -r requirements.in
-packaging==21.3 \
- --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \
- --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522
+packaging==23.2 \
+ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \
+ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7
# via
# gcp-releasetool
# nox
-pkginfo==1.8.3 \
- --hash=sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594 \
- --hash=sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c
+pkginfo==1.9.6 \
+ --hash=sha256:4b7a555a6d5a22169fcc9cf7bfd78d296b0361adad412a346c1226849af5e546 \
+ --hash=sha256:8fd5896e8718a4372f0ea9cc9d96f6417c9b986e23a4d116dda26b62cc29d046
# via twine
-platformdirs==2.5.4 \
- --hash=sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7 \
- --hash=sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10
+platformdirs==3.11.0 \
+ --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \
+ --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e
# via virtualenv
protobuf==3.20.3 \
--hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \
@@ -383,34 +411,30 @@ protobuf==3.20.3 \
# gcp-releasetool
# google-api-core
# googleapis-common-protos
-pyasn1==0.4.8 \
- --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
- --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
+pyasn1==0.5.0 \
+ --hash=sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57 \
+ --hash=sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde
# via
# pyasn1-modules
# rsa
-pyasn1-modules==0.2.8 \
- --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \
- --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74
+pyasn1-modules==0.3.0 \
+ --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \
+ --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d
# via google-auth
pycparser==2.21 \
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
# via cffi
-pygments==2.15.0 \
- --hash=sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094 \
- --hash=sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500
+pygments==2.16.1 \
+ --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \
+ --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29
# via
# readme-renderer
# rich
-pyjwt==2.6.0 \
- --hash=sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd \
- --hash=sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14
+pyjwt==2.8.0 \
+ --hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de \
+ --hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320
# via gcp-releasetool
-pyparsing==3.0.9 \
- --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \
- --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc
- # via packaging
pyperclip==1.8.2 \
--hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57
# via gcp-releasetool
@@ -418,9 +442,9 @@ python-dateutil==2.8.2 \
--hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
--hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
# via gcp-releasetool
-readme-renderer==37.3 \
- --hash=sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273 \
- --hash=sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343
+readme-renderer==42.0 \
+ --hash=sha256:13d039515c1f24de668e2c93f2e877b9dbe6c6c32328b90a40a49d8b2b85f36d \
+ --hash=sha256:2d55489f83be4992fe4454939d1a051c33edbab778e82761d060c9fc6b308cd1
# via twine
requests==2.31.0 \
--hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
@@ -431,17 +455,17 @@ requests==2.31.0 \
# google-cloud-storage
# requests-toolbelt
# twine
-requests-toolbelt==0.10.1 \
- --hash=sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7 \
- --hash=sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d
+requests-toolbelt==1.0.0 \
+ --hash=sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 \
+ --hash=sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06
# via twine
rfc3986==2.0.0 \
--hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \
--hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c
# via twine
-rich==12.6.0 \
- --hash=sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e \
- --hash=sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0
+rich==13.6.0 \
+ --hash=sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245 \
+ --hash=sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef
# via twine
rsa==4.9 \
--hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
@@ -455,43 +479,37 @@ six==1.16.0 \
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
# via
- # bleach
# gcp-docuploader
- # google-auth
# python-dateutil
-twine==4.0.1 \
- --hash=sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e \
- --hash=sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0
+twine==4.0.2 \
+ --hash=sha256:929bc3c280033347a00f847236564d1c52a3e61b1ac2516c97c48f3ceab756d8 \
+ --hash=sha256:9e102ef5fdd5a20661eb88fad46338806c3bd32cf1db729603fe3697b1bc83c8
# via -r requirements.in
-typing-extensions==4.4.0 \
- --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \
- --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e
+typing-extensions==4.8.0 \
+ --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \
+ --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef
# via -r requirements.in
-urllib3==1.26.18 \
- --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \
- --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0
+urllib3==2.0.7 \
+ --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \
+ --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e
# via
# requests
# twine
-virtualenv==20.16.7 \
- --hash=sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e \
- --hash=sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29
+virtualenv==20.24.6 \
+ --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \
+ --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381
# via nox
-webencodings==0.5.1 \
- --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
- --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
- # via bleach
-wheel==0.38.4 \
- --hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \
- --hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8
+wheel==0.41.3 \
+ --hash=sha256:488609bc63a29322326e05560731bf7bfea8e48ad646e1f5e40d366607de0942 \
+ --hash=sha256:4d4987ce51a49370ea65c0bfd2234e8ce80a12780820d9dc462597a6e60d0841
# via -r requirements.in
-zipp==3.10.0 \
- --hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \
- --hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8
+zipp==3.17.0 \
+ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \
+ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-setuptools==65.5.1 \
- --hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \
- --hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f
+setuptools==68.2.2 \
+ --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \
+ --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a
# via -r requirements.in
From ba7e61d70ceb3520eed14883c82b6232ac052652 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 9 Nov 2023 20:58:19 +0000
Subject: [PATCH 110/158] chore(deps): bump cryptography from 41.0.3 to 41.0.4
in /.kokoro (#248)
Bumps [cryptography](https://togithub.com/pyca/cryptography) from 41.0.3 to 41.0.4.
Changelog
Sourced from cryptography's changelog .
41.0.4 - 2023-09-19
* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.1.3.
.. _v41-0-3:
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show 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://togithub.com/googleapis/python-cloud-core/network/alerts).
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
From 936239534b98f3218728558d1cc1908ce21b19b5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 9 Nov 2023 21:00:30 +0000
Subject: [PATCH 111/158] chore(deps): bump urllib3 from 1.26.12 to 1.26.17 in
/.kokoro (#250)
Bumps [urllib3](https://togithub.com/urllib3/urllib3) from 1.26.12 to 1.26.17.
Release notes
Sourced from urllib3's releases .
1.26.17
Added the Cookie header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via Retry.remove_headers_on_redirect. (GHSA-v845-jxx5-vc9f)
1.26.16
Fixed thread-safety issue where accessing a PoolManager with many distinct origins would cause connection pools to be closed while requests are in progress (#2954 )
1.26.15
1.26.14
Fixed parsing of port 0 (zero) returning None, instead of 0 (#2850 )
Removed deprecated HTTPResponse.getheaders() calls in urllib3.contrib module.
1.26.13
Deprecated the HTTPResponse.getheaders() and HTTPResponse.getheader() methods.
Fixed an issue where parsing a URL with leading zeroes in the port would be rejected even when the port number after removing the zeroes was valid.
Fixed a deprecation warning when using cryptography v39.0.0.
Removed the <4 in the Requires-Python packaging metadata field.
Changelog
Sourced from urllib3's changelog .
1.26.17 (2023-10-02)
Added the Cookie header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via Retry.remove_headers_on_redirect. ([#3139](https://togithub.com/urllib3/urllib3/issues/3139) <https://togithub.com/urllib3/urllib3/pull/3139>_)
1.26.16 (2023-05-23)
Fixed thread-safety issue where accessing a PoolManager with many distinct origins
would cause connection pools to be closed while requests are in progress ([#2954](https://togithub.com/urllib3/urllib3/issues/2954) <https://togithub.com/urllib3/urllib3/pull/2954>_)
1.26.15 (2023-03-10)
Fix socket timeout value when HTTPConnection is reused ([#2645](https://togithub.com/urllib3/urllib3/issues/2645) <https://togithub.com/urllib3/urllib3/issues/2645>__)
Remove "!" character from the unreserved characters in IPv6 Zone ID parsing
([#2899](https://togithub.com/urllib3/urllib3/issues/2899) <https://togithub.com/urllib3/urllib3/issues/2899>__)
Fix IDNA handling of '\x80' byte ([#2901](https://togithub.com/urllib3/urllib3/issues/2901) <https://togithub.com/urllib3/urllib3/issues/2901>__)
1.26.14 (2023-01-11)
Fixed parsing of port 0 (zero) returning None, instead of 0. ([#2850](https://togithub.com/urllib3/urllib3/issues/2850) <https://togithub.com/urllib3/urllib3/issues/2850>__)
Removed deprecated getheaders() calls in contrib module. Fixed the type hint of PoolKey.key_retries by adding bool to the union. ([#2865](https://togithub.com/urllib3/urllib3/issues/2865) <https://togithub.com/urllib3/urllib3/issues/2865>__)
1.26.13 (2022-11-23)
Deprecated the HTTPResponse.getheaders() and HTTPResponse.getheader() methods.
Fixed an issue where parsing a URL with leading zeroes in the port would be rejected
even when the port number after removing the zeroes was valid.
Fixed a deprecation warning when using cryptography v39.0.0.
Removed the <4 in the Requires-Python packaging metadata field.
Commits
c9016bf Release 1.26.17
0122035 Backport GHSA-v845-jxx5-vc9f (#3139 )
e63989f Fix installing brotli extra on Python 2.7
2e7a24d [1.26] Configure OS for RTD to fix building docs
57181d6 [1.26] Improve error message when calling urllib3.request() (#3058 )
3c01480 [1.26] Run coverage even with failed jobs
d94029b Release 1.26.16
18e9214 Use trusted publishing for PyPI
d25cf83 [1.26] Fix invalid test_ssl_failure_midway_through_conn
25cca38 [1.26] Fix test_ssl_object_attributes
Additional commits viewable in compare view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show 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://togithub.com/googleapis/python-cloud-core/network/alerts).
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
From fd1ef6e03252edca3641cc26ec227a00b4f44221 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Sun, 3 Dec 2023 06:05:39 -0500
Subject: [PATCH 112/158] feat: Introduce compatibility with native namespace
packages (#260)
* feat: Introduce compatibility with native namespace packages
* lint
* mypy
* omit /tmp/ in coverage
---
.coveragerc | 1 +
google/__init__.py | 24 --------------------
google/cloud/__init__.py | 24 --------------------
google/cloud/obsolete/__init__.py | 11 ++++++---
noxfile.py | 2 +-
owlbot.py | 2 +-
setup.py | 12 ++++------
tests/unit/test_packaging.py | 37 +++++++++++++++++++++++++++++++
8 files changed, 52 insertions(+), 61 deletions(-)
delete mode 100644 google/__init__.py
delete mode 100644 google/cloud/__init__.py
create mode 100644 tests/unit/test_packaging.py
diff --git a/.coveragerc b/.coveragerc
index c6430d3..b6be3e3 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -3,6 +3,7 @@ branch = True
[report]
omit =
+ /tmp/*
google/cloud/__init__.py
google/cloud/_testing/__init__.py
google/cloud/environment_vars/__init__.py
diff --git a/google/__init__.py b/google/__init__.py
deleted file mode 100644
index 70a7bd9..0000000
--- a/google/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Google namespace package."""
-
-try:
- import pkg_resources
-
- pkg_resources.declare_namespace(__name__)
-except ImportError:
- import pkgutil
-
- __path__ = pkgutil.extend_path(__path__, __name__) # type: ignore
diff --git a/google/cloud/__init__.py b/google/cloud/__init__.py
deleted file mode 100644
index ef78099..0000000
--- a/google/cloud/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Google Cloud namespace package."""
-
-try:
- import pkg_resources
-
- pkg_resources.declare_namespace(__name__)
-except ImportError:
- import pkgutil
-
- __path__ = pkgutil.extend_path(__path__, __name__) # type: ignore
diff --git a/google/cloud/obsolete/__init__.py b/google/cloud/obsolete/__init__.py
index 99a83f9..854110e 100644
--- a/google/cloud/obsolete/__init__.py
+++ b/google/cloud/obsolete/__init__.py
@@ -14,9 +14,14 @@
"""Helpers for deprecated code and modules."""
+import sys
import warnings
-import pkg_resources
+
+if sys.version_info < (3, 8):
+ import importlib_metadata as metadata
+else:
+ import importlib.metadata as metadata
def complain(distribution_name):
@@ -29,7 +34,7 @@ def complain(distribution_name):
distribution_name (str): The name of the obsolete distribution.
"""
try:
- pkg_resources.get_distribution(distribution_name)
+ metadata.distribution(distribution_name)
warnings.warn(
"The {pkg} distribution is now obsolete. "
"Please `pip uninstall {pkg}`. "
@@ -38,5 +43,5 @@ def complain(distribution_name):
),
DeprecationWarning,
)
- except pkg_resources.DistributionNotFound:
+ except metadata.PackageNotFoundError:
pass
diff --git a/noxfile.py b/noxfile.py
index 9836fcf..d84e4b9 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -48,7 +48,7 @@ def mypy(session):
"types-mock",
"types-protobuf",
)
- session.run("mypy", "google", "tests")
+ session.run("mypy", "-p", "google", "-p", "tests")
@nox.session(python=DEFAULT_PYTHON_VERSION)
diff --git a/owlbot.py b/owlbot.py
index 1006250..69af86f 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -35,7 +35,7 @@
".flake8",
".coveragerc",
"setup.cfg",
- "README.rst",
+ "README.rst",
],
)
diff --git a/setup.py b/setup.py
index 06852b8..a6c51c3 100644
--- a/setup.py
+++ b/setup.py
@@ -30,6 +30,7 @@
dependencies = [
"google-api-core >= 1.31.6, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
"google-auth >= 1.25.0, < 3.0dev",
+ "importlib-metadata > 1.0.0; python_version<'3.8'",
]
extras = {"grpc": "grpcio >= 1.38.0, < 2.0dev"}
@@ -50,15 +51,11 @@
# Only include packages under the 'google' namespace. Do not include tests,
# benchmarks, etc.
packages = [
- package for package in setuptools.find_packages() if package.startswith("google")
+ package
+ for package in setuptools.find_namespace_packages()
+ if package.startswith("google")
]
-# Determine which namespaces are needed.
-namespaces = ["google"]
-if "google.cloud" in packages:
- namespaces.append("google.cloud")
-
-
setuptools.setup(
name=name,
version=version,
@@ -83,7 +80,6 @@
],
platforms="Posix; MacOS X; Windows",
packages=packages,
- namespace_packages=namespaces,
install_requires=dependencies,
extras_require=extras,
python_requires=">=3.7",
diff --git a/tests/unit/test_packaging.py b/tests/unit/test_packaging.py
new file mode 100644
index 0000000..e931116
--- /dev/null
+++ b/tests/unit/test_packaging.py
@@ -0,0 +1,37 @@
+# Copyright 2023 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import subprocess
+import sys
+
+
+def test_namespace_package_compat(tmp_path):
+ # The ``google`` namespace package should not be masked
+ # by the presence of ``google-cloud-core``.
+ google = tmp_path / "google"
+ google.mkdir()
+ google.joinpath("othermod.py").write_text("")
+ env = dict(os.environ, PYTHONPATH=str(tmp_path))
+ cmd = [sys.executable, "-m", "google.othermod"]
+ subprocess.check_call(cmd, env=env)
+
+ # The ``google.cloud`` namespace package should not be masked
+ # by the presence of ``google-cloud-core``.
+ google_cloud = tmp_path / "google" / "cloud"
+ google_cloud.mkdir()
+ google_cloud.joinpath("othermod.py").write_text("")
+ env = dict(os.environ, PYTHONPATH=str(tmp_path))
+ cmd = [sys.executable, "-m", "google.cloud.othermod"]
+ subprocess.check_call(cmd, env=env)
From 988a8af3fe5cf2c5f37e08c62b10dcd89e6333c1 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 3 Dec 2023 11:15:47 +0000
Subject: [PATCH 113/158] feat: Add support for Python 3.12 (#256)
* chore(python): Add Python 3.12
Source-Link: https://github.com/googleapis/synthtool/commit/af16e6d4672cc7b400f144de2fc3068b54ff47d2
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:bacc3af03bff793a03add584537b36b5644342931ad989e3ba1171d3bd5399f5
* Add python 3.12 to noxfile.py, setup.py and constraints
* update required checks
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +-
.github/sync-repo-settings.yaml | 2 +
.github/workflows/unittest.yml | 2 +-
.kokoro/samples/python3.12/common.cfg | 40 ++++++++++++++++++++
.kokoro/samples/python3.12/continuous.cfg | 6 +++
.kokoro/samples/python3.12/periodic-head.cfg | 11 ++++++
.kokoro/samples/python3.12/periodic.cfg | 6 +++
.kokoro/samples/python3.12/presubmit.cfg | 6 +++
CONTRIBUTING.rst | 6 ++-
noxfile.py | 2 +-
setup.py | 2 +
testing/constraints-3.12.txt | 0
12 files changed, 81 insertions(+), 6 deletions(-)
create mode 100644 .kokoro/samples/python3.12/common.cfg
create mode 100644 .kokoro/samples/python3.12/continuous.cfg
create mode 100644 .kokoro/samples/python3.12/periodic-head.cfg
create mode 100644 .kokoro/samples/python3.12/periodic.cfg
create mode 100644 .kokoro/samples/python3.12/presubmit.cfg
create mode 100644 testing/constraints-3.12.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 453b540..eb4d9f7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:caffe0a9277daeccc4d1de5c9b55ebba0901b57c2f713ec9c876b0d4ec064f61
-# created: 2023-11-08T19:46:45.022803742Z
+ digest: sha256:bacc3af03bff793a03add584537b36b5644342931ad989e3ba1171d3bd5399f5
+# created: 2023-11-23T18:17:28.105124211Z
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 445e64c..eeac265 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -15,6 +15,8 @@ branchProtectionRules:
- 'unit (3.8)'
- 'unit (3.9)'
- 'unit (3.10)'
+ - 'unit (3.11)'
+ - 'unit (3.12)'
- 'cover'
- 'docs'
- 'docfx'
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 8057a76..a32027b 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python: ['3.7', '3.8', '3.9', '3.10', '3.11']
+ python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/.kokoro/samples/python3.12/common.cfg b/.kokoro/samples/python3.12/common.cfg
new file mode 100644
index 0000000..9dced3a
--- /dev/null
+++ b/.kokoro/samples/python3.12/common.cfg
@@ -0,0 +1,40 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Build logs will be here
+action {
+ define_artifacts {
+ regex: "**/*sponge_log.xml"
+ }
+}
+
+# Specify which tests to run
+env_vars: {
+ key: "RUN_TESTS_SESSION"
+ value: "py-3.12"
+}
+
+# Declare build specific Cloud project.
+env_vars: {
+ key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ value: "python-docs-samples-tests-312"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples.sh"
+}
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
+}
+
+# Download secrets for samples
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
+
+# Download trampoline resources.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Use the trampoline script to run in docker.
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.12/continuous.cfg b/.kokoro/samples/python3.12/continuous.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.12/continuous.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.12/periodic-head.cfg b/.kokoro/samples/python3.12/periodic-head.cfg
new file mode 100644
index 0000000..f9e9e94
--- /dev/null
+++ b/.kokoro/samples/python3.12/periodic-head.cfg
@@ -0,0 +1,11 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
+}
diff --git a/.kokoro/samples/python3.12/periodic.cfg b/.kokoro/samples/python3.12/periodic.cfg
new file mode 100644
index 0000000..71cd1e5
--- /dev/null
+++ b/.kokoro/samples/python3.12/periodic.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "False"
+}
diff --git a/.kokoro/samples/python3.12/presubmit.cfg b/.kokoro/samples/python3.12/presubmit.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.12/presubmit.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index cdde200..d0a4897 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.7, 3.8, 3.9, 3.10 and 3.11 on both UNIX and Windows.
+ 3.7, 3.8, 3.9, 3.10, 3.11 and 3.12 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests.
- To run a single unit test::
- $ nox -s unit-3.11 -- -k
+ $ nox -s unit-3.12 -- -k
.. note::
@@ -226,12 +226,14 @@ We support:
- `Python 3.9`_
- `Python 3.10`_
- `Python 3.11`_
+- `Python 3.12`_
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
.. _Python 3.10: https://docs.python.org/3.10/
.. _Python 3.11: https://docs.python.org/3.11/
+.. _Python 3.12: https://docs.python.org/3.12/
Supported versions can be found in our ``noxfile.py`` `config`_.
diff --git a/noxfile.py b/noxfile.py
index d84e4b9..c79a18d 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -91,7 +91,7 @@ def default(session):
)
-@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11"])
+@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"])
def unit(session):
"""Default unit test session."""
default(session)
diff --git a/setup.py b/setup.py
index a6c51c3..62b5cb6 100644
--- a/setup.py
+++ b/setup.py
@@ -75,6 +75,8 @@
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
"Topic :: Internet",
],
diff --git a/testing/constraints-3.12.txt b/testing/constraints-3.12.txt
new file mode 100644
index 0000000..e69de29
From 1658e0219f2889aa4eba09927e3f21423876718c Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 3 Dec 2023 06:19:58 -0500
Subject: [PATCH 114/158] chore: bump cryptography from 41.0.5 to 41.0.6 in
/synthtool/gcp/templates/python_library/.kokoro (#258)
Source-Link: https://github.com/googleapis/synthtool/commit/9367caadcbb30b5b2719f30eb00c44cc913550ed
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2f155882785883336b4468d5218db737bb1d10c9cea7cb62219ad16fe248c03c
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/requirements.txt | 48 +++++++++++++++++++--------------------
2 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index eb4d9f7..773c1df 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:bacc3af03bff793a03add584537b36b5644342931ad989e3ba1171d3bd5399f5
-# created: 2023-11-23T18:17:28.105124211Z
+ digest: sha256:2f155882785883336b4468d5218db737bb1d10c9cea7cb62219ad16fe248c03c
+# created: 2023-11-29T14:54:29.548172703Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 8957e21..e5c1ffc 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,30 +93,30 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-cryptography==41.0.5 \
- --hash=sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf \
- --hash=sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84 \
- --hash=sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e \
- --hash=sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8 \
- --hash=sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7 \
- --hash=sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1 \
- --hash=sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88 \
- --hash=sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86 \
- --hash=sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179 \
- --hash=sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81 \
- --hash=sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20 \
- --hash=sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548 \
- --hash=sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d \
- --hash=sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d \
- --hash=sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5 \
- --hash=sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1 \
- --hash=sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147 \
- --hash=sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936 \
- --hash=sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797 \
- --hash=sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696 \
- --hash=sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72 \
- --hash=sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da \
- --hash=sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723
+cryptography==41.0.6 \
+ --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \
+ --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \
+ --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \
+ --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \
+ --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \
+ --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \
+ --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \
+ --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \
+ --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \
+ --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \
+ --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \
+ --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \
+ --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \
+ --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \
+ --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \
+ --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \
+ --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \
+ --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \
+ --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \
+ --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \
+ --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \
+ --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \
+ --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae
# via
# gcp-releasetool
# secretstorage
From b855e7f397a04e3586bb3c28bbd111b47610e1f3 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Thu, 7 Dec 2023 14:16:49 -0500
Subject: [PATCH 115/158] build: treat warnings as errors (#262)
---
google/cloud/_helpers/__init__.py | 2 +-
noxfile.py | 4 ++--
pytest.ini | 9 +++++++++
setup.py | 8 ++++++--
tests/unit/test__helpers.py | 4 ++--
5 files changed, 20 insertions(+), 7 deletions(-)
create mode 100644 pytest.ini
diff --git a/google/cloud/_helpers/__init__.py b/google/cloud/_helpers/__init__.py
index 5a7e2b0..e0be5cc 100644
--- a/google/cloud/_helpers/__init__.py
+++ b/google/cloud/_helpers/__init__.py
@@ -39,7 +39,7 @@
grpc = None
-_NOW = datetime.datetime.utcnow # To be replaced by tests.
+_NOW = datetime.datetime.now(datetime.timezone.utc)
UTC = datetime.timezone.utc # Singleton instance to be used throughout.
_EPOCH = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
diff --git a/noxfile.py b/noxfile.py
index c79a18d..6a318e6 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -73,8 +73,8 @@ def default(session):
)
# Install all test dependencies, then install local packages in-place.
- session.install("pytest", "pytest-cov", "grpcio >= 1.0.2", "-c", constraints_path)
- session.install("-e", ".", "-c", constraints_path)
+ session.install("pytest", "pytest-cov", "-c", constraints_path)
+ session.install("-e", ".[grpc]", "-c", constraints_path)
# Run py.test against the unit tests.
session.run(
diff --git a/pytest.ini b/pytest.ini
new file mode 100644
index 0000000..76b110d
--- /dev/null
+++ b/pytest.ini
@@ -0,0 +1,9 @@
+[pytest]
+filterwarnings =
+ # treat all warnings as errors
+ error
+ # Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is fixed
+ ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning
+ # Remove once Release PR https://github.com/googleapis/python-api-common-protos/pull/191 is merged
+ ignore:.*pkg_resources.declare_namespace:DeprecationWarning
+ ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
diff --git a/setup.py b/setup.py
index 62b5cb6..eced53a 100644
--- a/setup.py
+++ b/setup.py
@@ -32,8 +32,12 @@
"google-auth >= 1.25.0, < 3.0dev",
"importlib-metadata > 1.0.0; python_version<'3.8'",
]
-extras = {"grpc": "grpcio >= 1.38.0, < 2.0dev"}
-
+extras = {
+ "grpc": [
+ "grpcio >= 1.38.0, < 2.0dev",
+ "grpcio-status >= 1.38.0, < 2.0.dev0",
+ ],
+}
# Setup boilerplate below this line.
diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py
index 77f32da..2901602 100644
--- a/tests/unit/test__helpers.py
+++ b/tests/unit/test__helpers.py
@@ -138,7 +138,7 @@ def test_w_utc_datetime(self):
from google.cloud._helpers import UTC
from google.cloud._helpers import _microseconds_from_datetime
- NOW = datetime.datetime.utcnow().replace(tzinfo=UTC)
+ NOW = datetime.datetime.now().replace(tzinfo=UTC)
NOW_MICROS = _microseconds_from_datetime(NOW)
MILLIS = NOW_MICROS // 1000
result = self._call_fut(NOW)
@@ -163,7 +163,7 @@ def test_w_naive_datetime(self):
from google.cloud._helpers import UTC
from google.cloud._helpers import _microseconds_from_datetime
- NOW = datetime.datetime.utcnow()
+ NOW = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)
UTC_NOW = NOW.replace(tzinfo=UTC)
UTC_NOW_MICROS = _microseconds_from_datetime(UTC_NOW)
MILLIS = UTC_NOW_MICROS // 1000
From 6541408822ff737c68accc46868572c9efede0c5 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 7 Dec 2023 20:49:55 +0100
Subject: [PATCH 116/158] chore(deps): update all dependencies (#264)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(deps): update all dependencies
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* build: update warning filters
* build: update warning filters
* build: update warning filter
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/workflows/mypy.yml | 4 ++--
pytest.ini | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index c632426..3915cdd 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Install nox
diff --git a/pytest.ini b/pytest.ini
index 76b110d..90db954 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -4,6 +4,8 @@ filterwarnings =
error
# Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is fixed
ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning
- # Remove once Release PR https://github.com/googleapis/python-api-common-protos/pull/191 is merged
+ # Remove after support for Python 3.7 is dropped
+ ignore:After January 1, 2024, new releases of this library will drop support for Python 3.7:DeprecationWarning
+ # Remove once the minimum supported version of `google-api-core` is 2.15.0
ignore:.*pkg_resources.declare_namespace:DeprecationWarning
ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
From 4c9254ce167fa62a8eb6149fcd7c303c64b79dea Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 7 Dec 2023 14:52:21 -0500
Subject: [PATCH 117/158] chore(main): release 2.4.0 (#261)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou
---
CHANGELOG.md | 8 ++++++++
google/cloud/version.py | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd90738..1273784 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.4.0](https://github.com/googleapis/python-cloud-core/compare/v2.3.3...v2.4.0) (2023-12-07)
+
+
+### Features
+
+* Add support for Python 3.12 ([#256](https://github.com/googleapis/python-cloud-core/issues/256)) ([988a8af](https://github.com/googleapis/python-cloud-core/commit/988a8af3fe5cf2c5f37e08c62b10dcd89e6333c1))
+* Introduce compatibility with native namespace packages ([#260](https://github.com/googleapis/python-cloud-core/issues/260)) ([fd1ef6e](https://github.com/googleapis/python-cloud-core/commit/fd1ef6e03252edca3641cc26ec227a00b4f44221))
+
## [2.3.3](https://github.com/googleapis/python-cloud-core/compare/v2.3.2...v2.3.3) (2023-06-29)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index a95986d..fe11624 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.3.3"
+__version__ = "2.4.0"
From 5310aef5b387aecd87d53acb7beb758dc9acb7e3 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Thu, 7 Dec 2023 16:06:26 -0500
Subject: [PATCH 118/158] fix: fix regression with `google.cloud._helpers._NOW`
(#266)
* fix: fix regression with
* remove comment
---
google/cloud/_helpers/__init__.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/google/cloud/_helpers/__init__.py b/google/cloud/_helpers/__init__.py
index e0be5cc..7a198cc 100644
--- a/google/cloud/_helpers/__init__.py
+++ b/google/cloud/_helpers/__init__.py
@@ -38,8 +38,8 @@
except ImportError: # pragma: NO COVER
grpc = None
-
-_NOW = datetime.datetime.now(datetime.timezone.utc)
+# `google.cloud._helpers._NOW` is deprecated
+_NOW = datetime.datetime.utcnow
UTC = datetime.timezone.utc # Singleton instance to be used throughout.
_EPOCH = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
From a11a7a5824657898599f79a861121445f47e2e2a Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 7 Dec 2023 16:08:27 -0500
Subject: [PATCH 119/158] chore(main): release 2.4.1 (#267)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1273784..4c26312 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.4.1](https://github.com/googleapis/python-cloud-core/compare/v2.4.0...v2.4.1) (2023-12-07)
+
+
+### Bug Fixes
+
+* Fix regression with `google.cloud._helpers._NOW` ([#266](https://github.com/googleapis/python-cloud-core/issues/266)) ([5310aef](https://github.com/googleapis/python-cloud-core/commit/5310aef5b387aecd87d53acb7beb758dc9acb7e3))
+
## [2.4.0](https://github.com/googleapis/python-cloud-core/compare/v2.3.3...v2.4.0) (2023-12-07)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index fe11624..00697dc 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.4.0"
+__version__ = "2.4.1"
From 60c43ef0a7fb650eac0c4da4fff131246b09a28c Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 10 Dec 2023 09:00:09 -0500
Subject: [PATCH 120/158] build: update actions/checkout and
actions/setup-python (#268)
Source-Link: https://github.com/googleapis/synthtool/commit/3551acd1261fd8f616cbfd054cda9bd6d6ac75f4
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:230f7fe8a0d2ed81a519cfc15c6bb11c5b46b9fb449b8b1219b3771bcb520ad2
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/docs.yml | 8 ++++----
.github/workflows/lint.yml | 4 ++--
.github/workflows/unittest.yml | 8 ++++----
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 773c1df..40bf997 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:2f155882785883336b4468d5218db737bb1d10c9cea7cb62219ad16fe248c03c
-# created: 2023-11-29T14:54:29.548172703Z
+ digest: sha256:230f7fe8a0d2ed81a519cfc15c6bb11c5b46b9fb449b8b1219b3771bcb520ad2
+# created: 2023-12-09T15:16:25.430769578Z
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 221806c..698fbc5 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Install nox
@@ -24,9 +24,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install nox
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 16d5a9e..4866193 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Install nox
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index a32027b..d6ca656 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -11,9 +11,9 @@ jobs:
python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install nox
@@ -37,9 +37,9 @@ jobs:
- unit
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Install coverage
From ba3278b5d460c235f8b35af56085ffe7e7de2c3d Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 8 Jan 2024 10:31:28 -0500
Subject: [PATCH 121/158] build: update actions/upload-artifact and
actions/download-artifact (#270)
Source-Link: https://github.com/googleapis/synthtool/commit/280ddaed417057dfe5b1395731de07b7d09f5058
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:346ab2efb51649c5dde7756cbbdc60dd394852ba83b9bbffc292a63549f33c17
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/unittest.yml | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 40bf997..9bee240 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:230f7fe8a0d2ed81a519cfc15c6bb11c5b46b9fb449b8b1219b3771bcb520ad2
-# created: 2023-12-09T15:16:25.430769578Z
+ digest: sha256:346ab2efb51649c5dde7756cbbdc60dd394852ba83b9bbffc292a63549f33c17
+# created: 2023-12-14T22:17:57.611773021Z
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index d6ca656..f4a337c 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -26,9 +26,9 @@ jobs:
run: |
nox -s unit-${{ matrix.python }}
- name: Upload coverage results
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: coverage-artifacts
+ name: coverage-artifact-${{ matrix.python }}
path: .coverage-${{ matrix.python }}
cover:
@@ -47,11 +47,11 @@ jobs:
python -m pip install --upgrade setuptools pip wheel
python -m pip install coverage
- name: Download coverage results
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4
with:
- name: coverage-artifacts
path: .coverage-results/
- name: Report coverage results
run: |
- coverage combine .coverage-results/.coverage*
+ find .coverage-results -type f -name '*.zip' -exec unzip {} \;
+ coverage combine .coverage-results/**/.coverage*
coverage report --show-missing --fail-under=100
From 9b8b68d01bf3f4b3b8801e826eab94b162a37f10 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 24 Jan 2024 10:43:10 -0500
Subject: [PATCH 122/158] build(python): fix `docs` and `docfx` builds (#272)
* build(python): fix `docs` and `docfx` builds
Source-Link: https://github.com/googleapis/synthtool/commit/fac8444edd5f5526e804c306b766a271772a3e2f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:5ea6d0ab82c956b50962f91d94e206d3921537ae5fe1549ec5326381d8905cfa
* See https://github.com/googleapis/synthtool/pull/1916
* See https://github.com/python/typeshed/issues/11254
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 6 +++---
.kokoro/requirements.txt | 6 +++---
noxfile.py | 34 +++++++++++++++++++++++++++++++---
3 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 9bee240..d8a1bbc 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,4 +1,4 @@
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:346ab2efb51649c5dde7756cbbdc60dd394852ba83b9bbffc292a63549f33c17
-# created: 2023-12-14T22:17:57.611773021Z
+ digest: sha256:5ea6d0ab82c956b50962f91d94e206d3921537ae5fe1549ec5326381d8905cfa
+# created: 2024-01-15T16:32:08.142785673Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index e5c1ffc..bb3d6ca 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -263,9 +263,9 @@ jeepney==0.8.0 \
# via
# keyring
# secretstorage
-jinja2==3.1.2 \
- --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
- --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
+jinja2==3.1.3 \
+ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
+ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90
# via gcp-releasetool
keyring==24.2.0 \
--hash=sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6 \
diff --git a/noxfile.py b/noxfile.py
index 6a318e6..99e8ef1 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -42,11 +42,13 @@ def lint(session):
def mypy(session):
"""Run type-checking."""
session.install(".", "mypy")
+ # Exclude types-protobuf==4.24.0.20240106
+ # See https://github.com/python/typeshed/issues/11254
session.install(
"types-setuptools",
"types-requests",
"types-mock",
- "types-protobuf",
+ "types-protobuf!=4.24.0.20240106",
)
session.run("mypy", "-p", "google", "-p", "tests")
@@ -123,7 +125,20 @@ def docs(session):
session.install(".", "grpcio >= 1.8.2", "grpcio-gcp >= 0.2.2")
session.install("-e", ".")
- session.install("sphinx==4.0.1", "alabaster", "recommonmark")
+ session.install(
+ # We need to pin to specific versions of the `sphinxcontrib-*` packages
+ # which still support sphinx 4.x.
+ # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344
+ # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345.
+ "sphinxcontrib-applehelp==1.0.4",
+ "sphinxcontrib-devhelp==1.0.2",
+ "sphinxcontrib-htmlhelp==2.0.1",
+ "sphinxcontrib-qthelp==1.0.3",
+ "sphinxcontrib-serializinghtml==1.1.5",
+ "sphinx==4.5.0",
+ "alabaster",
+ "recommonmark",
+ )
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
session.run(
@@ -145,7 +160,20 @@ def docfx(session):
"""Build the docfx yaml files for this library."""
session.install("-e", ".")
- session.install("gcp-sphinx-docfx-yaml", "alabaster", "recommonmark")
+ session.install(
+ # We need to pin to specific versions of the `sphinxcontrib-*` packages
+ # which still support sphinx 4.x.
+ # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344
+ # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345.
+ "sphinxcontrib-applehelp==1.0.4",
+ "sphinxcontrib-devhelp==1.0.2",
+ "sphinxcontrib-htmlhelp==2.0.1",
+ "sphinxcontrib-qthelp==1.0.3",
+ "sphinxcontrib-serializinghtml==1.1.5",
+ "gcp-sphinx-docfx-yaml",
+ "alabaster",
+ "recommonmark",
+ )
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
session.run(
From 97684603291e643ac5782d4254fdb72b6299d2e1 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 6 Feb 2024 15:47:23 -0800
Subject: [PATCH 123/158] build(deps): bump cryptography from 41.0.6 to 42.0.0
in /synthtool/gcp/templates/python_library/.kokoro (#274)
Source-Link: https://github.com/googleapis/synthtool/commit/e13b22b1f660c80e4c3e735a9177d2f16c4b8bdc
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:97b671488ad548ef783a452a9e1276ac10f144d5ae56d98cc4bf77ba504082b4
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +--
.kokoro/requirements.txt | 57 ++++++++++++++++++++++-----------------
2 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index d8a1bbc..2aefd0e 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:5ea6d0ab82c956b50962f91d94e206d3921537ae5fe1549ec5326381d8905cfa
-# created: 2024-01-15T16:32:08.142785673Z
+ digest: sha256:97b671488ad548ef783a452a9e1276ac10f144d5ae56d98cc4bf77ba504082b4
+# created: 2024-02-06T03:20:16.660474034Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index bb3d6ca..8c11c9f 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,30 +93,39 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-cryptography==41.0.6 \
- --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \
- --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \
- --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \
- --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \
- --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \
- --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \
- --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \
- --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \
- --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \
- --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \
- --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \
- --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \
- --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \
- --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \
- --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \
- --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \
- --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \
- --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \
- --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \
- --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \
- --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \
- --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \
- --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae
+cryptography==42.0.0 \
+ --hash=sha256:0a68bfcf57a6887818307600c3c0ebc3f62fbb6ccad2240aa21887cda1f8df1b \
+ --hash=sha256:146e971e92a6dd042214b537a726c9750496128453146ab0ee8971a0299dc9bd \
+ --hash=sha256:14e4b909373bc5bf1095311fa0f7fcabf2d1a160ca13f1e9e467be1ac4cbdf94 \
+ --hash=sha256:206aaf42e031b93f86ad60f9f5d9da1b09164f25488238ac1dc488334eb5e221 \
+ --hash=sha256:3005166a39b70c8b94455fdbe78d87a444da31ff70de3331cdec2c568cf25b7e \
+ --hash=sha256:324721d93b998cb7367f1e6897370644751e5580ff9b370c0a50dc60a2003513 \
+ --hash=sha256:33588310b5c886dfb87dba5f013b8d27df7ffd31dc753775342a1e5ab139e59d \
+ --hash=sha256:35cf6ed4c38f054478a9df14f03c1169bb14bd98f0b1705751079b25e1cb58bc \
+ --hash=sha256:3ca482ea80626048975360c8e62be3ceb0f11803180b73163acd24bf014133a0 \
+ --hash=sha256:56ce0c106d5c3fec1038c3cca3d55ac320a5be1b44bf15116732d0bc716979a2 \
+ --hash=sha256:5a217bca51f3b91971400890905a9323ad805838ca3fa1e202a01844f485ee87 \
+ --hash=sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01 \
+ --hash=sha256:69fd009a325cad6fbfd5b04c711a4da563c6c4854fc4c9544bff3088387c77c0 \
+ --hash=sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4 \
+ --hash=sha256:74f18a4c8ca04134d2052a140322002fef535c99cdbc2a6afc18a8024d5c9d5b \
+ --hash=sha256:85f759ed59ffd1d0baad296e72780aa62ff8a71f94dc1ab340386a1207d0ea81 \
+ --hash=sha256:87086eae86a700307b544625e3ba11cc600c3c0ef8ab97b0fda0705d6db3d4e3 \
+ --hash=sha256:8814722cffcfd1fbd91edd9f3451b88a8f26a5fd41b28c1c9193949d1c689dc4 \
+ --hash=sha256:8fedec73d590fd30c4e3f0d0f4bc961aeca8390c72f3eaa1a0874d180e868ddf \
+ --hash=sha256:9515ea7f596c8092fdc9902627e51b23a75daa2c7815ed5aa8cf4f07469212ec \
+ --hash=sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce \
+ --hash=sha256:a2a8d873667e4fd2f34aedab02ba500b824692c6542e017075a2efc38f60a4c0 \
+ --hash=sha256:bd7cf7a8d9f34cc67220f1195884151426ce616fdc8285df9054bfa10135925f \
+ --hash=sha256:bdce70e562c69bb089523e75ef1d9625b7417c6297a76ac27b1b8b1eb51b7d0f \
+ --hash=sha256:be14b31eb3a293fc6e6aa2807c8a3224c71426f7c4e3639ccf1a2f3ffd6df8c3 \
+ --hash=sha256:be41b0c7366e5549265adf2145135dca107718fa44b6e418dc7499cfff6b4689 \
+ --hash=sha256:c310767268d88803b653fffe6d6f2f17bb9d49ffceb8d70aed50ad45ea49ab08 \
+ --hash=sha256:c58115384bdcfe9c7f644c72f10f6f42bed7cf59f7b52fe1bf7ae0a622b3a139 \
+ --hash=sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434 \
+ --hash=sha256:ca20550bb590db16223eb9ccc5852335b48b8f597e2f6f0878bbfd9e7314eb17 \
+ --hash=sha256:d97aae66b7de41cdf5b12087b5509e4e9805ed6f562406dfcf60e8481a9a28f8 \
+ --hash=sha256:e9326ca78111e4c645f7e49cbce4ed2f3f85e17b61a563328c85a5208cf34440
# via
# gcp-releasetool
# secretstorage
From bd3a677cc6a59b8cf6445d3a6be7af9d5195517d Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 21 Feb 2024 18:49:47 -0500
Subject: [PATCH 124/158] build(deps): bump cryptography from 42.0.0 to 42.0.2
in .kokoro (#275)
Source-Link: https://github.com/googleapis/synthtool/commit/8d392a55db44b00b4a9b995318051e334eecdcf1
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:a0c4463fcfd9893fc172a3b3db2b6ac0c7b94ec6ad458c7dcea12d9693615ac3
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +--
.kokoro/requirements.txt | 66 +++++++++++++++++++--------------------
2 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 2aefd0e..51213ca 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:97b671488ad548ef783a452a9e1276ac10f144d5ae56d98cc4bf77ba504082b4
-# created: 2024-02-06T03:20:16.660474034Z
+ digest: sha256:a0c4463fcfd9893fc172a3b3db2b6ac0c7b94ec6ad458c7dcea12d9693615ac3
+# created: 2024-02-17T12:21:23.177926195Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 8c11c9f..f80bdcd 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,39 +93,39 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-cryptography==42.0.0 \
- --hash=sha256:0a68bfcf57a6887818307600c3c0ebc3f62fbb6ccad2240aa21887cda1f8df1b \
- --hash=sha256:146e971e92a6dd042214b537a726c9750496128453146ab0ee8971a0299dc9bd \
- --hash=sha256:14e4b909373bc5bf1095311fa0f7fcabf2d1a160ca13f1e9e467be1ac4cbdf94 \
- --hash=sha256:206aaf42e031b93f86ad60f9f5d9da1b09164f25488238ac1dc488334eb5e221 \
- --hash=sha256:3005166a39b70c8b94455fdbe78d87a444da31ff70de3331cdec2c568cf25b7e \
- --hash=sha256:324721d93b998cb7367f1e6897370644751e5580ff9b370c0a50dc60a2003513 \
- --hash=sha256:33588310b5c886dfb87dba5f013b8d27df7ffd31dc753775342a1e5ab139e59d \
- --hash=sha256:35cf6ed4c38f054478a9df14f03c1169bb14bd98f0b1705751079b25e1cb58bc \
- --hash=sha256:3ca482ea80626048975360c8e62be3ceb0f11803180b73163acd24bf014133a0 \
- --hash=sha256:56ce0c106d5c3fec1038c3cca3d55ac320a5be1b44bf15116732d0bc716979a2 \
- --hash=sha256:5a217bca51f3b91971400890905a9323ad805838ca3fa1e202a01844f485ee87 \
- --hash=sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01 \
- --hash=sha256:69fd009a325cad6fbfd5b04c711a4da563c6c4854fc4c9544bff3088387c77c0 \
- --hash=sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4 \
- --hash=sha256:74f18a4c8ca04134d2052a140322002fef535c99cdbc2a6afc18a8024d5c9d5b \
- --hash=sha256:85f759ed59ffd1d0baad296e72780aa62ff8a71f94dc1ab340386a1207d0ea81 \
- --hash=sha256:87086eae86a700307b544625e3ba11cc600c3c0ef8ab97b0fda0705d6db3d4e3 \
- --hash=sha256:8814722cffcfd1fbd91edd9f3451b88a8f26a5fd41b28c1c9193949d1c689dc4 \
- --hash=sha256:8fedec73d590fd30c4e3f0d0f4bc961aeca8390c72f3eaa1a0874d180e868ddf \
- --hash=sha256:9515ea7f596c8092fdc9902627e51b23a75daa2c7815ed5aa8cf4f07469212ec \
- --hash=sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce \
- --hash=sha256:a2a8d873667e4fd2f34aedab02ba500b824692c6542e017075a2efc38f60a4c0 \
- --hash=sha256:bd7cf7a8d9f34cc67220f1195884151426ce616fdc8285df9054bfa10135925f \
- --hash=sha256:bdce70e562c69bb089523e75ef1d9625b7417c6297a76ac27b1b8b1eb51b7d0f \
- --hash=sha256:be14b31eb3a293fc6e6aa2807c8a3224c71426f7c4e3639ccf1a2f3ffd6df8c3 \
- --hash=sha256:be41b0c7366e5549265adf2145135dca107718fa44b6e418dc7499cfff6b4689 \
- --hash=sha256:c310767268d88803b653fffe6d6f2f17bb9d49ffceb8d70aed50ad45ea49ab08 \
- --hash=sha256:c58115384bdcfe9c7f644c72f10f6f42bed7cf59f7b52fe1bf7ae0a622b3a139 \
- --hash=sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434 \
- --hash=sha256:ca20550bb590db16223eb9ccc5852335b48b8f597e2f6f0878bbfd9e7314eb17 \
- --hash=sha256:d97aae66b7de41cdf5b12087b5509e4e9805ed6f562406dfcf60e8481a9a28f8 \
- --hash=sha256:e9326ca78111e4c645f7e49cbce4ed2f3f85e17b61a563328c85a5208cf34440
+cryptography==42.0.2 \
+ --hash=sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380 \
+ --hash=sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589 \
+ --hash=sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea \
+ --hash=sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65 \
+ --hash=sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a \
+ --hash=sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3 \
+ --hash=sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008 \
+ --hash=sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1 \
+ --hash=sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2 \
+ --hash=sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635 \
+ --hash=sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2 \
+ --hash=sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90 \
+ --hash=sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee \
+ --hash=sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a \
+ --hash=sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242 \
+ --hash=sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12 \
+ --hash=sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2 \
+ --hash=sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d \
+ --hash=sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be \
+ --hash=sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee \
+ --hash=sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6 \
+ --hash=sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529 \
+ --hash=sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929 \
+ --hash=sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1 \
+ --hash=sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6 \
+ --hash=sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a \
+ --hash=sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446 \
+ --hash=sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9 \
+ --hash=sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888 \
+ --hash=sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4 \
+ --hash=sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33 \
+ --hash=sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f
# via
# gcp-releasetool
# secretstorage
From ac13de87e06b62027dc90194f87b62fc7f5e92b8 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 29 Feb 2024 09:15:03 -0800
Subject: [PATCH 125/158] build(deps): bump cryptography from 42.0.2 to 42.0.4
in .kokoro (#276)
Source-Link: https://github.com/googleapis/synthtool/commit/d895aec3679ad22aa120481f746bf9f2f325f26f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:98f3afd11308259de6e828e37376d18867fd321aba07826e29e4f8d9cab56bad
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +--
.kokoro/requirements.txt | 66 +++++++++++++++++++--------------------
2 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 51213ca..e4e943e 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:a0c4463fcfd9893fc172a3b3db2b6ac0c7b94ec6ad458c7dcea12d9693615ac3
-# created: 2024-02-17T12:21:23.177926195Z
+ digest: sha256:98f3afd11308259de6e828e37376d18867fd321aba07826e29e4f8d9cab56bad
+# created: 2024-02-27T15:56:18.442440378Z
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index f80bdcd..bda8e38 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,39 +93,39 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-cryptography==42.0.2 \
- --hash=sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380 \
- --hash=sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589 \
- --hash=sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea \
- --hash=sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65 \
- --hash=sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a \
- --hash=sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3 \
- --hash=sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008 \
- --hash=sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1 \
- --hash=sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2 \
- --hash=sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635 \
- --hash=sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2 \
- --hash=sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90 \
- --hash=sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee \
- --hash=sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a \
- --hash=sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242 \
- --hash=sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12 \
- --hash=sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2 \
- --hash=sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d \
- --hash=sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be \
- --hash=sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee \
- --hash=sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6 \
- --hash=sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529 \
- --hash=sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929 \
- --hash=sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1 \
- --hash=sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6 \
- --hash=sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a \
- --hash=sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446 \
- --hash=sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9 \
- --hash=sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888 \
- --hash=sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4 \
- --hash=sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33 \
- --hash=sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f
+cryptography==42.0.4 \
+ --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \
+ --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \
+ --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \
+ --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \
+ --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \
+ --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \
+ --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \
+ --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \
+ --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \
+ --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \
+ --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \
+ --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \
+ --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \
+ --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \
+ --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \
+ --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \
+ --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \
+ --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \
+ --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \
+ --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \
+ --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \
+ --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \
+ --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \
+ --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \
+ --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \
+ --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \
+ --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \
+ --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \
+ --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \
+ --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \
+ --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \
+ --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449
# via
# gcp-releasetool
# secretstorage
From 1bcddd8178e3d3f7a62b5a6b0033d4a5d55dc3a6 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 18 Mar 2024 12:56:29 -0400
Subject: [PATCH 126/158] chore(python): update dependencies in /.kokoro (#279)
Source-Link: https://github.com/googleapis/synthtool/commit/db94845da69ccdfefd7ce55c84e6cfa74829747e
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:a8a80fc6456e433df53fc2a0d72ca0345db0ddefb409f1b75b118dfd1babd952
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +-
.kokoro/build.sh | 7 --
.kokoro/docker/docs/Dockerfile | 4 +
.kokoro/docker/docs/requirements.in | 1 +
.kokoro/docker/docs/requirements.txt | 38 +++++++++
.kokoro/requirements.in | 3 +-
.kokoro/requirements.txt | 114 ++++++++++++---------------
7 files changed, 99 insertions(+), 72 deletions(-)
create mode 100644 .kokoro/docker/docs/requirements.in
create mode 100644 .kokoro/docker/docs/requirements.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index e4e943e..4bdeef3 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:98f3afd11308259de6e828e37376d18867fd321aba07826e29e4f8d9cab56bad
-# created: 2024-02-27T15:56:18.442440378Z
+ digest: sha256:a8a80fc6456e433df53fc2a0d72ca0345db0ddefb409f1b75b118dfd1babd952
+# created: 2024-03-15T16:25:47.905264637Z
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 55a7d67..b92ebc2 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -33,13 +33,6 @@ export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/service-account.json
# Setup project id.
export PROJECT_ID=$(cat "${KOKORO_GFILE_DIR}/project-id.json")
-# Remove old nox
-python3 -m pip uninstall --yes --quiet nox-automation
-
-# Install nox
-python3 -m pip install --upgrade --quiet nox
-python3 -m nox --version
-
# If this is a continuous build, send the test log to the FlakyBot.
# See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"continuous"* ]]; then
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 8e39a2c..bdaf39f 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -80,4 +80,8 @@ RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
# Test pip
RUN python3 -m pip
+# Install build requirements
+COPY requirements.txt /requirements.txt
+RUN python3 -m pip install --require-hashes -r requirements.txt
+
CMD ["python3.8"]
diff --git a/.kokoro/docker/docs/requirements.in b/.kokoro/docker/docs/requirements.in
new file mode 100644
index 0000000..816817c
--- /dev/null
+++ b/.kokoro/docker/docs/requirements.in
@@ -0,0 +1 @@
+nox
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
new file mode 100644
index 0000000..0e5d70f
--- /dev/null
+++ b/.kokoro/docker/docs/requirements.txt
@@ -0,0 +1,38 @@
+#
+# This file is autogenerated by pip-compile with Python 3.9
+# by the following command:
+#
+# pip-compile --allow-unsafe --generate-hashes requirements.in
+#
+argcomplete==3.2.3 \
+ --hash=sha256:bf7900329262e481be5a15f56f19736b376df6f82ed27576fa893652c5de6c23 \
+ --hash=sha256:c12355e0494c76a2a7b73e3a59b09024ca0ba1e279fb9ed6c1b82d5b74b6a70c
+ # via nox
+colorlog==6.8.2 \
+ --hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
+ --hash=sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33
+ # via nox
+distlib==0.3.8 \
+ --hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
+ --hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
+ # via virtualenv
+filelock==3.13.1 \
+ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \
+ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c
+ # via virtualenv
+nox==2024.3.2 \
+ --hash=sha256:e53514173ac0b98dd47585096a55572fe504fecede58ced708979184d05440be \
+ --hash=sha256:f521ae08a15adbf5e11f16cb34e8d0e6ea521e0b92868f684e91677deb974553
+ # via -r requirements.in
+packaging==24.0 \
+ --hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
+ --hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
+ # via nox
+platformdirs==4.2.0 \
+ --hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
+ --hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
+ # via virtualenv
+virtualenv==20.25.1 \
+ --hash=sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a \
+ --hash=sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197
+ # via nox
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
index ec867d9..fff4d9c 100644
--- a/.kokoro/requirements.in
+++ b/.kokoro/requirements.in
@@ -1,5 +1,5 @@
gcp-docuploader
-gcp-releasetool>=1.10.5 # required for compatibility with cryptography>=39.x
+gcp-releasetool>=2 # required for compatibility with cryptography>=42.x
importlib-metadata
typing-extensions
twine
@@ -8,3 +8,4 @@ setuptools
nox>=2022.11.21 # required to remove dependency on py
charset-normalizer<3
click<8.1.0
+cryptography>=42.0.5
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index bda8e38..dd61f5f 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -93,40 +93,41 @@ colorlog==6.7.0 \
# via
# gcp-docuploader
# nox
-cryptography==42.0.4 \
- --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \
- --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \
- --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \
- --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \
- --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \
- --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \
- --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \
- --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \
- --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \
- --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \
- --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \
- --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \
- --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \
- --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \
- --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \
- --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \
- --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \
- --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \
- --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \
- --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \
- --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \
- --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \
- --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \
- --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \
- --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \
- --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \
- --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \
- --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \
- --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \
- --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \
- --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \
- --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449
+cryptography==42.0.5 \
+ --hash=sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee \
+ --hash=sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576 \
+ --hash=sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d \
+ --hash=sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30 \
+ --hash=sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413 \
+ --hash=sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb \
+ --hash=sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da \
+ --hash=sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4 \
+ --hash=sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd \
+ --hash=sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc \
+ --hash=sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8 \
+ --hash=sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1 \
+ --hash=sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc \
+ --hash=sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e \
+ --hash=sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8 \
+ --hash=sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940 \
+ --hash=sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400 \
+ --hash=sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7 \
+ --hash=sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16 \
+ --hash=sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278 \
+ --hash=sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74 \
+ --hash=sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec \
+ --hash=sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1 \
+ --hash=sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2 \
+ --hash=sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c \
+ --hash=sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922 \
+ --hash=sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a \
+ --hash=sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6 \
+ --hash=sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1 \
+ --hash=sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e \
+ --hash=sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac \
+ --hash=sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7
# via
+ # -r requirements.in
# gcp-releasetool
# secretstorage
distlib==0.3.7 \
@@ -145,9 +146,9 @@ gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-gcp-releasetool==1.16.0 \
- --hash=sha256:27bf19d2e87aaa884096ff941aa3c592c482be3d6a2bfe6f06afafa6af2353e3 \
- --hash=sha256:a316b197a543fd036209d0caba7a8eb4d236d8e65381c80cbc6d7efaa7606d63
+gcp-releasetool==2.0.0 \
+ --hash=sha256:3d73480b50ba243f22d7c7ec08b115a30e1c7817c4899781840c26f9c55b8277 \
+ --hash=sha256:7aa9fd935ec61e581eb8458ad00823786d91756c25e492f372b2b30962f3c28f
# via -r requirements.in
google-api-core==2.12.0 \
--hash=sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553 \
@@ -392,29 +393,18 @@ platformdirs==3.11.0 \
--hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \
--hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e
# via virtualenv
-protobuf==3.20.3 \
- --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \
- --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \
- --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \
- --hash=sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b \
- --hash=sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050 \
- --hash=sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9 \
- --hash=sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7 \
- --hash=sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454 \
- --hash=sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480 \
- --hash=sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469 \
- --hash=sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c \
- --hash=sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e \
- --hash=sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db \
- --hash=sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905 \
- --hash=sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b \
- --hash=sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86 \
- --hash=sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4 \
- --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \
- --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \
- --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \
- --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \
- --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee
+protobuf==4.25.3 \
+ --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \
+ --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \
+ --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \
+ --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \
+ --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \
+ --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \
+ --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \
+ --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \
+ --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \
+ --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
+ --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
# via
# gcp-docuploader
# gcp-releasetool
@@ -518,7 +508,7 @@ zipp==3.17.0 \
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-setuptools==68.2.2 \
- --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \
- --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a
+setuptools==69.2.0 \
+ --hash=sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e \
+ --hash=sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c
# via -r requirements.in
From 13293ff9857e8b7e7f61bdaa72cab5decce58046 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 12 Apr 2024 16:37:51 -0400
Subject: [PATCH 127/158] chore(python): bump idna from 3.4 to 3.7 in .kokoro
(#285)
* chore(python): bump idna from 3.4 to 3.7 in .kokoro
Source-Link: https://github.com/googleapis/synthtool/commit/d50980e704793a2d3310bfb3664f3a82f24b5796
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:5a4c19d17e597b92d786e569be101e636c9c2817731f80a5adec56b2aa8fe070
* Apply changes from googleapis/synthtool#1950
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/auto-label.yaml | 5 +++++
.github/blunderbuss.yml | 17 +++++++++++++++++
.kokoro/requirements.txt | 6 +++---
docs/index.rst | 5 +++++
docs/summary_overview.md | 22 ++++++++++++++++++++++
6 files changed, 54 insertions(+), 5 deletions(-)
create mode 100644 .github/blunderbuss.yml
create mode 100644 docs/summary_overview.md
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 4bdeef3..81f87c5 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:a8a80fc6456e433df53fc2a0d72ca0345db0ddefb409f1b75b118dfd1babd952
-# created: 2024-03-15T16:25:47.905264637Z
+ digest: sha256:5a4c19d17e597b92d786e569be101e636c9c2817731f80a5adec56b2aa8fe070
+# created: 2024-04-12T11:35:58.922854369Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
index b2016d1..8b37ee8 100644
--- a/.github/auto-label.yaml
+++ b/.github/auto-label.yaml
@@ -13,3 +13,8 @@
# limitations under the License.
requestsize:
enabled: true
+
+path:
+ pullrequest: true
+ paths:
+ samples: "samples"
diff --git a/.github/blunderbuss.yml b/.github/blunderbuss.yml
new file mode 100644
index 0000000..990b311
--- /dev/null
+++ b/.github/blunderbuss.yml
@@ -0,0 +1,17 @@
+# Blunderbuss config
+#
+# This file controls who is assigned for pull requests and issues.
+# Note: This file is autogenerated. To make changes to the assignee
+# team, please update `codeowner_team` in `.repo-metadata.json`.
+
+assign_issues:
+ - googleapis/python-core-client-libraries
+
+assign_issues_by:
+ - labels:
+ - "samples"
+ to:
+ - googleapis/python-samples-reviewers
+
+assign_prs:
+ - googleapis/python-core-client-libraries
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index dd61f5f..51f92b8 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -252,9 +252,9 @@ googleapis-common-protos==1.61.0 \
--hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \
--hash=sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b
# via google-api-core
-idna==3.4 \
- --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
- --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
+idna==3.7 \
+ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
+ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
# via requests
importlib-metadata==6.8.0 \
--hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \
diff --git a/docs/index.rst b/docs/index.rst
index 15526b4..3441157 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -20,3 +20,8 @@ Changelog
:maxdepth: 2
changelog
+
+.. toctree::
+ :hidden:
+
+ summary_overview.md
diff --git a/docs/summary_overview.md b/docs/summary_overview.md
new file mode 100644
index 0000000..fa1b054
--- /dev/null
+++ b/docs/summary_overview.md
@@ -0,0 +1,22 @@
+[
+This is a templated file. Adding content to this file may result in it being
+reverted. Instead, if you want to place additional content, create an
+"overview_content.md" file in `docs/` directory. The Sphinx tool will
+pick up on the content and merge the content.
+]: #
+
+# Google API client core library API
+
+Overview of the APIs available for Google API client core library API.
+
+## All entries
+
+Classes, methods and properties & attributes for
+Google API client core library API.
+
+[classes](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_class.html)
+
+[methods](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_method.html)
+
+[properties and
+attributes](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_property.html)
From 791c364ad5b923b61756d23ab3031c5e44f46a92 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 3 Jul 2024 15:06:21 -0400
Subject: [PATCH 128/158] chore: update templated files (#291)
Source-Link: https://github.com/googleapis/synthtool/commit/a37f74cd300d1f56d6f28c368d2931f72adee948
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:d3de8a02819f65001effcbd3ea76ce97e9bcff035c7a89457f40f892c87c5b32
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +-
.github/auto-label.yaml | 2 +-
.kokoro/build.sh | 2 +-
.kokoro/docker/docs/Dockerfile | 2 +-
.kokoro/populate-secrets.sh | 2 +-
.kokoro/publish-docs.sh | 2 +-
.kokoro/release.sh | 2 +-
.kokoro/requirements.txt | 509 ++++++++++++++-------------
.kokoro/test-samples-against-head.sh | 2 +-
.kokoro/test-samples-impl.sh | 2 +-
.kokoro/test-samples.sh | 2 +-
.kokoro/trampoline.sh | 2 +-
.kokoro/trampoline_v2.sh | 2 +-
.pre-commit-config.yaml | 2 +-
.trampolinerc | 2 +-
MANIFEST.in | 2 +-
docs/conf.py | 2 +-
scripts/decrypt-secrets.sh | 2 +-
scripts/readme-gen/readme_gen.py | 2 +-
19 files changed, 285 insertions(+), 262 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 81f87c5..91d742b 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:5a4c19d17e597b92d786e569be101e636c9c2817731f80a5adec56b2aa8fe070
-# created: 2024-04-12T11:35:58.922854369Z
+ digest: sha256:d3de8a02819f65001effcbd3ea76ce97e9bcff035c7a89457f40f892c87c5b32
+# created: 2024-07-03T17:43:00.77142528Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
index 8b37ee8..21786a4 100644
--- a/.github/auto-label.yaml
+++ b/.github/auto-label.yaml
@@ -1,4 +1,4 @@
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index b92ebc2..a5bbf55 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index bdaf39f..a26ce61 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/populate-secrets.sh b/.kokoro/populate-secrets.sh
index 6f39721..c435402 100755
--- a/.kokoro/populate-secrets.sh
+++ b/.kokoro/populate-secrets.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC.
+# Copyright 2024 Google LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
index 9eafe0b..38f083f 100755
--- a/.kokoro/publish-docs.sh
+++ b/.kokoro/publish-docs.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index a0ff71e..dc51194 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 51f92b8..35ece0e 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -4,21 +4,25 @@
#
# pip-compile --allow-unsafe --generate-hashes requirements.in
#
-argcomplete==3.1.4 \
- --hash=sha256:72558ba729e4c468572609817226fb0a6e7e9a0a7d477b882be168c0b4a62b94 \
- --hash=sha256:fbe56f8cda08aa9a04b307d8482ea703e96a6a801611acb4be9bf3942017989f
+argcomplete==3.4.0 \
+ --hash=sha256:69a79e083a716173e5532e0fa3bef45f793f4e61096cf52b5a42c0211c8b8aa5 \
+ --hash=sha256:c2abcdfe1be8ace47ba777d4fce319eb13bf8ad9dace8d085dcad6eded88057f
# via nox
-attrs==23.1.0 \
- --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \
- --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015
+attrs==23.2.0 \
+ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \
+ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1
# via gcp-releasetool
-cachetools==5.3.2 \
- --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \
- --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1
+backports-tarfile==1.2.0 \
+ --hash=sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34 \
+ --hash=sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991
+ # via jaraco-context
+cachetools==5.3.3 \
+ --hash=sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945 \
+ --hash=sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105
# via google-auth
-certifi==2023.7.22 \
- --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \
- --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9
+certifi==2024.6.2 \
+ --hash=sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516 \
+ --hash=sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56
# via requests
cffi==1.16.0 \
--hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \
@@ -87,90 +91,90 @@ click==8.0.4 \
# -r requirements.in
# gcp-docuploader
# gcp-releasetool
-colorlog==6.7.0 \
- --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \
- --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5
+colorlog==6.8.2 \
+ --hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
+ --hash=sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33
# via
# gcp-docuploader
# nox
-cryptography==42.0.5 \
- --hash=sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee \
- --hash=sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576 \
- --hash=sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d \
- --hash=sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30 \
- --hash=sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413 \
- --hash=sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb \
- --hash=sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da \
- --hash=sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4 \
- --hash=sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd \
- --hash=sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc \
- --hash=sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8 \
- --hash=sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1 \
- --hash=sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc \
- --hash=sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e \
- --hash=sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8 \
- --hash=sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940 \
- --hash=sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400 \
- --hash=sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7 \
- --hash=sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16 \
- --hash=sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278 \
- --hash=sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74 \
- --hash=sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec \
- --hash=sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1 \
- --hash=sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2 \
- --hash=sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c \
- --hash=sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922 \
- --hash=sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a \
- --hash=sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6 \
- --hash=sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1 \
- --hash=sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e \
- --hash=sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac \
- --hash=sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7
+cryptography==42.0.8 \
+ --hash=sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad \
+ --hash=sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583 \
+ --hash=sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b \
+ --hash=sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c \
+ --hash=sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1 \
+ --hash=sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648 \
+ --hash=sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949 \
+ --hash=sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba \
+ --hash=sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c \
+ --hash=sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9 \
+ --hash=sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d \
+ --hash=sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c \
+ --hash=sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e \
+ --hash=sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2 \
+ --hash=sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d \
+ --hash=sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7 \
+ --hash=sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70 \
+ --hash=sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2 \
+ --hash=sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7 \
+ --hash=sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14 \
+ --hash=sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe \
+ --hash=sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e \
+ --hash=sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71 \
+ --hash=sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961 \
+ --hash=sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7 \
+ --hash=sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c \
+ --hash=sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28 \
+ --hash=sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842 \
+ --hash=sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902 \
+ --hash=sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801 \
+ --hash=sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a \
+ --hash=sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e
# via
# -r requirements.in
# gcp-releasetool
# secretstorage
-distlib==0.3.7 \
- --hash=sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057 \
- --hash=sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8
+distlib==0.3.8 \
+ --hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
+ --hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
# via virtualenv
-docutils==0.20.1 \
- --hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \
- --hash=sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b
+docutils==0.21.2 \
+ --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \
+ --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
# via readme-renderer
-filelock==3.13.1 \
- --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \
- --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c
+filelock==3.15.4 \
+ --hash=sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb \
+ --hash=sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7
# via virtualenv
gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-gcp-releasetool==2.0.0 \
- --hash=sha256:3d73480b50ba243f22d7c7ec08b115a30e1c7817c4899781840c26f9c55b8277 \
- --hash=sha256:7aa9fd935ec61e581eb8458ad00823786d91756c25e492f372b2b30962f3c28f
+gcp-releasetool==2.0.1 \
+ --hash=sha256:34314a910c08e8911d9c965bd44f8f2185c4f556e737d719c33a41f6a610de96 \
+ --hash=sha256:b0d5863c6a070702b10883d37c4bdfd74bf930fe417f36c0c965d3b7c779ae62
# via -r requirements.in
-google-api-core==2.12.0 \
- --hash=sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553 \
- --hash=sha256:ec6054f7d64ad13b41e43d96f735acbd763b0f3b695dabaa2d579673f6a6e160
+google-api-core==2.19.1 \
+ --hash=sha256:f12a9b8309b5e21d92483bbd47ce2c445861ec7d269ef6784ecc0ea8c1fa6125 \
+ --hash=sha256:f4695f1e3650b316a795108a76a1c416e6afb036199d1c1f1f110916df479ffd
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.23.4 \
- --hash=sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3 \
- --hash=sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2
+google-auth==2.31.0 \
+ --hash=sha256:042c4702efa9f7d3c48d3a69341c209381b125faa6dbf3ebe56bc7e40ae05c23 \
+ --hash=sha256:87805c36970047247c8afe614d4e3af8eceafc1ebba0c679fe75ddd1d575e871
# via
# gcp-releasetool
# google-api-core
# google-cloud-core
# google-cloud-storage
-google-cloud-core==2.3.3 \
- --hash=sha256:37b80273c8d7eee1ae816b3a20ae43585ea50506cb0e60f3cf5be5f87f1373cb \
- --hash=sha256:fbd11cad3e98a7e5b0343dc07cb1039a5ffd7a5bb96e1f1e27cee4bda4a90863
+google-cloud-core==2.4.1 \
+ --hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
+ --hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
# via google-cloud-storage
-google-cloud-storage==2.13.0 \
- --hash=sha256:ab0bf2e1780a1b74cf17fccb13788070b729f50c252f0c94ada2aae0ca95437d \
- --hash=sha256:f62dc4c7b6cd4360d072e3deb28035fbdad491ac3d9b0b1815a12daea10f37c7
+google-cloud-storage==2.17.0 \
+ --hash=sha256:49378abff54ef656b52dca5ef0f2eba9aa83dc2b2c72c78714b03a1a95fe9388 \
+ --hash=sha256:5b393bc766b7a3bc6f5407b9e665b2450d36282614b7945e570b3480a456d1e1
# via gcp-docuploader
google-crc32c==1.5.0 \
--hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \
@@ -244,28 +248,36 @@ google-crc32c==1.5.0 \
# via
# google-cloud-storage
# google-resumable-media
-google-resumable-media==2.6.0 \
- --hash=sha256:972852f6c65f933e15a4a210c2b96930763b47197cdf4aa5f5bea435efb626e7 \
- --hash=sha256:fc03d344381970f79eebb632a3c18bb1828593a2dc5572b5f90115ef7d11e81b
+google-resumable-media==2.7.1 \
+ --hash=sha256:103ebc4ba331ab1bfdac0250f8033627a2cd7cde09e7ccff9181e31ba4315b2c \
+ --hash=sha256:eae451a7b2e2cdbaaa0fd2eb00cc8a1ee5e95e16b55597359cbc3d27d7d90e33
# via google-cloud-storage
-googleapis-common-protos==1.61.0 \
- --hash=sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0 \
- --hash=sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b
+googleapis-common-protos==1.63.2 \
+ --hash=sha256:27a2499c7e8aff199665b22741997e485eccc8645aa9176c7c988e6fae507945 \
+ --hash=sha256:27c5abdffc4911f28101e635de1533fb4cfd2c37fbaa9174587c799fac90aa87
# via google-api-core
idna==3.7 \
--hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
--hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
# via requests
-importlib-metadata==6.8.0 \
- --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \
- --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743
+importlib-metadata==8.0.0 \
+ --hash=sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f \
+ --hash=sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812
# via
# -r requirements.in
# keyring
# twine
-jaraco-classes==3.3.0 \
- --hash=sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb \
- --hash=sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621
+jaraco-classes==3.4.0 \
+ --hash=sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd \
+ --hash=sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790
+ # via keyring
+jaraco-context==5.3.0 \
+ --hash=sha256:3e16388f7da43d384a1a7cd3452e72e14732ac9fe459678773a3608a812bf266 \
+ --hash=sha256:c2f67165ce1f9be20f32f650f25d8edfc1646a8aeee48ae06fb35f90763576d2
+ # via keyring
+jaraco-functools==4.0.1 \
+ --hash=sha256:3b24ccb921d6b593bdceb56ce14799204f473976e2a9d4b15b04d0f2c2326664 \
+ --hash=sha256:d33fa765374c0611b52f8b3a795f8900869aa88c84769d4d1746cd68fb28c3e8
# via keyring
jeepney==0.8.0 \
--hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
@@ -273,13 +285,13 @@ jeepney==0.8.0 \
# via
# keyring
# secretstorage
-jinja2==3.1.3 \
- --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
- --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90
+jinja2==3.1.4 \
+ --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \
+ --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d
# via gcp-releasetool
-keyring==24.2.0 \
- --hash=sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6 \
- --hash=sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509
+keyring==25.2.1 \
+ --hash=sha256:2458681cdefc0dbc0b7eb6cf75d0b98e59f9ad9b2d4edd319d18f68bdca95e50 \
+ --hash=sha256:daaffd42dbda25ddafb1ad5fec4024e5bbcfe424597ca1ca452b299861e49f1b
# via
# gcp-releasetool
# twine
@@ -287,146 +299,153 @@ markdown-it-py==3.0.0 \
--hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
--hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
# via rich
-markupsafe==2.1.3 \
- --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \
- --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \
- --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \
- --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \
- --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \
- --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \
- --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \
- --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \
- --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \
- --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \
- --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \
- --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \
- --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \
- --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \
- --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \
- --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \
- --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \
- --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \
- --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \
- --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \
- --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \
- --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \
- --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \
- --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \
- --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \
- --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \
- --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \
- --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \
- --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \
- --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \
- --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \
- --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \
- --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \
- --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \
- --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \
- --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \
- --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \
- --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \
- --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \
- --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \
- --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \
- --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \
- --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \
- --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \
- --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \
- --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \
- --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \
- --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \
- --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \
- --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \
- --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \
- --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \
- --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \
- --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \
- --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \
- --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \
- --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \
- --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \
- --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \
- --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11
+markupsafe==2.1.5 \
+ --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \
+ --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \
+ --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \
+ --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \
+ --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \
+ --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \
+ --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \
+ --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \
+ --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \
+ --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \
+ --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \
+ --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \
+ --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \
+ --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \
+ --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \
+ --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \
+ --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \
+ --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \
+ --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \
+ --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \
+ --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \
+ --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \
+ --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \
+ --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \
+ --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \
+ --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \
+ --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \
+ --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \
+ --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \
+ --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \
+ --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \
+ --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \
+ --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \
+ --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \
+ --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \
+ --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \
+ --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \
+ --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \
+ --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \
+ --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \
+ --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \
+ --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \
+ --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \
+ --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \
+ --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \
+ --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \
+ --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \
+ --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \
+ --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \
+ --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \
+ --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \
+ --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \
+ --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \
+ --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \
+ --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \
+ --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \
+ --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \
+ --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \
+ --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \
+ --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68
# via jinja2
mdurl==0.1.2 \
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
--hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
# via markdown-it-py
-more-itertools==10.1.0 \
- --hash=sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a \
- --hash=sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6
- # via jaraco-classes
-nh3==0.2.14 \
- --hash=sha256:116c9515937f94f0057ef50ebcbcc10600860065953ba56f14473ff706371873 \
- --hash=sha256:18415df36db9b001f71a42a3a5395db79cf23d556996090d293764436e98e8ad \
- --hash=sha256:203cac86e313cf6486704d0ec620a992c8bc164c86d3a4fd3d761dd552d839b5 \
- --hash=sha256:2b0be5c792bd43d0abef8ca39dd8acb3c0611052ce466d0401d51ea0d9aa7525 \
- --hash=sha256:377aaf6a9e7c63962f367158d808c6a1344e2b4f83d071c43fbd631b75c4f0b2 \
- --hash=sha256:525846c56c2bcd376f5eaee76063ebf33cf1e620c1498b2a40107f60cfc6054e \
- --hash=sha256:5529a3bf99402c34056576d80ae5547123f1078da76aa99e8ed79e44fa67282d \
- --hash=sha256:7771d43222b639a4cd9e341f870cee336b9d886de1ad9bec8dddab22fe1de450 \
- --hash=sha256:88c753efbcdfc2644a5012938c6b9753f1c64a5723a67f0301ca43e7b85dcf0e \
- --hash=sha256:93a943cfd3e33bd03f77b97baa11990148687877b74193bf777956b67054dcc6 \
- --hash=sha256:9be2f68fb9a40d8440cbf34cbf40758aa7f6093160bfc7fb018cce8e424f0c3a \
- --hash=sha256:a0c509894fd4dccdff557068e5074999ae3b75f4c5a2d6fb5415e782e25679c4 \
- --hash=sha256:ac8056e937f264995a82bf0053ca898a1cb1c9efc7cd68fa07fe0060734df7e4 \
- --hash=sha256:aed56a86daa43966dd790ba86d4b810b219f75b4bb737461b6886ce2bde38fd6 \
- --hash=sha256:e8986f1dd3221d1e741fda0a12eaa4a273f1d80a35e31a1ffe579e7c621d069e \
- --hash=sha256:f99212a81c62b5f22f9e7c3e347aa00491114a5647e1f13bbebd79c3e5f08d75
+more-itertools==10.3.0 \
+ --hash=sha256:e5d93ef411224fbcef366a6e8ddc4c5781bc6359d43412a65dd5964e46111463 \
+ --hash=sha256:ea6a02e24a9161e51faad17a8782b92a0df82c12c1c8886fec7f0c3fa1a1b320
+ # via
+ # jaraco-classes
+ # jaraco-functools
+nh3==0.2.17 \
+ --hash=sha256:0316c25b76289cf23be6b66c77d3608a4fdf537b35426280032f432f14291b9a \
+ --hash=sha256:1a814dd7bba1cb0aba5bcb9bebcc88fd801b63e21e2450ae6c52d3b3336bc911 \
+ --hash=sha256:1aa52a7def528297f256de0844e8dd680ee279e79583c76d6fa73a978186ddfb \
+ --hash=sha256:22c26e20acbb253a5bdd33d432a326d18508a910e4dcf9a3316179860d53345a \
+ --hash=sha256:40015514022af31975c0b3bca4014634fa13cb5dc4dbcbc00570acc781316dcc \
+ --hash=sha256:40d0741a19c3d645e54efba71cb0d8c475b59135c1e3c580f879ad5514cbf028 \
+ --hash=sha256:551672fd71d06cd828e282abdb810d1be24e1abb7ae2543a8fa36a71c1006fe9 \
+ --hash=sha256:66f17d78826096291bd264f260213d2b3905e3c7fae6dfc5337d49429f1dc9f3 \
+ --hash=sha256:85cdbcca8ef10733bd31f931956f7fbb85145a4d11ab9e6742bbf44d88b7e351 \
+ --hash=sha256:a3f55fabe29164ba6026b5ad5c3151c314d136fd67415a17660b4aaddacf1b10 \
+ --hash=sha256:b4427ef0d2dfdec10b641ed0bdaf17957eb625b2ec0ea9329b3d28806c153d71 \
+ --hash=sha256:ba73a2f8d3a1b966e9cdba7b211779ad8a2561d2dba9674b8a19ed817923f65f \
+ --hash=sha256:c21bac1a7245cbd88c0b0e4a420221b7bfa838a2814ee5bb924e9c2f10a1120b \
+ --hash=sha256:c551eb2a3876e8ff2ac63dff1585236ed5dfec5ffd82216a7a174f7c5082a78a \
+ --hash=sha256:c790769152308421283679a142dbdb3d1c46c79c823008ecea8e8141db1a2062 \
+ --hash=sha256:d7a25fd8c86657f5d9d576268e3b3767c5cd4f42867c9383618be8517f0f022a
# via readme-renderer
-nox==2023.4.22 \
- --hash=sha256:0b1adc619c58ab4fa57d6ab2e7823fe47a32e70202f287d78474adcc7bda1891 \
- --hash=sha256:46c0560b0dc609d7d967dc99e22cb463d3c4caf54a5fda735d6c11b5177e3a9f
+nox==2024.4.15 \
+ --hash=sha256:6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 \
+ --hash=sha256:ecf6700199cdfa9e5ea0a41ff5e6ef4641d09508eda6edb89d9987864115817f
# via -r requirements.in
-packaging==23.2 \
- --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \
- --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7
+packaging==24.1 \
+ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
+ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
# via
# gcp-releasetool
# nox
-pkginfo==1.9.6 \
- --hash=sha256:4b7a555a6d5a22169fcc9cf7bfd78d296b0361adad412a346c1226849af5e546 \
- --hash=sha256:8fd5896e8718a4372f0ea9cc9d96f6417c9b986e23a4d116dda26b62cc29d046
+pkginfo==1.10.0 \
+ --hash=sha256:5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297 \
+ --hash=sha256:889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097
# via twine
-platformdirs==3.11.0 \
- --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \
- --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e
+platformdirs==4.2.2 \
+ --hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
+ --hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
# via virtualenv
-protobuf==4.25.3 \
- --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \
- --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \
- --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \
- --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \
- --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \
- --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \
- --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \
- --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \
- --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \
- --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
- --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
+proto-plus==1.24.0 \
+ --hash=sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445 \
+ --hash=sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12
+ # via google-api-core
+protobuf==5.27.2 \
+ --hash=sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505 \
+ --hash=sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b \
+ --hash=sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38 \
+ --hash=sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863 \
+ --hash=sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470 \
+ --hash=sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6 \
+ --hash=sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce \
+ --hash=sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca \
+ --hash=sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5 \
+ --hash=sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e \
+ --hash=sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714
# via
# gcp-docuploader
# gcp-releasetool
# google-api-core
# googleapis-common-protos
-pyasn1==0.5.0 \
- --hash=sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57 \
- --hash=sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde
+ # proto-plus
+pyasn1==0.6.0 \
+ --hash=sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c \
+ --hash=sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473
# via
# pyasn1-modules
# rsa
-pyasn1-modules==0.3.0 \
- --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \
- --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d
+pyasn1-modules==0.4.0 \
+ --hash=sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6 \
+ --hash=sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b
# via google-auth
-pycparser==2.21 \
- --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
- --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
+pycparser==2.22 \
+ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \
+ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc
# via cffi
-pygments==2.16.1 \
- --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \
- --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29
+pygments==2.18.0 \
+ --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
+ --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
# via
# readme-renderer
# rich
@@ -434,20 +453,20 @@ pyjwt==2.8.0 \
--hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de \
--hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320
# via gcp-releasetool
-pyperclip==1.8.2 \
- --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57
+pyperclip==1.9.0 \
+ --hash=sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310
# via gcp-releasetool
-python-dateutil==2.8.2 \
- --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
- --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via gcp-releasetool
-readme-renderer==42.0 \
- --hash=sha256:13d039515c1f24de668e2c93f2e877b9dbe6c6c32328b90a40a49d8b2b85f36d \
- --hash=sha256:2d55489f83be4992fe4454939d1a051c33edbab778e82761d060c9fc6b308cd1
+readme-renderer==43.0 \
+ --hash=sha256:1818dd28140813509eeed8d62687f7cd4f7bad90d4db586001c5dc09d4fde311 \
+ --hash=sha256:19db308d86ecd60e5affa3b2a98f017af384678c63c88e5d4556a380e674f3f9
# via twine
-requests==2.31.0 \
- --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
- --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1
+requests==2.32.3 \
+ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
+ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
# via
# gcp-releasetool
# google-api-core
@@ -462,9 +481,9 @@ rfc3986==2.0.0 \
--hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \
--hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c
# via twine
-rich==13.6.0 \
- --hash=sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245 \
- --hash=sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef
+rich==13.7.1 \
+ --hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \
+ --hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432
# via twine
rsa==4.9 \
--hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
@@ -480,35 +499,39 @@ six==1.16.0 \
# via
# gcp-docuploader
# python-dateutil
-twine==4.0.2 \
- --hash=sha256:929bc3c280033347a00f847236564d1c52a3e61b1ac2516c97c48f3ceab756d8 \
- --hash=sha256:9e102ef5fdd5a20661eb88fad46338806c3bd32cf1db729603fe3697b1bc83c8
+tomli==2.0.1 \
+ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
+ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
+ # via nox
+twine==5.1.1 \
+ --hash=sha256:215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997 \
+ --hash=sha256:9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db
# via -r requirements.in
-typing-extensions==4.8.0 \
- --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \
- --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef
+typing-extensions==4.12.2 \
+ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
+ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
# via -r requirements.in
-urllib3==2.0.7 \
- --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \
- --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e
+urllib3==2.2.2 \
+ --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \
+ --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168
# via
# requests
# twine
-virtualenv==20.24.6 \
- --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \
- --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381
+virtualenv==20.26.3 \
+ --hash=sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a \
+ --hash=sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589
# via nox
-wheel==0.41.3 \
- --hash=sha256:488609bc63a29322326e05560731bf7bfea8e48ad646e1f5e40d366607de0942 \
- --hash=sha256:4d4987ce51a49370ea65c0bfd2234e8ce80a12780820d9dc462597a6e60d0841
+wheel==0.43.0 \
+ --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
+ --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
# via -r requirements.in
-zipp==3.17.0 \
- --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \
- --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0
+zipp==3.19.2 \
+ --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \
+ --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-setuptools==69.2.0 \
- --hash=sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e \
- --hash=sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c
+setuptools==70.2.0 \
+ --hash=sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 \
+ --hash=sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1
# via -r requirements.in
diff --git a/.kokoro/test-samples-against-head.sh b/.kokoro/test-samples-against-head.sh
index 63ac41d..e9d8bd7 100755
--- a/.kokoro/test-samples-against-head.sh
+++ b/.kokoro/test-samples-against-head.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 5a0f5fa..55910c8 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/test-samples.sh b/.kokoro/test-samples.sh
index 50b35a4..7933d82 100755
--- a/.kokoro/test-samples.sh
+++ b/.kokoro/test-samples.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh
index d85b1f2..48f7969 100755
--- a/.kokoro/trampoline.sh
+++ b/.kokoro/trampoline.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.kokoro/trampoline_v2.sh b/.kokoro/trampoline_v2.sh
index 59a7cf3..35fa529 100755
--- a/.kokoro/trampoline_v2.sh
+++ b/.kokoro/trampoline_v2.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 6a8e169..1d74695 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,4 +1,4 @@
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.trampolinerc b/.trampolinerc
index a7dfeb4..0080152 100644
--- a/.trampolinerc
+++ b/.trampolinerc
@@ -1,4 +1,4 @@
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/MANIFEST.in b/MANIFEST.in
index e0a6670..d6814cd 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/docs/conf.py b/docs/conf.py
index eb10718..c1f73e9 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/scripts/decrypt-secrets.sh b/scripts/decrypt-secrets.sh
index 0018b42..120b0dd 100755
--- a/scripts/decrypt-secrets.sh
+++ b/scripts/decrypt-secrets.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2023 Google LLC All rights reserved.
+# Copyright 2024 Google LLC All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/scripts/readme-gen/readme_gen.py b/scripts/readme-gen/readme_gen.py
index 1acc119..8f5e248 100644
--- a/scripts/readme-gen/readme_gen.py
+++ b/scripts/readme-gen/readme_gen.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-# Copyright 2023 Google LLC
+# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
From 3f3242d83fa137d411f7f4c2b4246b5a39aefeda Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 9 Jul 2024 13:17:23 -0400
Subject: [PATCH 129/158] chore(python): use python 3.10 for docs build (#294)
* chore(python): use python 3.10 for docs build
Source-Link: https://github.com/googleapis/synthtool/commit/9ae07858520bf035a3d5be569b5a65d960ee4392
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:52210e0e0559f5ea8c52be148b33504022e1faef4e95fbe4b32d68022af2fa7e
* Use python 3.10 for docs build
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +--
.kokoro/docker/docs/Dockerfile | 21 +++++++------
.kokoro/docker/docs/requirements.txt | 40 +++++++++++++-----------
.kokoro/requirements.txt | 46 ++++++++++++++--------------
noxfile.py | 5 ++-
5 files changed, 63 insertions(+), 53 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 91d742b..f30cb37 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:d3de8a02819f65001effcbd3ea76ce97e9bcff035c7a89457f40f892c87c5b32
-# created: 2024-07-03T17:43:00.77142528Z
+ digest: sha256:52210e0e0559f5ea8c52be148b33504022e1faef4e95fbe4b32d68022af2fa7e
+# created: 2024-07-08T19:25:35.862283192Z
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index a26ce61..5205308 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from ubuntu:22.04
+from ubuntu:24.04
ENV DEBIAN_FRONTEND noninteractive
@@ -40,7 +40,6 @@ RUN apt-get update \
libssl-dev \
libsqlite3-dev \
portaudio19-dev \
- python3-distutils \
redis-server \
software-properties-common \
ssh \
@@ -60,18 +59,22 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /var/cache/apt/archives/*.deb
-###################### Install python 3.9.13
-# Download python 3.9.13
-RUN wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz
+###################### Install python 3.10.14 for docs/docfx session
+
+# Download python 3.10.14
+RUN wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
# Extract files
-RUN tar -xvf Python-3.9.13.tgz
+RUN tar -xvf Python-3.10.14.tgz
-# Install python 3.9.13
-RUN ./Python-3.9.13/configure --enable-optimizations
+# Install python 3.10.14
+RUN ./Python-3.10.14/configure --enable-optimizations
RUN make altinstall
+RUN python3.10 -m venv /venv
+ENV PATH /venv/bin:$PATH
+
###################### Install pip
RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
&& python3 /tmp/get-pip.py \
@@ -84,4 +87,4 @@ RUN python3 -m pip
COPY requirements.txt /requirements.txt
RUN python3 -m pip install --require-hashes -r requirements.txt
-CMD ["python3.8"]
+CMD ["python3.10"]
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index 0e5d70f..7129c77 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -4,9 +4,9 @@
#
# pip-compile --allow-unsafe --generate-hashes requirements.in
#
-argcomplete==3.2.3 \
- --hash=sha256:bf7900329262e481be5a15f56f19736b376df6f82ed27576fa893652c5de6c23 \
- --hash=sha256:c12355e0494c76a2a7b73e3a59b09024ca0ba1e279fb9ed6c1b82d5b74b6a70c
+argcomplete==3.4.0 \
+ --hash=sha256:69a79e083a716173e5532e0fa3bef45f793f4e61096cf52b5a42c0211c8b8aa5 \
+ --hash=sha256:c2abcdfe1be8ace47ba777d4fce319eb13bf8ad9dace8d085dcad6eded88057f
# via nox
colorlog==6.8.2 \
--hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
@@ -16,23 +16,27 @@ distlib==0.3.8 \
--hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
--hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
# via virtualenv
-filelock==3.13.1 \
- --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \
- --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c
+filelock==3.15.4 \
+ --hash=sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb \
+ --hash=sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7
# via virtualenv
-nox==2024.3.2 \
- --hash=sha256:e53514173ac0b98dd47585096a55572fe504fecede58ced708979184d05440be \
- --hash=sha256:f521ae08a15adbf5e11f16cb34e8d0e6ea521e0b92868f684e91677deb974553
+nox==2024.4.15 \
+ --hash=sha256:6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 \
+ --hash=sha256:ecf6700199cdfa9e5ea0a41ff5e6ef4641d09508eda6edb89d9987864115817f
# via -r requirements.in
-packaging==24.0 \
- --hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
- --hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
+packaging==24.1 \
+ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
+ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
# via nox
-platformdirs==4.2.0 \
- --hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
- --hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
+platformdirs==4.2.2 \
+ --hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
+ --hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
# via virtualenv
-virtualenv==20.25.1 \
- --hash=sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a \
- --hash=sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197
+tomli==2.0.1 \
+ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
+ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
+ # via nox
+virtualenv==20.26.3 \
+ --hash=sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a \
+ --hash=sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589
# via nox
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 35ece0e..9622baf 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -20,9 +20,9 @@ cachetools==5.3.3 \
--hash=sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945 \
--hash=sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105
# via google-auth
-certifi==2024.6.2 \
- --hash=sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516 \
- --hash=sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56
+certifi==2024.7.4 \
+ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \
+ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90
# via requests
cffi==1.16.0 \
--hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \
@@ -371,23 +371,23 @@ more-itertools==10.3.0 \
# via
# jaraco-classes
# jaraco-functools
-nh3==0.2.17 \
- --hash=sha256:0316c25b76289cf23be6b66c77d3608a4fdf537b35426280032f432f14291b9a \
- --hash=sha256:1a814dd7bba1cb0aba5bcb9bebcc88fd801b63e21e2450ae6c52d3b3336bc911 \
- --hash=sha256:1aa52a7def528297f256de0844e8dd680ee279e79583c76d6fa73a978186ddfb \
- --hash=sha256:22c26e20acbb253a5bdd33d432a326d18508a910e4dcf9a3316179860d53345a \
- --hash=sha256:40015514022af31975c0b3bca4014634fa13cb5dc4dbcbc00570acc781316dcc \
- --hash=sha256:40d0741a19c3d645e54efba71cb0d8c475b59135c1e3c580f879ad5514cbf028 \
- --hash=sha256:551672fd71d06cd828e282abdb810d1be24e1abb7ae2543a8fa36a71c1006fe9 \
- --hash=sha256:66f17d78826096291bd264f260213d2b3905e3c7fae6dfc5337d49429f1dc9f3 \
- --hash=sha256:85cdbcca8ef10733bd31f931956f7fbb85145a4d11ab9e6742bbf44d88b7e351 \
- --hash=sha256:a3f55fabe29164ba6026b5ad5c3151c314d136fd67415a17660b4aaddacf1b10 \
- --hash=sha256:b4427ef0d2dfdec10b641ed0bdaf17957eb625b2ec0ea9329b3d28806c153d71 \
- --hash=sha256:ba73a2f8d3a1b966e9cdba7b211779ad8a2561d2dba9674b8a19ed817923f65f \
- --hash=sha256:c21bac1a7245cbd88c0b0e4a420221b7bfa838a2814ee5bb924e9c2f10a1120b \
- --hash=sha256:c551eb2a3876e8ff2ac63dff1585236ed5dfec5ffd82216a7a174f7c5082a78a \
- --hash=sha256:c790769152308421283679a142dbdb3d1c46c79c823008ecea8e8141db1a2062 \
- --hash=sha256:d7a25fd8c86657f5d9d576268e3b3767c5cd4f42867c9383618be8517f0f022a
+nh3==0.2.18 \
+ --hash=sha256:0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164 \
+ --hash=sha256:14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86 \
+ --hash=sha256:19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b \
+ --hash=sha256:34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad \
+ --hash=sha256:36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204 \
+ --hash=sha256:3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a \
+ --hash=sha256:42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200 \
+ --hash=sha256:5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189 \
+ --hash=sha256:6955369e4d9f48f41e3f238a9e60f9410645db7e07435e62c6a9ea6135a4907f \
+ --hash=sha256:7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811 \
+ --hash=sha256:8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844 \
+ --hash=sha256:94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4 \
+ --hash=sha256:a7f1b5b2c15866f2db413a3649a8fe4fd7b428ae58be2c0f6bca5eefd53ca2be \
+ --hash=sha256:c8b3a1cebcba9b3669ed1a84cc65bf005728d2f0bc1ed2a6594a992e817f3a50 \
+ --hash=sha256:de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307 \
+ --hash=sha256:f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe
# via readme-renderer
nox==2024.4.15 \
--hash=sha256:6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 \
@@ -460,9 +460,9 @@ python-dateutil==2.9.0.post0 \
--hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via gcp-releasetool
-readme-renderer==43.0 \
- --hash=sha256:1818dd28140813509eeed8d62687f7cd4f7bad90d4db586001c5dc09d4fde311 \
- --hash=sha256:19db308d86ecd60e5affa3b2a98f017af384678c63c88e5d4556a380e674f3f9
+readme-renderer==44.0 \
+ --hash=sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151 \
+ --hash=sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1
# via twine
requests==2.32.3 \
--hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
diff --git a/noxfile.py b/noxfile.py
index 99e8ef1..aef545d 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -25,6 +25,9 @@
DEFAULT_PYTHON_VERSION = "3.8"
CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
+# Error if a python version is missing
+nox.options.error_on_missing_interpreters = True
+
@nox.session(python="3.10")
def lint(session):
@@ -119,7 +122,7 @@ def cover(session):
session.run("coverage", "erase")
-@nox.session(python="3.9")
+@nox.session(python="3.10")
def docs(session):
"""Build the docs for this library."""
From a9c6416ed90977bacf9ff69def93d832c9c22e2b Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 16 Aug 2024 15:40:04 -0700
Subject: [PATCH 130/158] chore(python): fix docs build (#295)
Source-Link: https://github.com/googleapis/synthtool/commit/bef813d194de29ddf3576eda60148b6b3dcc93d9
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:94bb690db96e6242b2567a4860a94d48fa48696d092e51b0884a1a2c0a79a407
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/docker/docs/Dockerfile | 9 ++++-----
.kokoro/publish-docs.sh | 20 ++++++++++----------
3 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index f30cb37..6d064dd 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:52210e0e0559f5ea8c52be148b33504022e1faef4e95fbe4b32d68022af2fa7e
-# created: 2024-07-08T19:25:35.862283192Z
+ digest: sha256:94bb690db96e6242b2567a4860a94d48fa48696d092e51b0884a1a2c0a79a407
+# created: 2024-07-31T14:52:44.926548819Z
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 5205308..e5410e2 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -72,19 +72,18 @@ RUN tar -xvf Python-3.10.14.tgz
RUN ./Python-3.10.14/configure --enable-optimizations
RUN make altinstall
-RUN python3.10 -m venv /venv
-ENV PATH /venv/bin:$PATH
+ENV PATH /usr/local/bin/python3.10:$PATH
###################### Install pip
RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
- && python3 /tmp/get-pip.py \
+ && python3.10 /tmp/get-pip.py \
&& rm /tmp/get-pip.py
# Test pip
-RUN python3 -m pip
+RUN python3.10 -m pip
# Install build requirements
COPY requirements.txt /requirements.txt
-RUN python3 -m pip install --require-hashes -r requirements.txt
+RUN python3.10 -m pip install --require-hashes -r requirements.txt
CMD ["python3.10"]
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
index 38f083f..233205d 100755
--- a/.kokoro/publish-docs.sh
+++ b/.kokoro/publish-docs.sh
@@ -21,18 +21,18 @@ export PYTHONUNBUFFERED=1
export PATH="${HOME}/.local/bin:${PATH}"
# Install nox
-python3 -m pip install --require-hashes -r .kokoro/requirements.txt
-python3 -m nox --version
+python3.10 -m pip install --require-hashes -r .kokoro/requirements.txt
+python3.10 -m nox --version
# build docs
nox -s docs
# create metadata
-python3 -m docuploader create-metadata \
+python3.10 -m docuploader create-metadata \
--name=$(jq --raw-output '.name // empty' .repo-metadata.json) \
- --version=$(python3 setup.py --version) \
+ --version=$(python3.10 setup.py --version) \
--language=$(jq --raw-output '.language // empty' .repo-metadata.json) \
- --distribution-name=$(python3 setup.py --name) \
+ --distribution-name=$(python3.10 setup.py --name) \
--product-page=$(jq --raw-output '.product_documentation // empty' .repo-metadata.json) \
--github-repository=$(jq --raw-output '.repo // empty' .repo-metadata.json) \
--issue-tracker=$(jq --raw-output '.issue_tracker // empty' .repo-metadata.json)
@@ -40,18 +40,18 @@ python3 -m docuploader create-metadata \
cat docs.metadata
# upload docs
-python3 -m docuploader upload docs/_build/html --metadata-file docs.metadata --staging-bucket "${STAGING_BUCKET}"
+python3.10 -m docuploader upload docs/_build/html --metadata-file docs.metadata --staging-bucket "${STAGING_BUCKET}"
# docfx yaml files
nox -s docfx
# create metadata.
-python3 -m docuploader create-metadata \
+python3.10 -m docuploader create-metadata \
--name=$(jq --raw-output '.name // empty' .repo-metadata.json) \
- --version=$(python3 setup.py --version) \
+ --version=$(python3.10 setup.py --version) \
--language=$(jq --raw-output '.language // empty' .repo-metadata.json) \
- --distribution-name=$(python3 setup.py --name) \
+ --distribution-name=$(python3.10 setup.py --name) \
--product-page=$(jq --raw-output '.product_documentation // empty' .repo-metadata.json) \
--github-repository=$(jq --raw-output '.repo // empty' .repo-metadata.json) \
--issue-tracker=$(jq --raw-output '.issue_tracker // empty' .repo-metadata.json)
@@ -59,4 +59,4 @@ python3 -m docuploader create-metadata \
cat docs.metadata
# upload docs
-python3 -m docuploader upload docs/_build/html/docfx_yaml --metadata-file docs.metadata --destination-prefix docfx --staging-bucket "${V2_STAGING_BUCKET}"
+python3.10 -m docuploader upload docs/_build/html/docfx_yaml --metadata-file docs.metadata --destination-prefix docfx --staging-bucket "${V2_STAGING_BUCKET}"
From e4ae5b6d22f66f178bfb5825c9e285f4ac827369 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 13 Sep 2024 17:46:58 -0700
Subject: [PATCH 131/158] chore(python): update unittest workflow template
(#298)
Source-Link: https://github.com/googleapis/synthtool/commit/e6f91eb4db419b02af74197905b99fa00a6030c0
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:365d92ef2206cfad00a8c5955c36789d0de124e2b6d92a72dd0486315a0f2e57
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/unittest.yml | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 6d064dd..f8bd814 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:94bb690db96e6242b2567a4860a94d48fa48696d092e51b0884a1a2c0a79a407
-# created: 2024-07-31T14:52:44.926548819Z
+ digest: sha256:365d92ef2206cfad00a8c5955c36789d0de124e2b6d92a72dd0486315a0f2e57
+# created: 2024-09-04T14:50:52.658171431Z
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index f4a337c..dd8bd76 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -30,6 +30,7 @@ jobs:
with:
name: coverage-artifact-${{ matrix.python }}
path: .coverage-${{ matrix.python }}
+ include-hidden-files: true
cover:
runs-on: ubuntu-latest
From e5fb3ea79ea70d538a97c758a33d0b3ab7d1182c Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 17 Sep 2024 11:17:47 -0400
Subject: [PATCH 132/158] build(python): release script update (#300)
Source-Link: https://github.com/googleapis/synthtool/commit/71a72973dddbc66ea64073b53eda49f0d22e0942
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e8dcfd7cbfd8beac3a3ff8d3f3185287ea0625d859168cc80faccfc9a7a00455
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/release.sh | 2 +-
.kokoro/release/common.cfg | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index f8bd814..597e0c3 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:365d92ef2206cfad00a8c5955c36789d0de124e2b6d92a72dd0486315a0f2e57
-# created: 2024-09-04T14:50:52.658171431Z
+ digest: sha256:e8dcfd7cbfd8beac3a3ff8d3f3185287ea0625d859168cc80faccfc9a7a00455
+# created: 2024-09-16T21:04:09.091105552Z
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
index dc51194..b860a5a 100755
--- a/.kokoro/release.sh
+++ b/.kokoro/release.sh
@@ -23,7 +23,7 @@ python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /
export PYTHONUNBUFFERED=1
# Move into the package, build the distribution and upload.
-TWINE_PASSWORD=$(cat "${KOKORO_KEYSTORE_DIR}/73713_google-cloud-pypi-token-keystore-1")
+TWINE_PASSWORD=$(cat "${KOKORO_KEYSTORE_DIR}/73713_google-cloud-pypi-token-keystore-2")
cd github/python-cloud-core
python3 setup.py sdist bdist_wheel
twine upload --username __token__ --password "${TWINE_PASSWORD}" dist/*
diff --git a/.kokoro/release/common.cfg b/.kokoro/release/common.cfg
index fd40bcb..884a5a6 100644
--- a/.kokoro/release/common.cfg
+++ b/.kokoro/release/common.cfg
@@ -28,7 +28,7 @@ before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
- keyname: "google-cloud-pypi-token-keystore-1"
+ keyname: "google-cloud-pypi-token-keystore-2"
}
}
}
From 738d8e41bd65a7a1932fc120cdb9ca3192896348 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 15 Nov 2024 16:06:43 -0500
Subject: [PATCH 133/158] chore(python): update dependencies in
.kokoro/docker/docs (#309)
* chore(python): update dependencies in .kokoro/docker/docs
Source-Link: https://github.com/googleapis/synthtool/commit/59171c8f83f3522ce186e4d110d27e772da4ba7a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2ed982f884312e4883e01b5ab8af8b6935f0216a5a2d82928d273081fc3be562
* Enable testing for Python 3.13
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 4 +-
.github/release-trigger.yml | 1 +
.github/workflows/unittest.yml | 2 +-
.kokoro/docker/docs/requirements.txt | 56 ++++++++++----------
.kokoro/docs/common.cfg | 2 +-
.kokoro/samples/python3.13/common.cfg | 40 ++++++++++++++
.kokoro/samples/python3.13/continuous.cfg | 6 +++
.kokoro/samples/python3.13/periodic-head.cfg | 11 ++++
.kokoro/samples/python3.13/periodic.cfg | 6 +++
.kokoro/samples/python3.13/presubmit.cfg | 6 +++
.kokoro/test-samples-impl.sh | 3 +-
CONTRIBUTING.rst | 6 ++-
noxfile.py | 2 +-
testing/constraints-3.13.txt | 0
14 files changed, 109 insertions(+), 36 deletions(-)
create mode 100644 .kokoro/samples/python3.13/common.cfg
create mode 100644 .kokoro/samples/python3.13/continuous.cfg
create mode 100644 .kokoro/samples/python3.13/periodic-head.cfg
create mode 100644 .kokoro/samples/python3.13/periodic.cfg
create mode 100644 .kokoro/samples/python3.13/presubmit.cfg
create mode 100644 testing/constraints-3.13.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 597e0c3..6301519 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:e8dcfd7cbfd8beac3a3ff8d3f3185287ea0625d859168cc80faccfc9a7a00455
-# created: 2024-09-16T21:04:09.091105552Z
+ digest: sha256:2ed982f884312e4883e01b5ab8af8b6935f0216a5a2d82928d273081fc3be562
+# created: 2024-11-12T12:09:45.821174897Z
diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml
index d4ca941..339fe15 100644
--- a/.github/release-trigger.yml
+++ b/.github/release-trigger.yml
@@ -1 +1,2 @@
enabled: true
+multiScmName: python-cloud-core
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index dd8bd76..6a0bc07 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
+ python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- name: Checkout
uses: actions/checkout@v4
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index 7129c77..8bb0764 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -1,42 +1,42 @@
#
-# This file is autogenerated by pip-compile with Python 3.9
+# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile --allow-unsafe --generate-hashes requirements.in
#
-argcomplete==3.4.0 \
- --hash=sha256:69a79e083a716173e5532e0fa3bef45f793f4e61096cf52b5a42c0211c8b8aa5 \
- --hash=sha256:c2abcdfe1be8ace47ba777d4fce319eb13bf8ad9dace8d085dcad6eded88057f
+argcomplete==3.5.1 \
+ --hash=sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363 \
+ --hash=sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4
# via nox
-colorlog==6.8.2 \
- --hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
- --hash=sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33
+colorlog==6.9.0 \
+ --hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \
+ --hash=sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2
# via nox
-distlib==0.3.8 \
- --hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
- --hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
+distlib==0.3.9 \
+ --hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
+ --hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
# via virtualenv
-filelock==3.15.4 \
- --hash=sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb \
- --hash=sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7
+filelock==3.16.1 \
+ --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
+ --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
# via virtualenv
-nox==2024.4.15 \
- --hash=sha256:6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 \
- --hash=sha256:ecf6700199cdfa9e5ea0a41ff5e6ef4641d09508eda6edb89d9987864115817f
+nox==2024.10.9 \
+ --hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
+ --hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
# via -r requirements.in
-packaging==24.1 \
- --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
- --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
+packaging==24.2 \
+ --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
+ --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f
# via nox
-platformdirs==4.2.2 \
- --hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
- --hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
+platformdirs==4.3.6 \
+ --hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
+ --hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-tomli==2.0.1 \
- --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
- --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
+tomli==2.0.2 \
+ --hash=sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38 \
+ --hash=sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed
# via nox
-virtualenv==20.26.3 \
- --hash=sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a \
- --hash=sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589
+virtualenv==20.27.1 \
+ --hash=sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba \
+ --hash=sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4
# via nox
diff --git a/.kokoro/docs/common.cfg b/.kokoro/docs/common.cfg
index ff5ab7e..8ad54ef 100644
--- a/.kokoro/docs/common.cfg
+++ b/.kokoro/docs/common.cfg
@@ -63,4 +63,4 @@ before_action {
keyname: "docuploader_service_account"
}
}
-}
\ No newline at end of file
+}
diff --git a/.kokoro/samples/python3.13/common.cfg b/.kokoro/samples/python3.13/common.cfg
new file mode 100644
index 0000000..67c71c6
--- /dev/null
+++ b/.kokoro/samples/python3.13/common.cfg
@@ -0,0 +1,40 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Build logs will be here
+action {
+ define_artifacts {
+ regex: "**/*sponge_log.xml"
+ }
+}
+
+# Specify which tests to run
+env_vars: {
+ key: "RUN_TESTS_SESSION"
+ value: "py-3.13"
+}
+
+# Declare build specific Cloud project.
+env_vars: {
+ key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
+ value: "python-docs-samples-tests-313"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples.sh"
+}
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
+}
+
+# Download secrets for samples
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
+
+# Download trampoline resources.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Use the trampoline script to run in docker.
+build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
diff --git a/.kokoro/samples/python3.13/continuous.cfg b/.kokoro/samples/python3.13/continuous.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.13/continuous.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.13/periodic-head.cfg b/.kokoro/samples/python3.13/periodic-head.cfg
new file mode 100644
index 0000000..f9e9e94
--- /dev/null
+++ b/.kokoro/samples/python3.13/periodic-head.cfg
@@ -0,0 +1,11 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
+
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
+}
diff --git a/.kokoro/samples/python3.13/periodic.cfg b/.kokoro/samples/python3.13/periodic.cfg
new file mode 100644
index 0000000..71cd1e5
--- /dev/null
+++ b/.kokoro/samples/python3.13/periodic.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "False"
+}
diff --git a/.kokoro/samples/python3.13/presubmit.cfg b/.kokoro/samples/python3.13/presubmit.cfg
new file mode 100644
index 0000000..a1c8d97
--- /dev/null
+++ b/.kokoro/samples/python3.13/presubmit.cfg
@@ -0,0 +1,6 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+env_vars: {
+ key: "INSTALL_LIBRARY_FROM_SOURCE"
+ value: "True"
+}
\ No newline at end of file
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 55910c8..53e365b 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -33,7 +33,8 @@ export PYTHONUNBUFFERED=1
env | grep KOKORO
# Install nox
-python3.9 -m pip install --upgrade --quiet nox
+# `virtualenv==20.26.6` is added for Python 3.7 compatibility
+python3.9 -m pip install --upgrade --quiet nox virtualenv==20.26.6
# Use secrets acessor service account to get secrets
if [[ -f "${KOKORO_GFILE_DIR}/secrets_viewer_service_account.json" ]]; then
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index d0a4897..f6f9ad5 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.7, 3.8, 3.9, 3.10, 3.11 and 3.12 on both UNIX and Windows.
+ 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests.
- To run a single unit test::
- $ nox -s unit-3.12 -- -k
+ $ nox -s unit-3.13 -- -k
.. note::
@@ -227,6 +227,7 @@ We support:
- `Python 3.10`_
- `Python 3.11`_
- `Python 3.12`_
+- `Python 3.13`_
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
@@ -234,6 +235,7 @@ We support:
.. _Python 3.10: https://docs.python.org/3.10/
.. _Python 3.11: https://docs.python.org/3.11/
.. _Python 3.12: https://docs.python.org/3.12/
+.. _Python 3.13: https://docs.python.org/3.13/
Supported versions can be found in our ``noxfile.py`` `config`_.
diff --git a/noxfile.py b/noxfile.py
index aef545d..70ba2b2 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -96,7 +96,7 @@ def default(session):
)
-@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"])
+@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"])
def unit(session):
"""Default unit test session."""
default(session)
diff --git a/testing/constraints-3.13.txt b/testing/constraints-3.13.txt
new file mode 100644
index 0000000..e69de29
From 94dc5c114e9277259ccd12eb3217f7f3227bae49 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 8 Jan 2025 12:39:55 -0800
Subject: [PATCH 134/158] chore(python): Update the python version in docs
presubmit to use 3.10 (#312)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(python): Update the python version in docs presubmit to use 3.10
Source-Link: https://github.com/googleapis/synthtool/commit/de3def663b75d8b9ae1e5d548364c960ff13af8f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:a1c5112b81d645f5bbc4d4bbc99d7dcb5089a52216c0e3fb1203a0eeabadd7d5
* fix lint presubmit
* fix lint build
* fix lint build
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* exclude .github/workflows/lint.yml
* fix lint build
---------
Co-authored-by: Owl Bot
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 6 ++--
.github/workflows/docs.yml | 2 +-
.github/workflows/lint.yml | 2 +-
.github/workflows/unittest.yml | 5 ++-
.kokoro/docker/docs/requirements.txt | 52 ++++++++++++++++++++++------
owlbot.py | 1 +
6 files changed, 51 insertions(+), 17 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 6301519..1d0fd7e 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -1,4 +1,4 @@
-# Copyright 2024 Google LLC
+# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:2ed982f884312e4883e01b5ab8af8b6935f0216a5a2d82928d273081fc3be562
-# created: 2024-11-12T12:09:45.821174897Z
+ digest: sha256:a1c5112b81d645f5bbc4d4bbc99d7dcb5089a52216c0e3fb1203a0eeabadd7d5
+# created: 2025-01-02T23:09:36.975468657Z
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 698fbc5..2833fe9 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: "3.9"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 4866193..1051da0 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: "3.8"
+ python-version: "3.10"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index 6a0bc07..c66b757 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -5,7 +5,10 @@ on:
name: unittest
jobs:
unit:
- runs-on: ubuntu-latest
+ # TODO(https://github.com/googleapis/gapic-generator-python/issues/2303): use `ubuntu-latest` once this bug is fixed.
+ # Use ubuntu-22.04 until Python 3.7 is removed from the test matrix
+ # https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
+ runs-on: ubuntu-22.04
strategy:
matrix:
python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index 8bb0764..f99a5c4 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -2,11 +2,11 @@
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
-# pip-compile --allow-unsafe --generate-hashes requirements.in
+# pip-compile --allow-unsafe --generate-hashes synthtool/gcp/templates/python_library/.kokoro/docker/docs/requirements.in
#
-argcomplete==3.5.1 \
- --hash=sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363 \
- --hash=sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4
+argcomplete==3.5.2 \
+ --hash=sha256:036d020d79048a5d525bc63880d7a4b8d1668566b8a76daf1144c0bbe0f63472 \
+ --hash=sha256:23146ed7ac4403b70bd6026402468942ceba34a6732255b9edf5b7354f68a6bb
# via nox
colorlog==6.9.0 \
--hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \
@@ -23,7 +23,7 @@ filelock==3.16.1 \
nox==2024.10.9 \
--hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
--hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
- # via -r requirements.in
+ # via -r synthtool/gcp/templates/python_library/.kokoro/docker/docs/requirements.in
packaging==24.2 \
--hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
--hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f
@@ -32,11 +32,41 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-tomli==2.0.2 \
- --hash=sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38 \
- --hash=sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed
+tomli==2.2.1 \
+ --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \
+ --hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \
+ --hash=sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c \
+ --hash=sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b \
+ --hash=sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8 \
+ --hash=sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6 \
+ --hash=sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77 \
+ --hash=sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff \
+ --hash=sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea \
+ --hash=sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192 \
+ --hash=sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249 \
+ --hash=sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee \
+ --hash=sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4 \
+ --hash=sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98 \
+ --hash=sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8 \
+ --hash=sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4 \
+ --hash=sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281 \
+ --hash=sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744 \
+ --hash=sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69 \
+ --hash=sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13 \
+ --hash=sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140 \
+ --hash=sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e \
+ --hash=sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e \
+ --hash=sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc \
+ --hash=sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff \
+ --hash=sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec \
+ --hash=sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2 \
+ --hash=sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222 \
+ --hash=sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106 \
+ --hash=sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272 \
+ --hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \
+ --hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7
# via nox
-virtualenv==20.27.1 \
- --hash=sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba \
- --hash=sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4
+virtualenv==20.28.0 \
+ --hash=sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0 \
+ --hash=sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa
# via nox
diff --git a/owlbot.py b/owlbot.py
index 69af86f..af02b0a 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -36,6 +36,7 @@
".coveragerc",
"setup.cfg",
"README.rst",
+ ".github/workflows/lint.yml",
],
)
From cafac217bc86fa3abb7eb555f5494e767c1ee7fb Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 12:35:36 -0800
Subject: [PATCH 135/158] chore(python): exclude .github/workflows/unittest.yml
in renovate config (#314)
Source-Link: https://github.com/googleapis/synthtool/commit/106d292bd234e5d9977231dcfbc4831e34eba13a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:8ff1efe878e18bd82a0fb7b70bb86f77e7ab6901fed394440b6135db0ba8d84a
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
renovate.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 1d0fd7e..10cf433 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:a1c5112b81d645f5bbc4d4bbc99d7dcb5089a52216c0e3fb1203a0eeabadd7d5
-# created: 2025-01-02T23:09:36.975468657Z
+ digest: sha256:8ff1efe878e18bd82a0fb7b70bb86f77e7ab6901fed394440b6135db0ba8d84a
+# created: 2025-01-09T12:01:16.422459506Z
diff --git a/renovate.json b/renovate.json
index 39b2a0e..c7875c4 100644
--- a/renovate.json
+++ b/renovate.json
@@ -5,7 +5,7 @@
":preserveSemverRanges",
":disableDependencyDashboard"
],
- "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt", "setup.py"],
+ "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt", "setup.py", ".github/workflows/unittest.yml"],
"pip_requirements": {
"fileMatch": ["requirements-test.txt", "samples/[\\S/]*constraints.txt", "samples/[\\S/]*constraints-test.txt"]
}
From 72b5637206c60835faf81f709493dcedbf85f8fd Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 28 Jan 2025 13:14:12 -0800
Subject: [PATCH 136/158] chore(python): fix docs publish build (#316)
Source-Link: https://github.com/googleapis/synthtool/commit/bd9ede2fea1b640b7e90d5a1d110e6b300a2b43f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:04c35dc5f49f0f503a306397d6d043685f8d2bb822ab515818c4208d7fb2db3a
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 +-
.kokoro/docker/docs/requirements.in | 1 +
.kokoro/docker/docs/requirements.txt | 243 ++++++++++++++++++++++++++-
.kokoro/publish-docs.sh | 4 -
4 files changed, 237 insertions(+), 15 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 10cf433..4c0027f 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:8ff1efe878e18bd82a0fb7b70bb86f77e7ab6901fed394440b6135db0ba8d84a
-# created: 2025-01-09T12:01:16.422459506Z
+ digest: sha256:04c35dc5f49f0f503a306397d6d043685f8d2bb822ab515818c4208d7fb2db3a
+# created: 2025-01-16T15:24:11.364245182Z
diff --git a/.kokoro/docker/docs/requirements.in b/.kokoro/docker/docs/requirements.in
index 816817c..586bd07 100644
--- a/.kokoro/docker/docs/requirements.in
+++ b/.kokoro/docker/docs/requirements.in
@@ -1 +1,2 @@
nox
+gcp-docuploader
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index f99a5c4..a9360a2 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -2,16 +2,124 @@
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
-# pip-compile --allow-unsafe --generate-hashes synthtool/gcp/templates/python_library/.kokoro/docker/docs/requirements.in
+# pip-compile --allow-unsafe --generate-hashes requirements.in
#
-argcomplete==3.5.2 \
- --hash=sha256:036d020d79048a5d525bc63880d7a4b8d1668566b8a76daf1144c0bbe0f63472 \
- --hash=sha256:23146ed7ac4403b70bd6026402468942ceba34a6732255b9edf5b7354f68a6bb
+argcomplete==3.5.3 \
+ --hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
+ --hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
# via nox
+cachetools==5.5.0 \
+ --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
+ --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
+ # via google-auth
+certifi==2024.12.14 \
+ --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
+ --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db
+ # via requests
+charset-normalizer==3.4.1 \
+ --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \
+ --hash=sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa \
+ --hash=sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a \
+ --hash=sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294 \
+ --hash=sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b \
+ --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \
+ --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \
+ --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \
+ --hash=sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4 \
+ --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \
+ --hash=sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2 \
+ --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \
+ --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \
+ --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \
+ --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \
+ --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \
+ --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \
+ --hash=sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496 \
+ --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \
+ --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \
+ --hash=sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e \
+ --hash=sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a \
+ --hash=sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4 \
+ --hash=sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca \
+ --hash=sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78 \
+ --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \
+ --hash=sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5 \
+ --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \
+ --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \
+ --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \
+ --hash=sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765 \
+ --hash=sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6 \
+ --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \
+ --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \
+ --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \
+ --hash=sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd \
+ --hash=sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c \
+ --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \
+ --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \
+ --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \
+ --hash=sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770 \
+ --hash=sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824 \
+ --hash=sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f \
+ --hash=sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf \
+ --hash=sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487 \
+ --hash=sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d \
+ --hash=sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd \
+ --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \
+ --hash=sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534 \
+ --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \
+ --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \
+ --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \
+ --hash=sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd \
+ --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \
+ --hash=sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9 \
+ --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \
+ --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \
+ --hash=sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d \
+ --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \
+ --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \
+ --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \
+ --hash=sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7 \
+ --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \
+ --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \
+ --hash=sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8 \
+ --hash=sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41 \
+ --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \
+ --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \
+ --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \
+ --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \
+ --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \
+ --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \
+ --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \
+ --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \
+ --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \
+ --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \
+ --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \
+ --hash=sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e \
+ --hash=sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6 \
+ --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \
+ --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \
+ --hash=sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e \
+ --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \
+ --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \
+ --hash=sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c \
+ --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \
+ --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \
+ --hash=sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089 \
+ --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \
+ --hash=sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e \
+ --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \
+ --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616
+ # via requests
+click==8.1.8 \
+ --hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 \
+ --hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a
+ # via gcp-docuploader
colorlog==6.9.0 \
--hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \
--hash=sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2
- # via nox
+ # via
+ # gcp-docuploader
+ # nox
distlib==0.3.9 \
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
@@ -20,10 +128,78 @@ filelock==3.16.1 \
--hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
--hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
# via virtualenv
+gcp-docuploader==0.6.5 \
+ --hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
+ --hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
+ # via -r requirements.in
+google-api-core==2.24.0 \
+ --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
+ --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
+ # via
+ # google-cloud-core
+ # google-cloud-storage
+google-auth==2.37.0 \
+ --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
+ --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
+ # via
+ # google-api-core
+ # google-cloud-core
+ # google-cloud-storage
+google-cloud-core==2.4.1 \
+ --hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
+ --hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
+ # via google-cloud-storage
+google-cloud-storage==2.19.0 \
+ --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
+ --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
+ # via gcp-docuploader
+google-crc32c==1.6.0 \
+ --hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
+ --hash=sha256:18e311c64008f1f1379158158bb3f0c8d72635b9eb4f9545f8cf990c5668e59d \
+ --hash=sha256:236c87a46cdf06384f614e9092b82c05f81bd34b80248021f729396a78e55d7e \
+ --hash=sha256:35834855408429cecf495cac67ccbab802de269e948e27478b1e47dfb6465e57 \
+ --hash=sha256:386122eeaaa76951a8196310432c5b0ef3b53590ef4c317ec7588ec554fec5d2 \
+ --hash=sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8 \
+ --hash=sha256:48abd62ca76a2cbe034542ed1b6aee851b6f28aaca4e6551b5599b6f3ef175cc \
+ --hash=sha256:50cf2a96da226dcbff8671233ecf37bf6e95de98b2a2ebadbfdf455e6d05df42 \
+ --hash=sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f \
+ --hash=sha256:5bcc90b34df28a4b38653c36bb5ada35671ad105c99cfe915fb5bed7ad6924aa \
+ --hash=sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b \
+ --hash=sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc \
+ --hash=sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760 \
+ --hash=sha256:91ca8145b060679ec9176e6de4f89b07363d6805bd4760631ef254905503598d \
+ --hash=sha256:a184243544811e4a50d345838a883733461e67578959ac59964e43cca2c791e7 \
+ --hash=sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d \
+ --hash=sha256:bb0966e1c50d0ef5bc743312cc730b533491d60585a9a08f897274e57c3f70e0 \
+ --hash=sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3 \
+ --hash=sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3 \
+ --hash=sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00 \
+ --hash=sha256:d2952396dc604544ea7476b33fe87faedc24d666fb0c2d5ac971a2b9576ab871 \
+ --hash=sha256:d8797406499f28b5ef791f339594b0b5fdedf54e203b5066675c406ba69d705c \
+ --hash=sha256:d9e9913f7bd69e093b81da4535ce27af842e7bf371cde42d1ae9e9bd382dc0e9 \
+ --hash=sha256:e2806553238cd076f0a55bddab37a532b53580e699ed8e5606d0de1f856b5205 \
+ --hash=sha256:ebab974b1687509e5c973b5c4b8b146683e101e102e17a86bd196ecaa4d099fc \
+ --hash=sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d \
+ --hash=sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4
+ # via
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.7.2 \
+ --hash=sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa \
+ --hash=sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0
+ # via google-cloud-storage
+googleapis-common-protos==1.66.0 \
+ --hash=sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c \
+ --hash=sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed
+ # via google-api-core
+idna==3.10 \
+ --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
+ --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
+ # via requests
nox==2024.10.9 \
--hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
--hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
- # via -r synthtool/gcp/templates/python_library/.kokoro/docker/docs/requirements.in
+ # via -r requirements.in
packaging==24.2 \
--hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
--hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f
@@ -32,6 +208,51 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
+proto-plus==1.25.0 \
+ --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
+ --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
+ # via google-api-core
+protobuf==5.29.3 \
+ --hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
+ --hash=sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7 \
+ --hash=sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888 \
+ --hash=sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620 \
+ --hash=sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da \
+ --hash=sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252 \
+ --hash=sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a \
+ --hash=sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e \
+ --hash=sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107 \
+ --hash=sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f \
+ --hash=sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84
+ # via
+ # gcp-docuploader
+ # google-api-core
+ # googleapis-common-protos
+ # proto-plus
+pyasn1==0.6.1 \
+ --hash=sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 \
+ --hash=sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034
+ # via
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.4.1 \
+ --hash=sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd \
+ --hash=sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c
+ # via google-auth
+requests==2.32.3 \
+ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
+ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
+ # via
+ # google-api-core
+ # google-cloud-storage
+rsa==4.9 \
+ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
+ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21
+ # via google-auth
+six==1.17.0 \
+ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
+ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
+ # via gcp-docuploader
tomli==2.2.1 \
--hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \
--hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \
@@ -66,7 +287,11 @@ tomli==2.2.1 \
--hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \
--hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7
# via nox
-virtualenv==20.28.0 \
- --hash=sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0 \
- --hash=sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa
+urllib3==2.3.0 \
+ --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
+ --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
+ # via requests
+virtualenv==20.28.1 \
+ --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
+ --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
# via nox
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
index 233205d..4ed4aaf 100755
--- a/.kokoro/publish-docs.sh
+++ b/.kokoro/publish-docs.sh
@@ -20,10 +20,6 @@ export PYTHONUNBUFFERED=1
export PATH="${HOME}/.local/bin:${PATH}"
-# Install nox
-python3.10 -m pip install --require-hashes -r .kokoro/requirements.txt
-python3.10 -m nox --version
-
# build docs
nox -s docs
From 1425a976d8399f367590a81e5150be44e2b8fc88 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 30 Jan 2025 19:35:11 +0100
Subject: [PATCH 137/158] chore(deps): update all dependencies (#301)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(deps): update all dependencies
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: Owl Bot
Co-authored-by: Victor Chudnovsky
From b94cde9ea5039ffd12cbae0ffbc9b47ec73459ab Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 11:50:01 -0800
Subject: [PATCH 138/158] chore(deps): bump jinja2 from 3.1.4 to 3.1.5 in
/.kokoro (#313)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)
---
updated-dependencies:
- dependency-name: jinja2
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Victor Chudnovsky
---
.kokoro/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index 9622baf..aba1eb2 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -285,9 +285,9 @@ jeepney==0.8.0 \
# via
# keyring
# secretstorage
-jinja2==3.1.4 \
- --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \
- --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d
+jinja2==3.1.5 \
+ --hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
+ --hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
# via gcp-releasetool
keyring==25.2.1 \
--hash=sha256:2458681cdefc0dbc0b7eb6cf75d0b98e59f9ad9b2d4edd319d18f68bdca95e50 \
From ab30beb2f5ad64de2f9d1eaa20345ac51104a571 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 11:56:40 -0800
Subject: [PATCH 139/158] chore(deps): bump virtualenv from 20.26.3 to 20.26.6
in /.kokoro (#315)
Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.26.3 to 20.26.6.
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/virtualenv/compare/20.26.3...20.26.6)
---
updated-dependencies:
- dependency-name: virtualenv
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.kokoro/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
index aba1eb2..7a0594f 100644
--- a/.kokoro/requirements.txt
+++ b/.kokoro/requirements.txt
@@ -517,9 +517,9 @@ urllib3==2.2.2 \
# via
# requests
# twine
-virtualenv==20.26.3 \
- --hash=sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a \
- --hash=sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589
+virtualenv==20.26.6 \
+ --hash=sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48 \
+ --hash=sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2
# via nox
wheel==0.43.0 \
--hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
From 9cd5dd400b76d327b84e9d4a7b371cceb8cfa457 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 31 Jan 2025 00:23:08 +0100
Subject: [PATCH 140/158] chore(deps): update all dependencies (#317)
Co-authored-by: Victor Chudnovsky
---
.kokoro/docker/docs/requirements.txt | 42 ++++++++++++++--------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index a9360a2..d6e9389 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -8,9 +8,9 @@ argcomplete==3.5.3 \
--hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
--hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
# via nox
-cachetools==5.5.0 \
- --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
- --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
+cachetools==5.5.1 \
+ --hash=sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95 \
+ --hash=sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb
# via google-auth
certifi==2024.12.14 \
--hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
@@ -124,23 +124,23 @@ distlib==0.3.9 \
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
# via virtualenv
-filelock==3.16.1 \
- --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
- --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
+filelock==3.17.0 \
+ --hash=sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 \
+ --hash=sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e
# via virtualenv
gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-google-api-core==2.24.0 \
- --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
- --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
+google-api-core==2.24.1 \
+ --hash=sha256:bc78d608f5a5bf853b80bd70a795f703294de656c096c0968320830a4bc280f1 \
+ --hash=sha256:f8b36f5456ab0dd99a1b693a40a31d1e7757beea380ad1b38faaf8941eae9d8a
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.37.0 \
- --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
- --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
+google-auth==2.38.0 \
+ --hash=sha256:8285113607d3b80a3f1543b75962447ba8a09fe85783432a784fdeef6ac094c4 \
+ --hash=sha256:e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a
# via
# google-api-core
# google-cloud-core
@@ -149,9 +149,9 @@ google-cloud-core==2.4.1 \
--hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
--hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
# via google-cloud-storage
-google-cloud-storage==2.19.0 \
- --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
- --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
+google-cloud-storage==3.0.0 \
+ --hash=sha256:2accb3e828e584888beff1165e5f3ac61aa9088965eb0165794a82d8c7f95297 \
+ --hash=sha256:f85fd059650d2dbb0ac158a9a6b304b66143b35ed2419afec2905ca522eb2c6a
# via gcp-docuploader
google-crc32c==1.6.0 \
--hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
@@ -208,9 +208,9 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-proto-plus==1.25.0 \
- --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
- --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
+proto-plus==1.26.0 \
+ --hash=sha256:6e93d5f5ca267b54300880fff156b6a3386b3fa3f43b1da62e680fc0c586ef22 \
+ --hash=sha256:bf2dfaa3da281fc3187d12d224c707cb57214fb2c22ba854eb0c105a3fb2d4d7
# via google-api-core
protobuf==5.29.3 \
--hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
@@ -291,7 +291,7 @@ urllib3==2.3.0 \
--hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
--hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
# via requests
-virtualenv==20.28.1 \
- --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
- --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
+virtualenv==20.29.1 \
+ --hash=sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779 \
+ --hash=sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35
# via nox
From dfac15b823a27a4c4ce68be9bb8aab6f81de5d83 Mon Sep 17 00:00:00 2001
From: Andrew Gorcester
Date: Thu, 13 Feb 2025 11:39:27 -0800
Subject: [PATCH 141/158] Feat: Client should pass client_options.api_key to
auth library (#321)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Feat: Client should pass client_options.api_key to auth library
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* bump auth requirement
* bump api core requirement
* bump requirements yet again
* only enable feature if auth library has support
* fix bare except lint issue
* add skipped files
* add skipped files again
---------
Co-authored-by: Owl Bot
---
.kokoro/docker/docs/requirements.txt | 42 ++++++++++++++--------------
google/cloud/client/__init__.py | 18 ++++++++++++
tests/unit/test_client.py | 28 +++++++++++++++++++
3 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index d6e9389..a9360a2 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -8,9 +8,9 @@ argcomplete==3.5.3 \
--hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
--hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
# via nox
-cachetools==5.5.1 \
- --hash=sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95 \
- --hash=sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb
+cachetools==5.5.0 \
+ --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
+ --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
# via google-auth
certifi==2024.12.14 \
--hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
@@ -124,23 +124,23 @@ distlib==0.3.9 \
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
# via virtualenv
-filelock==3.17.0 \
- --hash=sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 \
- --hash=sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e
+filelock==3.16.1 \
+ --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
+ --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
# via virtualenv
gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-google-api-core==2.24.1 \
- --hash=sha256:bc78d608f5a5bf853b80bd70a795f703294de656c096c0968320830a4bc280f1 \
- --hash=sha256:f8b36f5456ab0dd99a1b693a40a31d1e7757beea380ad1b38faaf8941eae9d8a
+google-api-core==2.24.0 \
+ --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
+ --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.38.0 \
- --hash=sha256:8285113607d3b80a3f1543b75962447ba8a09fe85783432a784fdeef6ac094c4 \
- --hash=sha256:e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a
+google-auth==2.37.0 \
+ --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
+ --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
# via
# google-api-core
# google-cloud-core
@@ -149,9 +149,9 @@ google-cloud-core==2.4.1 \
--hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
--hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
# via google-cloud-storage
-google-cloud-storage==3.0.0 \
- --hash=sha256:2accb3e828e584888beff1165e5f3ac61aa9088965eb0165794a82d8c7f95297 \
- --hash=sha256:f85fd059650d2dbb0ac158a9a6b304b66143b35ed2419afec2905ca522eb2c6a
+google-cloud-storage==2.19.0 \
+ --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
+ --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
# via gcp-docuploader
google-crc32c==1.6.0 \
--hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
@@ -208,9 +208,9 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-proto-plus==1.26.0 \
- --hash=sha256:6e93d5f5ca267b54300880fff156b6a3386b3fa3f43b1da62e680fc0c586ef22 \
- --hash=sha256:bf2dfaa3da281fc3187d12d224c707cb57214fb2c22ba854eb0c105a3fb2d4d7
+proto-plus==1.25.0 \
+ --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
+ --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
# via google-api-core
protobuf==5.29.3 \
--hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
@@ -291,7 +291,7 @@ urllib3==2.3.0 \
--hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
--hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
# via requests
-virtualenv==20.29.1 \
- --hash=sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779 \
- --hash=sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35
+virtualenv==20.28.1 \
+ --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
+ --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
# via nox
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
index 93e5d22..1396486 100644
--- a/google/cloud/client/__init__.py
+++ b/google/cloud/client/__init__.py
@@ -30,6 +30,13 @@
from google.cloud._helpers import _determine_default_project
from google.oauth2 import service_account
+try:
+ import google.auth.api_key
+
+ HAS_GOOGLE_AUTH_API_KEY = True
+except ImportError:
+ HAS_GOOGLE_AUTH_API_KEY = False
+
_GOOGLE_AUTH_CREDENTIALS_HELP = (
"This library only supports credentials from google-auth-library-python. "
@@ -161,6 +168,15 @@ def __init__(self, credentials=None, _http=None, client_options=None):
"'credentials' and 'client_options.credentials_file' are mutually exclusive."
)
+ if (
+ HAS_GOOGLE_AUTH_API_KEY
+ and client_options.api_key
+ and (credentials or client_options.credentials_file)
+ ):
+ raise google.api_core.exceptions.DuplicateCredentialArgs(
+ "'client_options.api_key' is mutually exclusive with 'credentials' and 'client_options.credentials_file'."
+ )
+
if credentials and not isinstance(
credentials, google.auth.credentials.Credentials
):
@@ -174,6 +190,8 @@ def __init__(self, credentials=None, _http=None, client_options=None):
credentials, _ = google.auth.load_credentials_from_file(
client_options.credentials_file, scopes=scopes
)
+ elif HAS_GOOGLE_AUTH_API_KEY and client_options.api_key is not None:
+ credentials = google.auth.api_key.Credentials(client_options.api_key)
else:
credentials, _ = google.auth.default(scopes=scopes)
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
index fb35da4..943b422 100644
--- a/tests/unit/test_client.py
+++ b/tests/unit/test_client.py
@@ -17,6 +17,8 @@
import unittest
from unittest import mock
+from google.cloud.client import HAS_GOOGLE_AUTH_API_KEY
+
def _make_credentials():
import google.auth.credentials
@@ -75,6 +77,19 @@ def test_ctor_explicit(self):
self.assertIs(client_obj._credentials, credentials)
self.assertIs(client_obj._http_internal, http)
+ @unittest.skipIf(
+ not HAS_GOOGLE_AUTH_API_KEY, "Auth library version does not support API keys"
+ )
+ def test_ctor_client_options_w_api_key(self):
+ from google.auth.api_key import Credentials
+
+ API_KEY = "my_api_key"
+
+ client_options = {"api_key": API_KEY}
+ client_obj = self._make_one(client_options=client_options)
+
+ self.assertIsInstance(client_obj._credentials, Credentials)
+
def test_ctor_client_options_w_conflicting_creds(self):
from google.api_core.exceptions import DuplicateCredentialArgs
@@ -83,6 +98,19 @@ def test_ctor_client_options_w_conflicting_creds(self):
with self.assertRaises(DuplicateCredentialArgs):
self._make_one(credentials=credentials, client_options=client_options)
+ @unittest.skipIf(
+ not HAS_GOOGLE_AUTH_API_KEY, "Auth library version does not support API keys"
+ )
+ def test_ctor_client_options_w_api_key_and_conflicting_creds(self):
+ from google.api_core.exceptions import DuplicateCredentialArgs
+
+ API_KEY = "my_api_key"
+
+ credentials = _make_credentials()
+ client_options = {"api_key": API_KEY}
+ with self.assertRaises(DuplicateCredentialArgs):
+ self._make_one(credentials=credentials, client_options=client_options)
+
def test_ctor_bad_credentials(self):
credentials = mock.sentinel.credentials
From 14a190658e2de0a7e368e1ce2ae561c00a77c66d Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 20 Feb 2025 19:47:00 +0100
Subject: [PATCH 142/158] chore(deps): update all dependencies (#318)
---
.kokoro/docker/docs/requirements.txt | 60 ++++++++++++++--------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index a9360a2..312898b 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -8,13 +8,13 @@ argcomplete==3.5.3 \
--hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
--hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
# via nox
-cachetools==5.5.0 \
- --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
- --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
+cachetools==5.5.1 \
+ --hash=sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95 \
+ --hash=sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb
# via google-auth
-certifi==2024.12.14 \
- --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
- --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db
+certifi==2025.1.31 \
+ --hash=sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651 \
+ --hash=sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe
# via requests
charset-normalizer==3.4.1 \
--hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \
@@ -124,23 +124,23 @@ distlib==0.3.9 \
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
# via virtualenv
-filelock==3.16.1 \
- --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
- --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
+filelock==3.17.0 \
+ --hash=sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 \
+ --hash=sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e
# via virtualenv
gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-google-api-core==2.24.0 \
- --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
- --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
+google-api-core==2.24.1 \
+ --hash=sha256:bc78d608f5a5bf853b80bd70a795f703294de656c096c0968320830a4bc280f1 \
+ --hash=sha256:f8b36f5456ab0dd99a1b693a40a31d1e7757beea380ad1b38faaf8941eae9d8a
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.37.0 \
- --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
- --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
+google-auth==2.38.0 \
+ --hash=sha256:8285113607d3b80a3f1543b75962447ba8a09fe85783432a784fdeef6ac094c4 \
+ --hash=sha256:e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a
# via
# google-api-core
# google-cloud-core
@@ -149,9 +149,9 @@ google-cloud-core==2.4.1 \
--hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
--hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
# via google-cloud-storage
-google-cloud-storage==2.19.0 \
- --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
- --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
+google-cloud-storage==3.0.0 \
+ --hash=sha256:2accb3e828e584888beff1165e5f3ac61aa9088965eb0165794a82d8c7f95297 \
+ --hash=sha256:f85fd059650d2dbb0ac158a9a6b304b66143b35ed2419afec2905ca522eb2c6a
# via gcp-docuploader
google-crc32c==1.6.0 \
--hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
@@ -188,17 +188,17 @@ google-resumable-media==2.7.2 \
--hash=sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa \
--hash=sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0
# via google-cloud-storage
-googleapis-common-protos==1.66.0 \
- --hash=sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c \
- --hash=sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed
+googleapis-common-protos==1.67.0 \
+ --hash=sha256:21398025365f138be356d5923e9168737d94d46a72aefee4a6110a1f23463c86 \
+ --hash=sha256:579de760800d13616f51cf8be00c876f00a9f146d3e6510e19d1f4111758b741
# via google-api-core
idna==3.10 \
--hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
--hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
# via requests
-nox==2024.10.9 \
- --hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
- --hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
+nox==2025.2.9 \
+ --hash=sha256:7d1e92d1918c6980d70aee9cf1c1d19d16faa71c4afe338fffd39e8a460e2067 \
+ --hash=sha256:d50cd4ca568bd7621c2e6cbbc4845b3b7f7697f25d5fb0190ce8f4600be79768
# via -r requirements.in
packaging==24.2 \
--hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
@@ -208,9 +208,9 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-proto-plus==1.25.0 \
- --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
- --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
+proto-plus==1.26.0 \
+ --hash=sha256:6e93d5f5ca267b54300880fff156b6a3386b3fa3f43b1da62e680fc0c586ef22 \
+ --hash=sha256:bf2dfaa3da281fc3187d12d224c707cb57214fb2c22ba854eb0c105a3fb2d4d7
# via google-api-core
protobuf==5.29.3 \
--hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
@@ -291,7 +291,7 @@ urllib3==2.3.0 \
--hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
--hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
# via requests
-virtualenv==20.28.1 \
- --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
- --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
+virtualenv==20.29.2 \
+ --hash=sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728 \
+ --hash=sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a
# via nox
From 5fcc9d90758255b08d79ba917cc2e703aea1abf4 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 20 Feb 2025 11:33:19 -0800
Subject: [PATCH 143/158] chore(main): release 2.4.2 (#323)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(main): release 2.4.2
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Owl Bot
---
.kokoro/docker/docs/requirements.txt | 60 ++++++++++++++--------------
CHANGELOG.md | 7 ++++
google/cloud/version.py | 2 +-
3 files changed, 38 insertions(+), 31 deletions(-)
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
index 312898b..a9360a2 100644
--- a/.kokoro/docker/docs/requirements.txt
+++ b/.kokoro/docker/docs/requirements.txt
@@ -8,13 +8,13 @@ argcomplete==3.5.3 \
--hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
--hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
# via nox
-cachetools==5.5.1 \
- --hash=sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95 \
- --hash=sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb
+cachetools==5.5.0 \
+ --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
+ --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
# via google-auth
-certifi==2025.1.31 \
- --hash=sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651 \
- --hash=sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe
+certifi==2024.12.14 \
+ --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
+ --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db
# via requests
charset-normalizer==3.4.1 \
--hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \
@@ -124,23 +124,23 @@ distlib==0.3.9 \
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
# via virtualenv
-filelock==3.17.0 \
- --hash=sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 \
- --hash=sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e
+filelock==3.16.1 \
+ --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
+ --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
# via virtualenv
gcp-docuploader==0.6.5 \
--hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
--hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
# via -r requirements.in
-google-api-core==2.24.1 \
- --hash=sha256:bc78d608f5a5bf853b80bd70a795f703294de656c096c0968320830a4bc280f1 \
- --hash=sha256:f8b36f5456ab0dd99a1b693a40a31d1e7757beea380ad1b38faaf8941eae9d8a
+google-api-core==2.24.0 \
+ --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
+ --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
# via
# google-cloud-core
# google-cloud-storage
-google-auth==2.38.0 \
- --hash=sha256:8285113607d3b80a3f1543b75962447ba8a09fe85783432a784fdeef6ac094c4 \
- --hash=sha256:e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a
+google-auth==2.37.0 \
+ --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
+ --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
# via
# google-api-core
# google-cloud-core
@@ -149,9 +149,9 @@ google-cloud-core==2.4.1 \
--hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
--hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
# via google-cloud-storage
-google-cloud-storage==3.0.0 \
- --hash=sha256:2accb3e828e584888beff1165e5f3ac61aa9088965eb0165794a82d8c7f95297 \
- --hash=sha256:f85fd059650d2dbb0ac158a9a6b304b66143b35ed2419afec2905ca522eb2c6a
+google-cloud-storage==2.19.0 \
+ --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
+ --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
# via gcp-docuploader
google-crc32c==1.6.0 \
--hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
@@ -188,17 +188,17 @@ google-resumable-media==2.7.2 \
--hash=sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa \
--hash=sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0
# via google-cloud-storage
-googleapis-common-protos==1.67.0 \
- --hash=sha256:21398025365f138be356d5923e9168737d94d46a72aefee4a6110a1f23463c86 \
- --hash=sha256:579de760800d13616f51cf8be00c876f00a9f146d3e6510e19d1f4111758b741
+googleapis-common-protos==1.66.0 \
+ --hash=sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c \
+ --hash=sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed
# via google-api-core
idna==3.10 \
--hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
--hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
# via requests
-nox==2025.2.9 \
- --hash=sha256:7d1e92d1918c6980d70aee9cf1c1d19d16faa71c4afe338fffd39e8a460e2067 \
- --hash=sha256:d50cd4ca568bd7621c2e6cbbc4845b3b7f7697f25d5fb0190ce8f4600be79768
+nox==2024.10.9 \
+ --hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
+ --hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
# via -r requirements.in
packaging==24.2 \
--hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
@@ -208,9 +208,9 @@ platformdirs==4.3.6 \
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
# via virtualenv
-proto-plus==1.26.0 \
- --hash=sha256:6e93d5f5ca267b54300880fff156b6a3386b3fa3f43b1da62e680fc0c586ef22 \
- --hash=sha256:bf2dfaa3da281fc3187d12d224c707cb57214fb2c22ba854eb0c105a3fb2d4d7
+proto-plus==1.25.0 \
+ --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
+ --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
# via google-api-core
protobuf==5.29.3 \
--hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
@@ -291,7 +291,7 @@ urllib3==2.3.0 \
--hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
--hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
# via requests
-virtualenv==20.29.2 \
- --hash=sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728 \
- --hash=sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a
+virtualenv==20.28.1 \
+ --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
+ --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
# via nox
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4c26312..d79f709 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.4.2](https://github.com/googleapis/python-cloud-core/compare/v2.4.1...v2.4.2) (2025-02-20)
+
+
+### Features
+
+* Client should pass client_options.api_key to auth library ([#321](https://github.com/googleapis/python-cloud-core/issues/321)) ([dfac15b](https://github.com/googleapis/python-cloud-core/commit/dfac15b823a27a4c4ce68be9bb8aab6f81de5d83))
+
## [2.4.1](https://github.com/googleapis/python-cloud-core/compare/v2.4.0...v2.4.1) (2023-12-07)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 00697dc..c43aa75 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.4.1"
+__version__ = "2.4.2"
From 472d48ca0b1b41e3688555568049fca7c97621e8 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 20 Feb 2025 15:29:13 -0800
Subject: [PATCH 144/158] chore(python): fix typo in README (#320)
Source-Link: https://github.com/googleapis/synthtool/commit/93e1685311a3940e713fd00820aa9937d496f544
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:631b4a35a4f9dd5e97740a97c4c117646eb85b35e103844dc49d152bd18694cd
Co-authored-by: Owl Bot
Co-authored-by: Victor Chudnovsky
---
.github/.OwlBot.lock.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 4c0027f..7a81004 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:04c35dc5f49f0f503a306397d6d043685f8d2bb822ab515818c4208d7fb2db3a
-# created: 2025-01-16T15:24:11.364245182Z
+ digest: sha256:631b4a35a4f9dd5e97740a97c4c117646eb85b35e103844dc49d152bd18694cd
+# created: 2025-02-05T14:40:56.685429494Z
From 65282ea23d399624b1740d9d9d3dae4d11c06226 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 20 Feb 2025 15:54:15 -0800
Subject: [PATCH 145/158] chore: update readme for logging (#322)
Source-Link: https://github.com/googleapis/synthtool/commit/1fb7b5127c2920344823ad5dd3c4ff732b58fc67
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:58dd193e1be3f5f02276cdf222ed7f8dfc3be1f163488aea767bcf35a0e2b0cd
Co-authored-by: Owl Bot
Co-authored-by: Victor Chudnovsky
---
.github/.OwlBot.lock.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 7a81004..d44a56c 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:631b4a35a4f9dd5e97740a97c4c117646eb85b35e103844dc49d152bd18694cd
-# created: 2025-02-05T14:40:56.685429494Z
+ digest: sha256:58dd193e1be3f5f02276cdf222ed7f8dfc3be1f163488aea767bcf35a0e2b0cd
+# created: 2025-02-13T19:05:42.430723045Z
From 0d0db4f738925d92609da60b57eb31df92262f57 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Sun, 2 Mar 2025 12:13:46 -0500
Subject: [PATCH 146/158] chore(python): conditionally load credentials in
.kokoro/build.sh (#325)
Source-Link: https://github.com/googleapis/synthtool/commit/aa69fb74717c8f4c58c60f8cc101d3f4b2c07b09
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f016446d6e520e5fb552c45b110cba3f217bffdd3d06bdddd076e9e6d13266cf
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.kokoro/build.sh | 20 ++++++++++++++------
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index d44a56c..3f7634f 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:58dd193e1be3f5f02276cdf222ed7f8dfc3be1f163488aea767bcf35a0e2b0cd
-# created: 2025-02-13T19:05:42.430723045Z
+ digest: sha256:f016446d6e520e5fb552c45b110cba3f217bffdd3d06bdddd076e9e6d13266cf
+# created: 2025-02-21T19:32:52.01306189Z
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index a5bbf55..d41b45a 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -15,11 +15,13 @@
set -eo pipefail
+CURRENT_DIR=$(dirname "${BASH_SOURCE[0]}")
+
if [[ -z "${PROJECT_ROOT:-}" ]]; then
- PROJECT_ROOT="github/python-cloud-core"
+ PROJECT_ROOT=$(realpath "${CURRENT_DIR}/..")
fi
-cd "${PROJECT_ROOT}"
+pushd "${PROJECT_ROOT}"
# Disable buffering, so that the logs stream through.
export PYTHONUNBUFFERED=1
@@ -28,10 +30,16 @@ export PYTHONUNBUFFERED=1
env | grep KOKORO
# Setup service account credentials.
-export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/service-account.json
+if [[ -f "${KOKORO_GFILE_DIR}/service-account.json" ]]
+then
+ export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/service-account.json
+fi
# Setup project id.
-export PROJECT_ID=$(cat "${KOKORO_GFILE_DIR}/project-id.json")
+if [[ -f "${KOKORO_GFILE_DIR}/project-id.json" ]]
+then
+ export PROJECT_ID=$(cat "${KOKORO_GFILE_DIR}/project-id.json")
+fi
# If this is a continuous build, send the test log to the FlakyBot.
# See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
@@ -46,7 +54,7 @@ fi
# If NOX_SESSION is set, it only runs the specified session,
# otherwise run all the sessions.
if [[ -n "${NOX_SESSION:-}" ]]; then
- python3 -m nox -s ${NOX_SESSION:-}
+ python3 -m nox -s ${NOX_SESSION:-}
else
- python3 -m nox
+ python3 -m nox
fi
From da34f8a73b5aaaaee25e3a85da8f13488bdbe29e Mon Sep 17 00:00:00 2001
From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Date: Sun, 2 Mar 2025 19:15:19 +0200
Subject: [PATCH 147/158] fix: Declare support for Python 3.13 (#326)
Co-authored-by: Anthonios Partheniou
---
setup.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/setup.py b/setup.py
index eced53a..0264021 100644
--- a/setup.py
+++ b/setup.py
@@ -81,6 +81,7 @@
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
"Topic :: Internet",
],
From 7c22c6c40e28a578e05fdf4c2da57371b22f6de1 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 10 Mar 2025 10:19:34 -0400
Subject: [PATCH 148/158] chore: remove unused files (#328)
---
.github/.OwlBot.lock.yaml | 4 +-
.kokoro/docker/docs/Dockerfile | 89 -----
.kokoro/docker/docs/requirements.in | 2 -
.kokoro/docker/docs/requirements.txt | 297 ---------------
.kokoro/docs/common.cfg | 66 ----
.kokoro/docs/docs-presubmit.cfg | 28 --
.kokoro/docs/docs.cfg | 1 -
.kokoro/publish-docs.sh | 58 ---
.kokoro/release.sh | 29 --
.kokoro/release/common.cfg | 49 ---
.kokoro/release/release.cfg | 1 -
.kokoro/requirements.in | 11 -
.kokoro/requirements.txt | 537 ---------------------------
13 files changed, 2 insertions(+), 1170 deletions(-)
delete mode 100644 .kokoro/docker/docs/Dockerfile
delete mode 100644 .kokoro/docker/docs/requirements.in
delete mode 100644 .kokoro/docker/docs/requirements.txt
delete mode 100644 .kokoro/docs/common.cfg
delete mode 100644 .kokoro/docs/docs-presubmit.cfg
delete mode 100644 .kokoro/docs/docs.cfg
delete mode 100755 .kokoro/publish-docs.sh
delete mode 100755 .kokoro/release.sh
delete mode 100644 .kokoro/release/common.cfg
delete mode 100644 .kokoro/release/release.cfg
delete mode 100644 .kokoro/requirements.in
delete mode 100644 .kokoro/requirements.txt
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 3f7634f..c631e1f 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:f016446d6e520e5fb552c45b110cba3f217bffdd3d06bdddd076e9e6d13266cf
-# created: 2025-02-21T19:32:52.01306189Z
+ digest: sha256:5581906b957284864632cde4e9c51d1cc66b0094990b27e689132fe5cd036046
+# created: 2025-03-05
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
deleted file mode 100644
index e5410e2..0000000
--- a/.kokoro/docker/docs/Dockerfile
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from ubuntu:24.04
-
-ENV DEBIAN_FRONTEND noninteractive
-
-# Ensure local Python is preferred over distribution Python.
-ENV PATH /usr/local/bin:$PATH
-
-# Install dependencies.
-RUN apt-get update \
- && apt-get install -y --no-install-recommends \
- apt-transport-https \
- build-essential \
- ca-certificates \
- curl \
- dirmngr \
- git \
- gpg-agent \
- graphviz \
- libbz2-dev \
- libdb5.3-dev \
- libexpat1-dev \
- libffi-dev \
- liblzma-dev \
- libreadline-dev \
- libsnappy-dev \
- libssl-dev \
- libsqlite3-dev \
- portaudio19-dev \
- redis-server \
- software-properties-common \
- ssh \
- sudo \
- tcl \
- tcl-dev \
- tk \
- tk-dev \
- uuid-dev \
- wget \
- zlib1g-dev \
- && add-apt-repository universe \
- && apt-get update \
- && apt-get -y install jq \
- && apt-get clean autoclean \
- && apt-get autoremove -y \
- && rm -rf /var/lib/apt/lists/* \
- && rm -f /var/cache/apt/archives/*.deb
-
-
-###################### Install python 3.10.14 for docs/docfx session
-
-# Download python 3.10.14
-RUN wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
-
-# Extract files
-RUN tar -xvf Python-3.10.14.tgz
-
-# Install python 3.10.14
-RUN ./Python-3.10.14/configure --enable-optimizations
-RUN make altinstall
-
-ENV PATH /usr/local/bin/python3.10:$PATH
-
-###################### Install pip
-RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
- && python3.10 /tmp/get-pip.py \
- && rm /tmp/get-pip.py
-
-# Test pip
-RUN python3.10 -m pip
-
-# Install build requirements
-COPY requirements.txt /requirements.txt
-RUN python3.10 -m pip install --require-hashes -r requirements.txt
-
-CMD ["python3.10"]
diff --git a/.kokoro/docker/docs/requirements.in b/.kokoro/docker/docs/requirements.in
deleted file mode 100644
index 586bd07..0000000
--- a/.kokoro/docker/docs/requirements.in
+++ /dev/null
@@ -1,2 +0,0 @@
-nox
-gcp-docuploader
diff --git a/.kokoro/docker/docs/requirements.txt b/.kokoro/docker/docs/requirements.txt
deleted file mode 100644
index a9360a2..0000000
--- a/.kokoro/docker/docs/requirements.txt
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.10
-# by the following command:
-#
-# pip-compile --allow-unsafe --generate-hashes requirements.in
-#
-argcomplete==3.5.3 \
- --hash=sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61 \
- --hash=sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392
- # via nox
-cachetools==5.5.0 \
- --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
- --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
- # via google-auth
-certifi==2024.12.14 \
- --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \
- --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db
- # via requests
-charset-normalizer==3.4.1 \
- --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \
- --hash=sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa \
- --hash=sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a \
- --hash=sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294 \
- --hash=sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b \
- --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \
- --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \
- --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \
- --hash=sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4 \
- --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \
- --hash=sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2 \
- --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \
- --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \
- --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \
- --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \
- --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \
- --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \
- --hash=sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496 \
- --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \
- --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \
- --hash=sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e \
- --hash=sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a \
- --hash=sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4 \
- --hash=sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca \
- --hash=sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78 \
- --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \
- --hash=sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5 \
- --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \
- --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \
- --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \
- --hash=sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765 \
- --hash=sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6 \
- --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \
- --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \
- --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \
- --hash=sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd \
- --hash=sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c \
- --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \
- --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \
- --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \
- --hash=sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770 \
- --hash=sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824 \
- --hash=sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f \
- --hash=sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf \
- --hash=sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487 \
- --hash=sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d \
- --hash=sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd \
- --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \
- --hash=sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534 \
- --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \
- --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \
- --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \
- --hash=sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd \
- --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \
- --hash=sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9 \
- --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \
- --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \
- --hash=sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d \
- --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \
- --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \
- --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \
- --hash=sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7 \
- --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \
- --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \
- --hash=sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8 \
- --hash=sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41 \
- --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \
- --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \
- --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \
- --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \
- --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \
- --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \
- --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \
- --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \
- --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \
- --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \
- --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \
- --hash=sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e \
- --hash=sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6 \
- --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \
- --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \
- --hash=sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e \
- --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \
- --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \
- --hash=sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c \
- --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \
- --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \
- --hash=sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089 \
- --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \
- --hash=sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e \
- --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \
- --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616
- # via requests
-click==8.1.8 \
- --hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 \
- --hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a
- # via gcp-docuploader
-colorlog==6.9.0 \
- --hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \
- --hash=sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2
- # via
- # gcp-docuploader
- # nox
-distlib==0.3.9 \
- --hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
- --hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
- # via virtualenv
-filelock==3.16.1 \
- --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
- --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
- # via virtualenv
-gcp-docuploader==0.6.5 \
- --hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
- --hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
- # via -r requirements.in
-google-api-core==2.24.0 \
- --hash=sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9 \
- --hash=sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf
- # via
- # google-cloud-core
- # google-cloud-storage
-google-auth==2.37.0 \
- --hash=sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00 \
- --hash=sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0
- # via
- # google-api-core
- # google-cloud-core
- # google-cloud-storage
-google-cloud-core==2.4.1 \
- --hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
- --hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
- # via google-cloud-storage
-google-cloud-storage==2.19.0 \
- --hash=sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba \
- --hash=sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2
- # via gcp-docuploader
-google-crc32c==1.6.0 \
- --hash=sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24 \
- --hash=sha256:18e311c64008f1f1379158158bb3f0c8d72635b9eb4f9545f8cf990c5668e59d \
- --hash=sha256:236c87a46cdf06384f614e9092b82c05f81bd34b80248021f729396a78e55d7e \
- --hash=sha256:35834855408429cecf495cac67ccbab802de269e948e27478b1e47dfb6465e57 \
- --hash=sha256:386122eeaaa76951a8196310432c5b0ef3b53590ef4c317ec7588ec554fec5d2 \
- --hash=sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8 \
- --hash=sha256:48abd62ca76a2cbe034542ed1b6aee851b6f28aaca4e6551b5599b6f3ef175cc \
- --hash=sha256:50cf2a96da226dcbff8671233ecf37bf6e95de98b2a2ebadbfdf455e6d05df42 \
- --hash=sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f \
- --hash=sha256:5bcc90b34df28a4b38653c36bb5ada35671ad105c99cfe915fb5bed7ad6924aa \
- --hash=sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b \
- --hash=sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc \
- --hash=sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760 \
- --hash=sha256:91ca8145b060679ec9176e6de4f89b07363d6805bd4760631ef254905503598d \
- --hash=sha256:a184243544811e4a50d345838a883733461e67578959ac59964e43cca2c791e7 \
- --hash=sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d \
- --hash=sha256:bb0966e1c50d0ef5bc743312cc730b533491d60585a9a08f897274e57c3f70e0 \
- --hash=sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3 \
- --hash=sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3 \
- --hash=sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00 \
- --hash=sha256:d2952396dc604544ea7476b33fe87faedc24d666fb0c2d5ac971a2b9576ab871 \
- --hash=sha256:d8797406499f28b5ef791f339594b0b5fdedf54e203b5066675c406ba69d705c \
- --hash=sha256:d9e9913f7bd69e093b81da4535ce27af842e7bf371cde42d1ae9e9bd382dc0e9 \
- --hash=sha256:e2806553238cd076f0a55bddab37a532b53580e699ed8e5606d0de1f856b5205 \
- --hash=sha256:ebab974b1687509e5c973b5c4b8b146683e101e102e17a86bd196ecaa4d099fc \
- --hash=sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d \
- --hash=sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4
- # via
- # google-cloud-storage
- # google-resumable-media
-google-resumable-media==2.7.2 \
- --hash=sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa \
- --hash=sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0
- # via google-cloud-storage
-googleapis-common-protos==1.66.0 \
- --hash=sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c \
- --hash=sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed
- # via google-api-core
-idna==3.10 \
- --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
- --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
- # via requests
-nox==2024.10.9 \
- --hash=sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab \
- --hash=sha256:7aa9dc8d1c27e9f45ab046ffd1c3b2c4f7c91755304769df231308849ebded95
- # via -r requirements.in
-packaging==24.2 \
- --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \
- --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f
- # via nox
-platformdirs==4.3.6 \
- --hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
- --hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
- # via virtualenv
-proto-plus==1.25.0 \
- --hash=sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961 \
- --hash=sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91
- # via google-api-core
-protobuf==5.29.3 \
- --hash=sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f \
- --hash=sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7 \
- --hash=sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888 \
- --hash=sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620 \
- --hash=sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da \
- --hash=sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252 \
- --hash=sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a \
- --hash=sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e \
- --hash=sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107 \
- --hash=sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f \
- --hash=sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84
- # via
- # gcp-docuploader
- # google-api-core
- # googleapis-common-protos
- # proto-plus
-pyasn1==0.6.1 \
- --hash=sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 \
- --hash=sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034
- # via
- # pyasn1-modules
- # rsa
-pyasn1-modules==0.4.1 \
- --hash=sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd \
- --hash=sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c
- # via google-auth
-requests==2.32.3 \
- --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
- --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
- # via
- # google-api-core
- # google-cloud-storage
-rsa==4.9 \
- --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
- --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21
- # via google-auth
-six==1.17.0 \
- --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
- --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
- # via gcp-docuploader
-tomli==2.2.1 \
- --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \
- --hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \
- --hash=sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c \
- --hash=sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b \
- --hash=sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8 \
- --hash=sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6 \
- --hash=sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77 \
- --hash=sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff \
- --hash=sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea \
- --hash=sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192 \
- --hash=sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249 \
- --hash=sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee \
- --hash=sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4 \
- --hash=sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98 \
- --hash=sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8 \
- --hash=sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4 \
- --hash=sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281 \
- --hash=sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744 \
- --hash=sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69 \
- --hash=sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13 \
- --hash=sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140 \
- --hash=sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e \
- --hash=sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e \
- --hash=sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc \
- --hash=sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff \
- --hash=sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec \
- --hash=sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2 \
- --hash=sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222 \
- --hash=sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106 \
- --hash=sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272 \
- --hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \
- --hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7
- # via nox
-urllib3==2.3.0 \
- --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
- --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d
- # via requests
-virtualenv==20.28.1 \
- --hash=sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb \
- --hash=sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329
- # via nox
diff --git a/.kokoro/docs/common.cfg b/.kokoro/docs/common.cfg
deleted file mode 100644
index 8ad54ef..0000000
--- a/.kokoro/docs/common.cfg
+++ /dev/null
@@ -1,66 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-lib-docs"
-}
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/publish-docs.sh"
-}
-
-env_vars: {
- key: "STAGING_BUCKET"
- value: "docs-staging"
-}
-
-env_vars: {
- key: "V2_STAGING_BUCKET"
- # Push google cloud library docs to the Cloud RAD bucket `docs-staging-v2`
- value: "docs-staging-v2"
-}
-
-# It will upload the docker image after successful builds.
-env_vars: {
- key: "TRAMPOLINE_IMAGE_UPLOAD"
- value: "true"
-}
-
-# It will always build the docker image.
-env_vars: {
- key: "TRAMPOLINE_DOCKERFILE"
- value: ".kokoro/docker/docs/Dockerfile"
-}
-
-# Fetch the token needed for reporting release status to GitHub
-before_action {
- fetch_keystore {
- keystore_resource {
- keystore_config_id: 73713
- keyname: "yoshi-automation-github-key"
- }
- }
-}
-
-before_action {
- fetch_keystore {
- keystore_resource {
- keystore_config_id: 73713
- keyname: "docuploader_service_account"
- }
- }
-}
diff --git a/.kokoro/docs/docs-presubmit.cfg b/.kokoro/docs/docs-presubmit.cfg
deleted file mode 100644
index d07716c..0000000
--- a/.kokoro/docs/docs-presubmit.cfg
+++ /dev/null
@@ -1,28 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "STAGING_BUCKET"
- value: "gcloud-python-test"
-}
-
-env_vars: {
- key: "V2_STAGING_BUCKET"
- value: "gcloud-python-test"
-}
-
-# We only upload the image in the main `docs` build.
-env_vars: {
- key: "TRAMPOLINE_IMAGE_UPLOAD"
- value: "false"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/build.sh"
-}
-
-# Only run this nox session.
-env_vars: {
- key: "NOX_SESSION"
- value: "docs docfx"
-}
diff --git a/.kokoro/docs/docs.cfg b/.kokoro/docs/docs.cfg
deleted file mode 100644
index 8f43917..0000000
--- a/.kokoro/docs/docs.cfg
+++ /dev/null
@@ -1 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
\ No newline at end of file
diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh
deleted file mode 100755
index 4ed4aaf..0000000
--- a/.kokoro/publish-docs.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eo pipefail
-
-# Disable buffering, so that the logs stream through.
-export PYTHONUNBUFFERED=1
-
-export PATH="${HOME}/.local/bin:${PATH}"
-
-# build docs
-nox -s docs
-
-# create metadata
-python3.10 -m docuploader create-metadata \
- --name=$(jq --raw-output '.name // empty' .repo-metadata.json) \
- --version=$(python3.10 setup.py --version) \
- --language=$(jq --raw-output '.language // empty' .repo-metadata.json) \
- --distribution-name=$(python3.10 setup.py --name) \
- --product-page=$(jq --raw-output '.product_documentation // empty' .repo-metadata.json) \
- --github-repository=$(jq --raw-output '.repo // empty' .repo-metadata.json) \
- --issue-tracker=$(jq --raw-output '.issue_tracker // empty' .repo-metadata.json)
-
-cat docs.metadata
-
-# upload docs
-python3.10 -m docuploader upload docs/_build/html --metadata-file docs.metadata --staging-bucket "${STAGING_BUCKET}"
-
-
-# docfx yaml files
-nox -s docfx
-
-# create metadata.
-python3.10 -m docuploader create-metadata \
- --name=$(jq --raw-output '.name // empty' .repo-metadata.json) \
- --version=$(python3.10 setup.py --version) \
- --language=$(jq --raw-output '.language // empty' .repo-metadata.json) \
- --distribution-name=$(python3.10 setup.py --name) \
- --product-page=$(jq --raw-output '.product_documentation // empty' .repo-metadata.json) \
- --github-repository=$(jq --raw-output '.repo // empty' .repo-metadata.json) \
- --issue-tracker=$(jq --raw-output '.issue_tracker // empty' .repo-metadata.json)
-
-cat docs.metadata
-
-# upload docs
-python3.10 -m docuploader upload docs/_build/html/docfx_yaml --metadata-file docs.metadata --destination-prefix docfx --staging-bucket "${V2_STAGING_BUCKET}"
diff --git a/.kokoro/release.sh b/.kokoro/release.sh
deleted file mode 100755
index b860a5a..0000000
--- a/.kokoro/release.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eo pipefail
-
-# Start the releasetool reporter
-python3 -m pip install --require-hashes -r github/python-cloud-core/.kokoro/requirements.txt
-python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script
-
-# Disable buffering, so that the logs stream through.
-export PYTHONUNBUFFERED=1
-
-# Move into the package, build the distribution and upload.
-TWINE_PASSWORD=$(cat "${KOKORO_KEYSTORE_DIR}/73713_google-cloud-pypi-token-keystore-2")
-cd github/python-cloud-core
-python3 setup.py sdist bdist_wheel
-twine upload --username __token__ --password "${TWINE_PASSWORD}" dist/*
diff --git a/.kokoro/release/common.cfg b/.kokoro/release/common.cfg
deleted file mode 100644
index 884a5a6..0000000
--- a/.kokoro/release/common.cfg
+++ /dev/null
@@ -1,49 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-multi"
-}
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/release.sh"
-}
-
-# Fetch PyPI password
-before_action {
- fetch_keystore {
- keystore_resource {
- keystore_config_id: 73713
- keyname: "google-cloud-pypi-token-keystore-2"
- }
- }
-}
-
-# Tokens needed to report release status back to GitHub
-env_vars: {
- key: "SECRET_MANAGER_KEYS"
- value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem"
-}
-
-# Store the packages we uploaded to PyPI. That way, we have a record of exactly
-# what we published, which we can use to generate SBOMs and attestations.
-action {
- define_artifacts {
- regex: "github/python-cloud-core/**/*.tar.gz"
- strip_prefix: "github/python-cloud-core"
- }
-}
diff --git a/.kokoro/release/release.cfg b/.kokoro/release/release.cfg
deleted file mode 100644
index 8f43917..0000000
--- a/.kokoro/release/release.cfg
+++ /dev/null
@@ -1 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
\ No newline at end of file
diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in
deleted file mode 100644
index fff4d9c..0000000
--- a/.kokoro/requirements.in
+++ /dev/null
@@ -1,11 +0,0 @@
-gcp-docuploader
-gcp-releasetool>=2 # required for compatibility with cryptography>=42.x
-importlib-metadata
-typing-extensions
-twine
-wheel
-setuptools
-nox>=2022.11.21 # required to remove dependency on py
-charset-normalizer<3
-click<8.1.0
-cryptography>=42.0.5
diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt
deleted file mode 100644
index 7a0594f..0000000
--- a/.kokoro/requirements.txt
+++ /dev/null
@@ -1,537 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.9
-# by the following command:
-#
-# pip-compile --allow-unsafe --generate-hashes requirements.in
-#
-argcomplete==3.4.0 \
- --hash=sha256:69a79e083a716173e5532e0fa3bef45f793f4e61096cf52b5a42c0211c8b8aa5 \
- --hash=sha256:c2abcdfe1be8ace47ba777d4fce319eb13bf8ad9dace8d085dcad6eded88057f
- # via nox
-attrs==23.2.0 \
- --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \
- --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1
- # via gcp-releasetool
-backports-tarfile==1.2.0 \
- --hash=sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34 \
- --hash=sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991
- # via jaraco-context
-cachetools==5.3.3 \
- --hash=sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945 \
- --hash=sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105
- # via google-auth
-certifi==2024.7.4 \
- --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \
- --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90
- # via requests
-cffi==1.16.0 \
- --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \
- --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \
- --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \
- --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \
- --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \
- --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \
- --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \
- --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \
- --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \
- --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \
- --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \
- --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \
- --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \
- --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \
- --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \
- --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \
- --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \
- --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \
- --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \
- --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \
- --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \
- --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \
- --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \
- --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \
- --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \
- --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \
- --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \
- --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \
- --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \
- --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \
- --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \
- --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \
- --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \
- --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \
- --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \
- --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \
- --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \
- --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \
- --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \
- --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \
- --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \
- --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \
- --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \
- --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \
- --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \
- --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \
- --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \
- --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \
- --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \
- --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \
- --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \
- --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357
- # via cryptography
-charset-normalizer==2.1.1 \
- --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
- --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f
- # via
- # -r requirements.in
- # requests
-click==8.0.4 \
- --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \
- --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb
- # via
- # -r requirements.in
- # gcp-docuploader
- # gcp-releasetool
-colorlog==6.8.2 \
- --hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
- --hash=sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33
- # via
- # gcp-docuploader
- # nox
-cryptography==42.0.8 \
- --hash=sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad \
- --hash=sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583 \
- --hash=sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b \
- --hash=sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c \
- --hash=sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1 \
- --hash=sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648 \
- --hash=sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949 \
- --hash=sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba \
- --hash=sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c \
- --hash=sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9 \
- --hash=sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d \
- --hash=sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c \
- --hash=sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e \
- --hash=sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2 \
- --hash=sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d \
- --hash=sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7 \
- --hash=sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70 \
- --hash=sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2 \
- --hash=sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7 \
- --hash=sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14 \
- --hash=sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe \
- --hash=sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e \
- --hash=sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71 \
- --hash=sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961 \
- --hash=sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7 \
- --hash=sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c \
- --hash=sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28 \
- --hash=sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842 \
- --hash=sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902 \
- --hash=sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801 \
- --hash=sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a \
- --hash=sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e
- # via
- # -r requirements.in
- # gcp-releasetool
- # secretstorage
-distlib==0.3.8 \
- --hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
- --hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
- # via virtualenv
-docutils==0.21.2 \
- --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \
- --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
- # via readme-renderer
-filelock==3.15.4 \
- --hash=sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb \
- --hash=sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7
- # via virtualenv
-gcp-docuploader==0.6.5 \
- --hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \
- --hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea
- # via -r requirements.in
-gcp-releasetool==2.0.1 \
- --hash=sha256:34314a910c08e8911d9c965bd44f8f2185c4f556e737d719c33a41f6a610de96 \
- --hash=sha256:b0d5863c6a070702b10883d37c4bdfd74bf930fe417f36c0c965d3b7c779ae62
- # via -r requirements.in
-google-api-core==2.19.1 \
- --hash=sha256:f12a9b8309b5e21d92483bbd47ce2c445861ec7d269ef6784ecc0ea8c1fa6125 \
- --hash=sha256:f4695f1e3650b316a795108a76a1c416e6afb036199d1c1f1f110916df479ffd
- # via
- # google-cloud-core
- # google-cloud-storage
-google-auth==2.31.0 \
- --hash=sha256:042c4702efa9f7d3c48d3a69341c209381b125faa6dbf3ebe56bc7e40ae05c23 \
- --hash=sha256:87805c36970047247c8afe614d4e3af8eceafc1ebba0c679fe75ddd1d575e871
- # via
- # gcp-releasetool
- # google-api-core
- # google-cloud-core
- # google-cloud-storage
-google-cloud-core==2.4.1 \
- --hash=sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073 \
- --hash=sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61
- # via google-cloud-storage
-google-cloud-storage==2.17.0 \
- --hash=sha256:49378abff54ef656b52dca5ef0f2eba9aa83dc2b2c72c78714b03a1a95fe9388 \
- --hash=sha256:5b393bc766b7a3bc6f5407b9e665b2450d36282614b7945e570b3480a456d1e1
- # via gcp-docuploader
-google-crc32c==1.5.0 \
- --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \
- --hash=sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876 \
- --hash=sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c \
- --hash=sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289 \
- --hash=sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 \
- --hash=sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02 \
- --hash=sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f \
- --hash=sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2 \
- --hash=sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a \
- --hash=sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb \
- --hash=sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210 \
- --hash=sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5 \
- --hash=sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee \
- --hash=sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c \
- --hash=sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a \
- --hash=sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314 \
- --hash=sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd \
- --hash=sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65 \
- --hash=sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37 \
- --hash=sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4 \
- --hash=sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13 \
- --hash=sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894 \
- --hash=sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31 \
- --hash=sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e \
- --hash=sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709 \
- --hash=sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740 \
- --hash=sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc \
- --hash=sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d \
- --hash=sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c \
- --hash=sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c \
- --hash=sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d \
- --hash=sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906 \
- --hash=sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61 \
- --hash=sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 \
- --hash=sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c \
- --hash=sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a \
- --hash=sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438 \
- --hash=sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946 \
- --hash=sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7 \
- --hash=sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96 \
- --hash=sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091 \
- --hash=sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae \
- --hash=sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d \
- --hash=sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88 \
- --hash=sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2 \
- --hash=sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd \
- --hash=sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541 \
- --hash=sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728 \
- --hash=sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178 \
- --hash=sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 \
- --hash=sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346 \
- --hash=sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8 \
- --hash=sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93 \
- --hash=sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7 \
- --hash=sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 \
- --hash=sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462 \
- --hash=sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94 \
- --hash=sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd \
- --hash=sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e \
- --hash=sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57 \
- --hash=sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b \
- --hash=sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9 \
- --hash=sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a \
- --hash=sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100 \
- --hash=sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325 \
- --hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \
- --hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \
- --hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4
- # via
- # google-cloud-storage
- # google-resumable-media
-google-resumable-media==2.7.1 \
- --hash=sha256:103ebc4ba331ab1bfdac0250f8033627a2cd7cde09e7ccff9181e31ba4315b2c \
- --hash=sha256:eae451a7b2e2cdbaaa0fd2eb00cc8a1ee5e95e16b55597359cbc3d27d7d90e33
- # via google-cloud-storage
-googleapis-common-protos==1.63.2 \
- --hash=sha256:27a2499c7e8aff199665b22741997e485eccc8645aa9176c7c988e6fae507945 \
- --hash=sha256:27c5abdffc4911f28101e635de1533fb4cfd2c37fbaa9174587c799fac90aa87
- # via google-api-core
-idna==3.7 \
- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
- # via requests
-importlib-metadata==8.0.0 \
- --hash=sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f \
- --hash=sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812
- # via
- # -r requirements.in
- # keyring
- # twine
-jaraco-classes==3.4.0 \
- --hash=sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd \
- --hash=sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790
- # via keyring
-jaraco-context==5.3.0 \
- --hash=sha256:3e16388f7da43d384a1a7cd3452e72e14732ac9fe459678773a3608a812bf266 \
- --hash=sha256:c2f67165ce1f9be20f32f650f25d8edfc1646a8aeee48ae06fb35f90763576d2
- # via keyring
-jaraco-functools==4.0.1 \
- --hash=sha256:3b24ccb921d6b593bdceb56ce14799204f473976e2a9d4b15b04d0f2c2326664 \
- --hash=sha256:d33fa765374c0611b52f8b3a795f8900869aa88c84769d4d1746cd68fb28c3e8
- # via keyring
-jeepney==0.8.0 \
- --hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
- --hash=sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755
- # via
- # keyring
- # secretstorage
-jinja2==3.1.5 \
- --hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
- --hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
- # via gcp-releasetool
-keyring==25.2.1 \
- --hash=sha256:2458681cdefc0dbc0b7eb6cf75d0b98e59f9ad9b2d4edd319d18f68bdca95e50 \
- --hash=sha256:daaffd42dbda25ddafb1ad5fec4024e5bbcfe424597ca1ca452b299861e49f1b
- # via
- # gcp-releasetool
- # twine
-markdown-it-py==3.0.0 \
- --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
- --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
- # via rich
-markupsafe==2.1.5 \
- --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \
- --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \
- --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \
- --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \
- --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \
- --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \
- --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \
- --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \
- --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \
- --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \
- --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \
- --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \
- --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \
- --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \
- --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \
- --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \
- --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \
- --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \
- --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \
- --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \
- --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \
- --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \
- --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \
- --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \
- --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \
- --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \
- --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \
- --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \
- --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \
- --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \
- --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \
- --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \
- --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \
- --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \
- --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \
- --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \
- --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \
- --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \
- --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \
- --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \
- --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \
- --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \
- --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \
- --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \
- --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \
- --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \
- --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \
- --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \
- --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \
- --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \
- --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \
- --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \
- --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \
- --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \
- --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \
- --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \
- --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \
- --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \
- --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \
- --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68
- # via jinja2
-mdurl==0.1.2 \
- --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
- --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
- # via markdown-it-py
-more-itertools==10.3.0 \
- --hash=sha256:e5d93ef411224fbcef366a6e8ddc4c5781bc6359d43412a65dd5964e46111463 \
- --hash=sha256:ea6a02e24a9161e51faad17a8782b92a0df82c12c1c8886fec7f0c3fa1a1b320
- # via
- # jaraco-classes
- # jaraco-functools
-nh3==0.2.18 \
- --hash=sha256:0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164 \
- --hash=sha256:14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86 \
- --hash=sha256:19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b \
- --hash=sha256:34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad \
- --hash=sha256:36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204 \
- --hash=sha256:3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a \
- --hash=sha256:42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200 \
- --hash=sha256:5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189 \
- --hash=sha256:6955369e4d9f48f41e3f238a9e60f9410645db7e07435e62c6a9ea6135a4907f \
- --hash=sha256:7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811 \
- --hash=sha256:8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844 \
- --hash=sha256:94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4 \
- --hash=sha256:a7f1b5b2c15866f2db413a3649a8fe4fd7b428ae58be2c0f6bca5eefd53ca2be \
- --hash=sha256:c8b3a1cebcba9b3669ed1a84cc65bf005728d2f0bc1ed2a6594a992e817f3a50 \
- --hash=sha256:de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307 \
- --hash=sha256:f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe
- # via readme-renderer
-nox==2024.4.15 \
- --hash=sha256:6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 \
- --hash=sha256:ecf6700199cdfa9e5ea0a41ff5e6ef4641d09508eda6edb89d9987864115817f
- # via -r requirements.in
-packaging==24.1 \
- --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
- --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
- # via
- # gcp-releasetool
- # nox
-pkginfo==1.10.0 \
- --hash=sha256:5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297 \
- --hash=sha256:889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097
- # via twine
-platformdirs==4.2.2 \
- --hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
- --hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
- # via virtualenv
-proto-plus==1.24.0 \
- --hash=sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445 \
- --hash=sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12
- # via google-api-core
-protobuf==5.27.2 \
- --hash=sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505 \
- --hash=sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b \
- --hash=sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38 \
- --hash=sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863 \
- --hash=sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470 \
- --hash=sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6 \
- --hash=sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce \
- --hash=sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca \
- --hash=sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5 \
- --hash=sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e \
- --hash=sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714
- # via
- # gcp-docuploader
- # gcp-releasetool
- # google-api-core
- # googleapis-common-protos
- # proto-plus
-pyasn1==0.6.0 \
- --hash=sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c \
- --hash=sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473
- # via
- # pyasn1-modules
- # rsa
-pyasn1-modules==0.4.0 \
- --hash=sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6 \
- --hash=sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b
- # via google-auth
-pycparser==2.22 \
- --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \
- --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc
- # via cffi
-pygments==2.18.0 \
- --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
- --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
- # via
- # readme-renderer
- # rich
-pyjwt==2.8.0 \
- --hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de \
- --hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320
- # via gcp-releasetool
-pyperclip==1.9.0 \
- --hash=sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310
- # via gcp-releasetool
-python-dateutil==2.9.0.post0 \
- --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
- --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
- # via gcp-releasetool
-readme-renderer==44.0 \
- --hash=sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151 \
- --hash=sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1
- # via twine
-requests==2.32.3 \
- --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
- --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
- # via
- # gcp-releasetool
- # google-api-core
- # google-cloud-storage
- # requests-toolbelt
- # twine
-requests-toolbelt==1.0.0 \
- --hash=sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 \
- --hash=sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06
- # via twine
-rfc3986==2.0.0 \
- --hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \
- --hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c
- # via twine
-rich==13.7.1 \
- --hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \
- --hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432
- # via twine
-rsa==4.9 \
- --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
- --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21
- # via google-auth
-secretstorage==3.3.3 \
- --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \
- --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99
- # via keyring
-six==1.16.0 \
- --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
- --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
- # via
- # gcp-docuploader
- # python-dateutil
-tomli==2.0.1 \
- --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
- --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
- # via nox
-twine==5.1.1 \
- --hash=sha256:215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997 \
- --hash=sha256:9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db
- # via -r requirements.in
-typing-extensions==4.12.2 \
- --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
- --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
- # via -r requirements.in
-urllib3==2.2.2 \
- --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \
- --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168
- # via
- # requests
- # twine
-virtualenv==20.26.6 \
- --hash=sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48 \
- --hash=sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2
- # via nox
-wheel==0.43.0 \
- --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
- --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
- # via -r requirements.in
-zipp==3.19.2 \
- --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \
- --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c
- # via importlib-metadata
-
-# The following packages are considered to be unsafe in a requirements file:
-setuptools==70.2.0 \
- --hash=sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 \
- --hash=sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1
- # via -r requirements.in
From 4e695644185dc96e245e9fb38d8331ff33d6c16d Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 10 Mar 2025 13:56:41 -0700
Subject: [PATCH 149/158] chore(main): release 2.4.3 (#327)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
google/cloud/version.py | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d79f709..f435646 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.4.3](https://github.com/googleapis/python-cloud-core/compare/v2.4.2...v2.4.3) (2025-03-10)
+
+
+### Bug Fixes
+
+* Declare support for Python 3.13 ([#326](https://github.com/googleapis/python-cloud-core/issues/326)) ([da34f8a](https://github.com/googleapis/python-cloud-core/commit/da34f8a73b5aaaaee25e3a85da8f13488bdbe29e))
+
## [2.4.2](https://github.com/googleapis/python-cloud-core/compare/v2.4.1...v2.4.2) (2025-02-20)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index c43aa75..7c4fc85 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.4.2"
+__version__ = "2.4.3"
From ab9785d1bce1d50a03ff41d9b377dc7632772105 Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 10 Mar 2025 17:01:02 -0400
Subject: [PATCH 150/158] fix: resolve issue where pre-release versions of
dependencies are installed (#329)
Co-authored-by: Victor Chudnovsky
---
setup.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/setup.py b/setup.py
index 0264021..d25a880 100644
--- a/setup.py
+++ b/setup.py
@@ -28,14 +28,14 @@
# 'Development Status :: 5 - Production/Stable'
release_status = "Development Status :: 5 - Production/Stable"
dependencies = [
- "google-api-core >= 1.31.6, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
- "google-auth >= 1.25.0, < 3.0dev",
+ "google-api-core >= 1.31.6, <3.0.0,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
+ "google-auth >= 1.25.0, < 3.0.0",
"importlib-metadata > 1.0.0; python_version<'3.8'",
]
extras = {
"grpc": [
- "grpcio >= 1.38.0, < 2.0dev",
- "grpcio-status >= 1.38.0, < 2.0.dev0",
+ "grpcio >= 1.38.0, < 2.0.0",
+ "grpcio-status >= 1.38.0, < 2.0.0",
],
}
From 78ce8a6f7c781cf2585131d7961beec9069a206c Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Wed, 19 Mar 2025 20:52:19 -0400
Subject: [PATCH 151/158] fix: remove setup.cfg configuration for creating
universal wheels (#332)
---
setup.cfg | 2 --
1 file changed, 2 deletions(-)
delete mode 100644 setup.cfg
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 2a9acf1..0000000
--- a/setup.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[bdist_wheel]
-universal = 1
From c26e587a79b1905f4d64e409b853d9e50bbb6c17 Mon Sep 17 00:00:00 2001
From: Chalmer Lowe
Date: Mon, 27 Oct 2025 06:35:16 -0400
Subject: [PATCH 152/158] feat: Add Python 3.14 support (#333)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat(ci): Add Python 3.14 support to owlbot.py
* đŠ Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* feat(ci): Add Python 3.14 support to core files
* Apply suggestion from @chalmerlowe
3.7 is not supported in this repo.
* Apply suggestion from @chalmerlowe
* Apply suggestion from @chalmerlowe
3.7 is not supported in this repo.
* fix(ci): Remove unit (3.7) from required checks
* fix(coverage): Remove obsolete Python < 3.8 import logic
* fix(coverage): Add no cover pragma for api_key import
* fix(ci): Correct lint errors and coverage pragma case
---------
Co-authored-by: Owl Bot
---
.github/sync-repo-settings.yaml | 3 ++-
.github/workflows/unittest.yml | 2 +-
CONTRIBUTING.rst | 10 +++++-----
google/cloud/client/__init__.py | 5 +++--
google/cloud/obsolete/__init__.py | 8 +-------
noxfile.py | 2 +-
owlbot.py | 1 +
setup.py | 4 +++-
testing/constraints-3.14.txt | 0
9 files changed, 17 insertions(+), 18 deletions(-)
create mode 100644 testing/constraints-3.14.txt
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index eeac265..bdd4cb7 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -11,12 +11,13 @@ branchProtectionRules:
# No Kokoro: the following are Github actions
- 'mypy'
- 'lint'
- - 'unit (3.7)'
- 'unit (3.8)'
- 'unit (3.9)'
- 'unit (3.10)'
- 'unit (3.11)'
- 'unit (3.12)'
+ - 'unit (3.13)'
+ - 'unit (3.14)'
- 'cover'
- 'docs'
- 'docfx'
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index c66b757..e381a05 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-22.04
strategy:
matrix:
- python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
+ python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout
uses: actions/checkout@v4
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index f6f9ad5..5f1f417 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -22,7 +22,7 @@ In order to add a feature:
documentation.
- The feature must work fully on the following CPython versions:
- 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13 on both UNIX and Windows.
+ 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows.
- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests.
- To run a single unit test::
- $ nox -s unit-3.13 -- -k
+ $ nox -s unit-3.14 -- -k
.. note::
@@ -221,21 +221,21 @@ Supported Python Versions
We support:
-- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
- `Python 3.10`_
- `Python 3.11`_
- `Python 3.12`_
- `Python 3.13`_
+- `Python 3.14`_
-.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
.. _Python 3.10: https://docs.python.org/3.10/
.. _Python 3.11: https://docs.python.org/3.11/
.. _Python 3.12: https://docs.python.org/3.12/
.. _Python 3.13: https://docs.python.org/3.13/
+.. _Python 3.14: https://docs.python.org/3.14/
Supported versions can be found in our ``noxfile.py`` `config`_.
@@ -243,7 +243,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_.
.. _config: https://github.com/googleapis/python-cloud-core/blob/main/noxfile.py
-We also explicitly decided to support Python 3 beginning with version 3.7.
+We also explicitly decided to support Python 3 beginning with version 3.8.
Reasons for this include:
- Encouraging use of newest versions of Python 3
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
index 1396486..27d1a4c 100644
--- a/google/cloud/client/__init__.py
+++ b/google/cloud/client/__init__.py
@@ -34,8 +34,9 @@
import google.auth.api_key
HAS_GOOGLE_AUTH_API_KEY = True
-except ImportError:
- HAS_GOOGLE_AUTH_API_KEY = False
+except ImportError: # pragma: NO COVER
+ HAS_GOOGLE_AUTH_API_KEY = False # pragma: NO COVER
+ # TODO: Investigate adding a test for google.auth.api_key ImportError (https://github.com/googleapis/python-cloud-core/issues/334)
_GOOGLE_AUTH_CREDENTIALS_HELP = (
diff --git a/google/cloud/obsolete/__init__.py b/google/cloud/obsolete/__init__.py
index 854110e..552f755 100644
--- a/google/cloud/obsolete/__init__.py
+++ b/google/cloud/obsolete/__init__.py
@@ -14,16 +14,10 @@
"""Helpers for deprecated code and modules."""
-import sys
+import importlib.metadata as metadata
import warnings
-if sys.version_info < (3, 8):
- import importlib_metadata as metadata
-else:
- import importlib.metadata as metadata
-
-
def complain(distribution_name):
"""Issue a warning if `distribution_name` is installed.
diff --git a/noxfile.py b/noxfile.py
index 70ba2b2..e1a1c95 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -96,7 +96,7 @@ def default(session):
)
-@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"])
+@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"])
def unit(session):
"""Default unit test session."""
default(session)
diff --git a/owlbot.py b/owlbot.py
index af02b0a..767da60 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -26,6 +26,7 @@
templated_files = common.py_library(
microgenerator=True,
cov_level=100,
+ unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"],
)
s.move(
templated_files,
diff --git a/setup.py b/setup.py
index d25a880..8e7dd9d 100644
--- a/setup.py
+++ b/setup.py
@@ -34,7 +34,8 @@
]
extras = {
"grpc": [
- "grpcio >= 1.38.0, < 2.0.0",
+ "grpcio >= 1.38.0, < 2.0.0; python_version < '3.14'",
+ "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'",
"grpcio-status >= 1.38.0, < 2.0.0",
],
}
@@ -82,6 +83,7 @@
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Operating System :: OS Independent",
"Topic :: Internet",
],
diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt
new file mode 100644
index 0000000..e69de29
From 312620edab18920718f335e6a4330ed600fb4402 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 29 Oct 2025 16:10:50 -0700
Subject: [PATCH 153/158] chore(main): release 2.5.0 (#330)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 13 +++++++++++++
google/cloud/version.py | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f435646..7cdf4ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,19 @@
[1]: https://pypi.org/project/google-cloud-core/#history
+## [2.5.0](https://github.com/googleapis/python-cloud-core/compare/v2.4.3...v2.5.0) (2025-10-27)
+
+
+### Features
+
+* Add Python 3.14 support ([#333](https://github.com/googleapis/python-cloud-core/issues/333)) ([c26e587](https://github.com/googleapis/python-cloud-core/commit/c26e587a79b1905f4d64e409b853d9e50bbb6c17))
+
+
+### Bug Fixes
+
+* Remove setup.cfg configuration for creating universal wheels ([#332](https://github.com/googleapis/python-cloud-core/issues/332)) ([78ce8a6](https://github.com/googleapis/python-cloud-core/commit/78ce8a6f7c781cf2585131d7961beec9069a206c))
+* Resolve issue where pre-release versions of dependencies are installed ([#329](https://github.com/googleapis/python-cloud-core/issues/329)) ([ab9785d](https://github.com/googleapis/python-cloud-core/commit/ab9785d1bce1d50a03ff41d9b377dc7632772105))
+
## [2.4.3](https://github.com/googleapis/python-cloud-core/compare/v2.4.2...v2.4.3) (2025-03-10)
diff --git a/google/cloud/version.py b/google/cloud/version.py
index 7c4fc85..5836d80 100644
--- a/google/cloud/version.py
+++ b/google/cloud/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.4.3"
+__version__ = "2.5.0"
From dc9aa13ed59384914a58f586eafafeb4afac49fa Mon Sep 17 00:00:00 2001
From: ohmayr
Date: Thu, 13 Nov 2025 13:10:42 -0800
Subject: [PATCH 154/158] chore(librarian): onboard to librarian (#336)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR onboards `google-cloud-core` to librarian.
Blocked on https://github.com/googleapis/python-cloud-core/pull/330
Fixes https://github.com/googleapis/librarian/issues/2453 đŠ
---------
Co-authored-by: Anthonios Partheniou
---
.github/.OwlBot.lock.yaml | 17 ------------
.github/.OwlBot.yaml | 19 --------------
.github/auto-approve.yml | 3 ---
.github/release-please.yml | 11 --------
.github/release-trigger.yml | 2 --
.github/sync-repo-settings.yaml | 23 -----------------
.librarian/state.yaml | 10 +++++++
owlbot.py | 46 ---------------------------------
pytest.ini | 7 +++++
9 files changed, 17 insertions(+), 121 deletions(-)
delete mode 100644 .github/.OwlBot.lock.yaml
delete mode 100644 .github/.OwlBot.yaml
delete mode 100644 .github/auto-approve.yml
delete mode 100644 .github/release-please.yml
delete mode 100644 .github/release-trigger.yml
delete mode 100644 .github/sync-repo-settings.yaml
create mode 100644 .librarian/state.yaml
delete mode 100644 owlbot.py
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
deleted file mode 100644
index c631e1f..0000000
--- a/.github/.OwlBot.lock.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2025 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-docker:
- image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:5581906b957284864632cde4e9c51d1cc66b0094990b27e689132fe5cd036046
-# created: 2025-03-05
diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml
deleted file mode 100644
index ecb6626..0000000
--- a/.github/.OwlBot.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-docker:
- image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
-
-begin-after-commit-hash: 513beb9718c83468c65ed4b1b0f23bb435a7260a
-
diff --git a/.github/auto-approve.yml b/.github/auto-approve.yml
deleted file mode 100644
index 311ebbb..0000000
--- a/.github/auto-approve.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://github.com/googleapis/repo-automation-bots/tree/main/packages/auto-approve
-processes:
- - "OwlBotTemplateChanges"
diff --git a/.github/release-please.yml b/.github/release-please.yml
deleted file mode 100644
index 29601ad..0000000
--- a/.github/release-please.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-releaseType: python
-handleGHRelease: true
-# NOTE: this section is generated by synthtool.languages.python
-# See https://github.com/googleapis/synthtool/blob/master/synthtool/languages/python.py
-branches:
-- branch: v1
- handleGHRelease: true
- releaseType: python
-- branch: v0
- handleGHRelease: true
- releaseType: python
diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml
deleted file mode 100644
index 339fe15..0000000
--- a/.github/release-trigger.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-enabled: true
-multiScmName: python-cloud-core
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
deleted file mode 100644
index bdd4cb7..0000000
--- a/.github/sync-repo-settings.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings
-# Rules for main branch protection
-branchProtectionRules:
-# Identifies the protection rule pattern. Name of the branch to be protected.
-# Defaults to `main`
-- pattern: main
- requiresCodeOwnerReviews: true
- requiresStrictStatusChecks: true
- requiredStatusCheckContexts:
- - 'cla/google'
- # No Kokoro: the following are Github actions
- - 'mypy'
- - 'lint'
- - 'unit (3.8)'
- - 'unit (3.9)'
- - 'unit (3.10)'
- - 'unit (3.11)'
- - 'unit (3.12)'
- - 'unit (3.13)'
- - 'unit (3.14)'
- - 'cover'
- - 'docs'
- - 'docfx'
diff --git a/.librarian/state.yaml b/.librarian/state.yaml
new file mode 100644
index 0000000..51f1315
--- /dev/null
+++ b/.librarian/state.yaml
@@ -0,0 +1,10 @@
+image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:c8612d3fffb3f6a32353b2d1abd16b61e87811866f7ec9d65b59b02eb452a620
+libraries:
+ - id: google-cloud-core
+ version: 2.5.0
+ apis: []
+ source_roots:
+ - .
+ preserve_regex: []
+ remove_regex: []
+ tag_format: v{version}
\ No newline at end of file
diff --git a/owlbot.py b/owlbot.py
deleted file mode 100644
index 767da60..0000000
--- a/owlbot.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""This script is used to synthesize generated parts of this library."""
-
-import synthtool as s
-from synthtool import gcp
-from synthtool.languages import python
-
-common = gcp.CommonTemplates()
-
-# ----------------------------------------------------------------------------
-# Add templated files
-# ----------------------------------------------------------------------------
-templated_files = common.py_library(
- microgenerator=True,
- cov_level=100,
- unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"],
-)
-s.move(
- templated_files,
- excludes=[
- "docs/multiprocessing.rst",
- "noxfile.py",
- ".flake8",
- ".coveragerc",
- "setup.cfg",
- "README.rst",
- ".github/workflows/lint.yml",
- ],
-)
-
-python.configure_previous_major_version_branches()
-
-s.shell.run(["nox", "-s", "blacken"], hide_output=False)
diff --git a/pytest.ini b/pytest.ini
index 90db954..d435a8e 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -9,3 +9,10 @@ filterwarnings =
# Remove once the minimum supported version of `google-api-core` is 2.15.0
ignore:.*pkg_resources.declare_namespace:DeprecationWarning
ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
+ # Remove after support for Python 3.8 is dropped
+ ignore:You are using a non-supported Python version \(3\.8:DeprecationWarning
+ ignore:You are using a non-supported Python version \(3\.8:FutureWarning
+ # Remove after support for Python 3.9 is dropped
+ ignore:You are using a Python version \(3\.9:FutureWarning
+ # Remove after support for Python 3.10 is dropped
+ ignore:.*You are using a Python version \(3\.10:FutureWarning
From 516511daccacaaacee116a02591d837913b6502c Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Mon, 12 Jan 2026 15:25:02 -0500
Subject: [PATCH 155/158] tests: update default python runtime for tests to
3.14 (#340)
Similar to https://github.com/googleapis/python-api-core/pull/870
---
.github/workflows/lint.yml | 2 +-
.github/workflows/mypy.yml | 2 +-
.github/workflows/unittest.yml | 2 +-
noxfile.py | 12 ++++++++----
pytest.ini | 10 +++-------
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 1051da0..3ed755f 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: "3.10"
+ python-version: "3.14"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index 3915cdd..8363e72 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: "3.8"
+ python-version: "3.14"
- name: Install nox
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
index e381a05..d6cda9b 100644
--- a/.github/workflows/unittest.yml
+++ b/.github/workflows/unittest.yml
@@ -45,7 +45,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
- python-version: "3.8"
+ python-version: "3.14"
- name: Install coverage
run: |
python -m pip install --upgrade setuptools pip wheel
diff --git a/noxfile.py b/noxfile.py
index e1a1c95..d7012a0 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -22,14 +22,14 @@
BLACK_VERSION = "black==23.7.0"
BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
-DEFAULT_PYTHON_VERSION = "3.8"
+DEFAULT_PYTHON_VERSION = "3.14"
CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
# Error if a python version is missing
nox.options.error_on_missing_interpreters = True
-@nox.session(python="3.10")
+@nox.session(python=DEFAULT_PYTHON_VERSION)
def lint(session):
"""Run linters.
@@ -102,11 +102,11 @@ def unit(session):
default(session)
-@nox.session(python="3.10")
+@nox.session(python=DEFAULT_PYTHON_VERSION)
def lint_setup_py(session):
"""Verify that setup.py is valid (including RST check)."""
- session.install("docutils", "Pygments")
+ session.install("docutils", "Pygments", "setuptools")
session.run("python", "setup.py", "check", "--restructuredtext", "--strict")
@@ -122,6 +122,8 @@ def cover(session):
session.run("coverage", "erase")
+# Keep docs session at Python 3.10 until
+# https://github.com/googleapis/sphinx-docfx-yaml/issues/345 is fixed
@nox.session(python="3.10")
def docs(session):
"""Build the docs for this library."""
@@ -158,6 +160,8 @@ def docs(session):
)
+# Keep docfx session at Python 3.10 until
+# https://github.com/googleapis/sphinx-docfx-yaml/issues/345 is fixed
@nox.session(python="3.10")
def docfx(session):
"""Build the docfx yaml files for this library."""
diff --git a/pytest.ini b/pytest.ini
index d435a8e..dd32e71 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -9,10 +9,6 @@ filterwarnings =
# Remove once the minimum supported version of `google-api-core` is 2.15.0
ignore:.*pkg_resources.declare_namespace:DeprecationWarning
ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
- # Remove after support for Python 3.8 is dropped
- ignore:You are using a non-supported Python version \(3\.8:DeprecationWarning
- ignore:You are using a non-supported Python version \(3\.8:FutureWarning
- # Remove after support for Python 3.9 is dropped
- ignore:You are using a Python version \(3\.9:FutureWarning
- # Remove after support for Python 3.10 is dropped
- ignore:.*You are using a Python version \(3\.10:FutureWarning
+ # Remove after support for Python 3.8, 3.9 and/or 3.10+ is dropped
+ ignore:\s*You are using a (non-supported )?Python version \(?3\.(8|9|1[0-9]+):DeprecationWarning
+ ignore:\s*You are using a (non-supported )?Python version \(?3\.(8|9|1[0-9]+):FutureWarning
From ff3726062c09df2fa23bae53afcfe3fa27a18c92 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 12 Jan 2026 20:57:18 +0000
Subject: [PATCH 156/158] chore(deps): update all dependencies (#339)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | major | `v4` â `v6` |
|
[actions/setup-python](https://redirect.github.com/actions/setup-python)
| action | major | `v5` â `v6` |
| [python](https://redirect.github.com/actions/python-versions) |
uses-with | minor | `3.8` â `3.14` |
| [python](https://redirect.github.com/actions/python-versions) |
uses-with | minor | `3.10` â `3.14` |
---
### Release Notes
actions/checkout (actions/checkout)
### [`v6`](https://redirect.github.com/actions/checkout/compare/v5...v6)
[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5...v6)
### [`v5`](https://redirect.github.com/actions/checkout/compare/v4...v5)
[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4...v5)
actions/setup-python (actions/setup-python)
###
[`v6`](https://redirect.github.com/actions/setup-python/compare/v5...v6)
[Compare
Source](https://redirect.github.com/actions/setup-python/compare/v5...v6)
actions/python-versions (python)
###
[`v3.14.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.2-20014991423):
3.14.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.14.1-19879739908...3.14.2-20014991423)
Python 3.14.2
###
[`v3.14.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.1-19879739908):
3.14.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.14.0-18313368925...3.14.1-19879739908)
Python 3.14.1
###
[`v3.14.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.0-18313368925):
3.14.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.11-20014977833...3.14.0-18313368925)
Python 3.14.0
###
[`v3.13.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.11-20014977833):
3.13.11
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.10-19879712315...3.13.11-20014977833)
Python 3.13.11
###
[`v3.13.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.10-19879712315):
3.13.10
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.9-18515951191...3.13.10-19879712315)
Python 3.13.10
###
[`v3.13.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.9-18515951191):
3.13.9
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.8-18331000654...3.13.9-18515951191)
Python 3.13.9
###
[`v3.13.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.8-18331000654):
3.13.8
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.7-16980743123...3.13.8-18331000654)
Python 3.13.8
###
[`v3.13.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.7-16980743123):
3.13.7
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.6-16792117939...3.13.7-16980743123)
Python 3.13.7
###
[`v3.13.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.6-16792117939):
3.13.6
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.5-15601068749...3.13.6-16792117939)
Python 3.13.6
###
[`v3.13.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.5-15601068749):
3.13.5
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.4-15433317575...3.13.5-15601068749)
Python 3.13.5
###
[`v3.13.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.4-15433317575):
3.13.4
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.3-14344076652...3.13.4-15433317575)
Python 3.13.4
###
[`v3.13.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.3-14344076652):
3.13.3
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.2-13708744326...3.13.3-14344076652)
Python 3.13.3
###
[`v3.13.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.2-13708744326):
3.13.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.1-13437882550...3.13.2-13708744326)
Python 3.13.2
###
[`v3.13.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.1-13437882550):
3.13.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.13.0-13707372259...3.13.1-13437882550)
Python 3.13.1
###
[`v3.13.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.0-13707372259):
3.13.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.12-18393146713...3.13.0-13707372259)
Python 3.13.0
###
[`v3.12.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.12-18393146713):
3.12.12
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.11-15433310049...3.12.12-18393146713)
Python 3.12.12
###
[`v3.12.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.11-15433310049):
3.12.11
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.10-14343898437...3.12.11-15433310049)
Python 3.12.11
###
[`v3.12.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.10-14343898437):
3.12.10
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.9-13149478207...3.12.10-14343898437)
Python 3.12.10
###
[`v3.12.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.9-13149478207):
3.12.9
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.8-12154062663...3.12.9-13149478207)
Python 3.12.9
###
[`v3.12.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.8-12154062663):
3.12.8
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.7-11128208086...3.12.8-12154062663)
Python 3.12.8
###
[`v3.12.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.7-11128208086):
3.12.7
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.6-10765725458...3.12.7-11128208086)
Python 3.12.7
###
[`v3.12.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.6-10765725458):
3.12.6
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.5-10375840348...3.12.6-10765725458)
Python 3.12.6
###
[`v3.12.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.5-10375840348):
3.12.5
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.4-9947065640...3.12.5-10375840348)
Python 3.12.5
###
[`v3.12.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.4-9947065640):
3.12.4
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.3-11057844995...3.12.4-9947065640)
Python 3.12.4
###
[`v3.12.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.3-11057844995):
3.12.3
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.2-11057786931...3.12.3-11057844995)
Python 3.12.3
###
[`v3.12.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.2-11057786931):
3.12.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.1-11057762749...3.12.2-11057786931)
Python 3.12.2
###
[`v3.12.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.1-11057762749):
3.12.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.12.0-11057302691...3.12.1-11057762749)
Python 3.12.1
###
[`v3.12.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.12.0-11057302691):
3.12.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.14-18393181605...3.12.0-11057302691)
Python 3.12.0
###
[`v3.11.14`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.14-18393181605):
3.11.14
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.13-15433298024...3.11.14-18393181605)
Python 3.11.14
###
[`v3.11.13`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.13-15433298024):
3.11.13
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.12-14343939122...3.11.13-15433298024)
Python 3.11.13
###
[`v3.11.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.12-14343939122):
3.11.12
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.11-12160100664...3.11.12-14343939122)
Python 3.11.12
###
[`v3.11.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.11-12160100664):
3.11.11
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.10-10765870205...3.11.11-12160100664)
Python 3.11.11
###
[`v3.11.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.10-10765870205):
3.11.10
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.9-9947079978...3.11.10-10765870205)
Python 3.11.10
###
[`v3.11.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.9-9947079978):
3.11.9
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.8-11113201752...3.11.9-9947079978)
Python 3.11.9
###
[`v3.11.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.8-11113201752):
3.11.8
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.7-11113197120...3.11.8-11113201752)
Python 3.11.8
###
[`v3.11.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.7-11113197120):
3.11.7
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.6-11113179737...3.11.7-11113197120)
Python 3.11.7
###
[`v3.11.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.6-11113179737):
3.11.6
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.5-11113174019...3.11.6-11113179737)
Python 3.11.6
###
[`v3.11.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.5-11113174019):
3.11.5
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.4-11113170699...3.11.5-11113174019)
Python 3.11.5
###
[`v3.11.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.4-11113170699):
3.11.4
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.3-11059198104...3.11.4-11113170699)
Python 3.11.4
###
[`v3.11.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.3-11059198104):
3.11.3
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.2-11059137522...3.11.3-11059198104)
Python 3.11.3
###
[`v3.11.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.2-11059137522):
3.11.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.1-11058799881...3.11.2-11059137522)
Python 3.11.2
###
[`v3.11.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.1-11058799881):
3.11.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.11.0-11058707212...3.11.1-11058799881)
Python 3.11.1
###
[`v3.11.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.11.0-11058707212):
3.11.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.19-18393196481...3.11.0-11058707212)
Python 3.11.0
###
[`v3.10.19`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.19-18393196481):
3.10.19
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.18-15433209320...3.10.19-18393196481)
Python 3.10.19
###
[`v3.10.18`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.18-15433209320):
3.10.18
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.17-14343836466...3.10.18-15433209320)
Python 3.10.18
###
[`v3.10.17`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.17-14343836466):
3.10.17
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.16-12302993382...3.10.17-14343836466)
Python 3.10.17
###
[`v3.10.16`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.16-12302993382):
3.10.16
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.15-10765692022...3.10.16-12302993382)
Python 3.10.16
###
[`v3.10.15`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.15-10765692022):
3.10.15
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.14-9962525809...3.10.15-10765692022)
Python 3.10.15
###
[`v3.10.14`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.14-9962525809):
3.10.14
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.13-11113412466...3.10.14-9962525809)
Python 3.10.14
###
[`v3.10.13`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.13-11113412466):
3.10.13
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.12-11114375244...3.10.13-11113412466)
Python 3.10.13
###
[`v3.10.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.12-11114375244):
3.10.12
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.11-11114431484...3.10.12-11114375244)
Python 3.10.12
###
[`v3.10.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.11-11114431484):
3.10.11
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.10-11156136298...3.10.11-11114431484)
Python 3.10.11
###
[`v3.10.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.10-11156136298):
3.10.10
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.9-11156110083...3.10.10-11156136298)
Python 3.10.10
###
[`v3.10.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.9-11156110083):
3.10.9
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.8-11157050441...3.10.9-11156110083)
Python 3.10.9
###
[`v3.10.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.8-11157050441):
3.10.8
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.7-11156088973...3.10.8-11157050441)
Python 3.10.8
###
[`v3.10.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.7-11156088973):
3.10.7
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.6-11156080153...3.10.7-11156088973)
Python 3.10.7
###
[`v3.10.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.6-11156080153):
3.10.6
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.5-11156057491...3.10.6-11156080153)
Python 3.10.6
###
[`v3.10.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.5-11156057491):
3.10.5
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.4-11156037683...3.10.5-11156057491)
Python 3.10.5
###
[`v3.10.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.4-11156037683):
3.10.4
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.3-2000219088...3.10.4-11156037683)
Python 3.10.4
###
[`v3.10.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.3-2000219088):
3.10.3
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.2-1805098134...3.10.3-2000219088)
Python 3.10.3
###
[`v3.10.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.2-1805098134):
3.10.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.1-120613...3.10.2-1805098134)
Python 3.10.2
###
[`v3.10.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.1-120613):
3.10.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.10.0-117927...3.10.1-120613)
Python 3.10.1
###
[`v3.10.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.10.0-117927):
3.10.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.25-19039189640...3.10.0-117927)
Python 3.10.0
###
[`v3.9.25`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.25-19039189640):
3.9.25
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.24-18393164954...3.9.25-19039189640)
Python 3.9.25
###
[`v3.9.24`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.24-18393164954):
3.9.24
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.23-15433290661...3.9.24-18393164954)
Python 3.9.24
###
[`v3.9.23`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.23-15433290661):
3.9.23
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.22-14344111503...3.9.23-15433290661)
Python 3.9.23
###
[`v3.9.22`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.22-14344111503):
3.9.22
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.21-12303000710...3.9.22-14344111503)
Python 3.9.22
###
[`v3.9.21`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.21-12303000710):
3.9.21
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.20-10765735733...3.9.21-12303000710)
Python 3.9.21
###
[`v3.9.20`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.20-10765735733):
3.9.20
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.19-9962534424...3.9.20-10765735733)
Python 3.9.20
###
[`v3.9.19`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.19-9962534424):
3.9.19
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.18-11183952707...3.9.19-9962534424)
Python 3.9.19
###
[`v3.9.18`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.18-11183952707):
3.9.18
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.17-11183917965...3.9.18-11183952707)
Python 3.9.18
###
[`v3.9.17`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.17-11183917965):
3.9.17
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.16-11183815643...3.9.17-11183917965)
Python 3.9.17
###
[`v3.9.16`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.16-11183815643):
3.9.16
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.15-11183782044...3.9.16-11183815643)
Python 3.9.16
###
[`v3.9.15`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.15-11183782044):
3.9.15
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.14-11183735553...3.9.15-11183782044)
Python 3.9.15
###
[`v3.9.14`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.14-11183735553):
3.9.14
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.13-11183687820...3.9.14-11183735553)
Python 3.9.14
###
[`v3.9.13`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.13-11183687820):
3.9.13
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.12-11183622568...3.9.13-11183687820)
Python 3.9.13
###
[`v3.9.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.12-11183622568):
3.9.12
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.11-2018436241...3.9.12-11183622568)
Python 3.9.12
###
[`v3.9.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.11-2018436241):
3.9.11
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.10-1788162477...3.9.11-2018436241)
Python 3.9.11
###
[`v3.9.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.10-1788162477):
3.9.10
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.9-119268...3.9.10-1788162477)
Python 3.9.10
###
[`v3.9.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.9-119268):
3.9.9
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.8-118810...3.9.9-119268)
Python 3.9.9
###
[`v3.9.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.8-118810):
3.9.8
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.7-1812317133...3.9.8-118810)
Python 3.9.8
###
[`v3.9.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.7-1812317133):
3.9.7
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.6-117960...3.9.7-1812317133)
Python 3.9.7
###
[`v3.9.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.6-117960):
3.9.6
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.5-109482...3.9.6-117960)
Python 3.9.6
###
[`v3.9.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.5-109482):
3.9.5
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.4-103698...3.9.5-109482)
Python 3.9.5
###
[`v3.9.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.4-103698):
3.9.4
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.3-103669...3.9.4-103698)
Python 3.9.4
###
[`v3.9.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.3-103669):
3.9.3
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.2-99799...3.9.3-103669)
Python 3.9.3
###
[`v3.9.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.2-99799):
3.9.2
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.1-96692...3.9.2-99799)
Python 3.9.2
###
[`v3.9.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.1-96692):
3.9.1
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.9.0-96741...3.9.1-96692)
Python 3.9.1
###
[`v3.9.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.9.0-96741):
3.9.0
[Compare
Source](https://redirect.github.com/actions/python-versions/compare/3.8.18-12303122501...3.9.0-96741)
Python 3.9.0
---
### Configuration
đ
**Schedule**: Branch creation - At any time (no schedule defined),
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.
---
- [ ] 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/python-cloud-core).
---------
Co-authored-by: Anthonios Partheniou
---
.github/workflows/docs.yml | 8 ++++----
.github/workflows/lint.yml | 4 ++--
.github/workflows/mypy.yml | 4 ++--
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 2833fe9..c5ee988 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install nox
@@ -24,9 +24,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install nox
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 3ed755f..a529334 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.14"
- name: Install nox
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index 8363e72..9a35763 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.14"
- name: Install nox
From 36907bab5d0b9714a4c3c1526bf355495578b97b Mon Sep 17 00:00:00 2001
From: gurusai-voleti
Date: Mon, 9 Feb 2026 22:30:39 +0530
Subject: [PATCH 157/158] chore: Migrate gsutil usage to gcloud storage (#342)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Automated: Migrate {target_path} from gsutil to gcloud storage
This CL is part of the on going effort to migrate from the legacy
`gsutil` tool to the new and improved `gcloud storage` command-line
interface.
`gcloud storage` is the recommended and modern tool for interacting with
Google Cloud Storage, offering better performance, unified
authentication, and a more consistent command structure with other
`gcloud` components. đ
### Automation Details
This change was **generated automatically** by an agent that targets
users of `gsutil`.
The transformations applied are based on the [gsutil to gcloud storage
migration guide](http://go/gsutil-gcloud-storage-migration-guide).
### â ïž Action Required: Please Review and Test Carefully
While we have based the automation on the migration guide, every use
case is unique.
**It is crucial that you thoroughly test these changes in environments
appropriate to your use-case before merging.**
Be aware of potential differences between `gsutil` and `gcloud storage`
that could impact your workflows.
For instance, the structure of command output may have changed,
requiring updates to any scripts that parse it. Similarly, command
behavior can differ subtly; the `gcloud storage rsync` command has a
different file deletion logic than `gsutil rsync`, which could lead to
unintended file deletions.
Our migration guides can help guide you through a list of mappings and
some notable differences between the two tools.
Standard presubmit tests are run as part of this CL's workflow. **If you
need to target an additional test workflow or require assistance with
testing, please let us know.**
Please verify that all your Cloud Storage operations continue to work as
expected to avoid any potential disruptions in production.
### Support and Collaboration
The `GCS CLI` team is here to help! If you encounter any issues, have a
complex use case that this automated change doesn't cover, or face any
other blockers, please don't hesitate to reach out.
We are happy to work with you to test and adjust these changes as
needed.
**Contact:** `gcs-cli-hyd@google.com`
We appreciate your partnership in this important migration effort!
#gsutil-migration
---
.kokoro/trampoline_v2.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.kokoro/trampoline_v2.sh b/.kokoro/trampoline_v2.sh
index 35fa529..d03f92d 100755
--- a/.kokoro/trampoline_v2.sh
+++ b/.kokoro/trampoline_v2.sh
@@ -26,8 +26,8 @@
# To run this script, first download few files from gcs to /dev/shm.
# (/dev/shm is passed into the container as KOKORO_GFILE_DIR).
#
-# gsutil cp gs://cloud-devrel-kokoro-resources/python-docs-samples/secrets_viewer_service_account.json /dev/shm
-# gsutil cp gs://cloud-devrel-kokoro-resources/python-docs-samples/automl_secrets.txt /dev/shm
+# gcloud storage cp gs://cloud-devrel-kokoro-resources/python-docs-samples/secrets_viewer_service_account.json /dev/shm
+# gcloud storage cp gs://cloud-devrel-kokoro-resources/python-docs-samples/automl_secrets.txt /dev/shm
#
# Then run the script.
# .kokoro/trampoline_v2.sh
From 9a6896b4e219f1d76caf8c394ceceef02a91ac6b Mon Sep 17 00:00:00 2001
From: Anthonios Partheniou
Date: Thu, 12 Feb 2026 20:34:03 -0500
Subject: [PATCH 158/158] build: update README to indicate that source has
moved and delete all files (#344)
Towards https://github.com/googleapis/google-cloud-python/issues/11000.
---
.coveragerc | 19 -
.flake8 | 11 -
.github/CODEOWNERS | 12 -
.github/CONTRIBUTING.md | 28 -
.github/ISSUE_TEMPLATE/bug_report.md | 43 -
.github/ISSUE_TEMPLATE/feature_request.md | 18 -
.github/ISSUE_TEMPLATE/support_request.md | 7 -
.github/PULL_REQUEST_TEMPLATE.md | 7 -
.github/auto-label.yaml | 20 -
.github/blunderbuss.yml | 17 -
.github/header-checker-lint.yml | 15 -
.github/snippet-bot.yml | 0
.github/workflows/docs.yml | 38 -
.github/workflows/lint.yml | 25 -
.github/workflows/mypy.yml | 22 -
.github/workflows/unittest.yml | 61 --
.gitignore | 64 --
.kokoro/build.sh | 60 --
.kokoro/continuous/common.cfg | 27 -
.kokoro/continuous/continuous.cfg | 1 -
.kokoro/continuous/prerelease-deps.cfg | 7 -
.kokoro/populate-secrets.sh | 43 -
.kokoro/presubmit/common.cfg | 27 -
.kokoro/presubmit/prerelease-deps.cfg | 7 -
.kokoro/presubmit/presubmit.cfg | 1 -
.kokoro/samples/lint/common.cfg | 34 -
.kokoro/samples/lint/continuous.cfg | 6 -
.kokoro/samples/lint/periodic.cfg | 6 -
.kokoro/samples/lint/presubmit.cfg | 6 -
.kokoro/samples/python3.10/common.cfg | 40 -
.kokoro/samples/python3.10/continuous.cfg | 6 -
.kokoro/samples/python3.10/periodic-head.cfg | 11 -
.kokoro/samples/python3.10/periodic.cfg | 6 -
.kokoro/samples/python3.10/presubmit.cfg | 6 -
.kokoro/samples/python3.11/common.cfg | 40 -
.kokoro/samples/python3.11/continuous.cfg | 6 -
.kokoro/samples/python3.11/periodic-head.cfg | 11 -
.kokoro/samples/python3.11/periodic.cfg | 6 -
.kokoro/samples/python3.11/presubmit.cfg | 6 -
.kokoro/samples/python3.12/common.cfg | 40 -
.kokoro/samples/python3.12/continuous.cfg | 6 -
.kokoro/samples/python3.12/periodic-head.cfg | 11 -
.kokoro/samples/python3.12/periodic.cfg | 6 -
.kokoro/samples/python3.12/presubmit.cfg | 6 -
.kokoro/samples/python3.13/common.cfg | 40 -
.kokoro/samples/python3.13/continuous.cfg | 6 -
.kokoro/samples/python3.13/periodic-head.cfg | 11 -
.kokoro/samples/python3.13/periodic.cfg | 6 -
.kokoro/samples/python3.13/presubmit.cfg | 6 -
.kokoro/samples/python3.7/common.cfg | 40 -
.kokoro/samples/python3.7/continuous.cfg | 6 -
.kokoro/samples/python3.7/periodic-head.cfg | 11 -
.kokoro/samples/python3.7/periodic.cfg | 6 -
.kokoro/samples/python3.7/presubmit.cfg | 6 -
.kokoro/samples/python3.8/common.cfg | 40 -
.kokoro/samples/python3.8/continuous.cfg | 6 -
.kokoro/samples/python3.8/periodic-head.cfg | 11 -
.kokoro/samples/python3.8/periodic.cfg | 6 -
.kokoro/samples/python3.8/presubmit.cfg | 6 -
.kokoro/samples/python3.9/common.cfg | 40 -
.kokoro/samples/python3.9/continuous.cfg | 6 -
.kokoro/samples/python3.9/periodic-head.cfg | 11 -
.kokoro/samples/python3.9/periodic.cfg | 6 -
.kokoro/samples/python3.9/presubmit.cfg | 6 -
.kokoro/test-samples-against-head.sh | 26 -
.kokoro/test-samples-impl.sh | 103 ---
.kokoro/test-samples.sh | 44 -
.kokoro/trampoline.sh | 28 -
.kokoro/trampoline_v2.sh | 487 ----------
.librarian/state.yaml | 10 -
.pre-commit-config.yaml | 31 -
.trampolinerc | 61 --
CHANGELOG.md | 407 ---------
CODE_OF_CONDUCT.md | 95 --
CONTRIBUTING.rst | 285 ------
MANIFEST.in | 25 -
README.rst | 5 +
docs/README.rst | 1 -
docs/_static/custom.css | 20 -
docs/_templates/layout.html | 50 --
docs/changelog.md | 1 -
docs/client/client.rst | 6 -
docs/conf.py | 384 --------
docs/config.rst | 68 --
docs/index.rst | 27 -
docs/summary_overview.md | 22 -
google/cloud/_helpers/__init__.py | 590 ------------
google/cloud/_helpers/py.typed | 2 -
google/cloud/_http/__init__.py | 499 -----------
google/cloud/_http/py.typed | 2 -
google/cloud/_testing/__init__.py | 121 ---
google/cloud/_testing/py.typed | 2 -
google/cloud/client/__init__.py | 342 -------
google/cloud/client/py.typed | 2 -
google/cloud/environment_vars/__init__.py | 38 -
google/cloud/environment_vars/py.typed | 2 -
google/cloud/exceptions/__init__.py | 59 --
google/cloud/exceptions/py.typed | 2 -
google/cloud/obsolete/__init__.py | 41 -
google/cloud/obsolete/py.typed | 2 -
google/cloud/operation/__init__.py | 268 ------
google/cloud/operation/py.typed | 2 -
google/cloud/version.py | 15 -
mypy.ini | 7 -
noxfile.py | 208 -----
pylint.config.py | 25 -
pytest.ini | 14 -
renovate.json | 12 -
scripts/decrypt-secrets.sh | 46 -
scripts/readme-gen/readme_gen.py | 69 --
scripts/readme-gen/templates/README.tmpl.rst | 87 --
scripts/readme-gen/templates/auth.tmpl.rst | 9 -
.../templates/auth_api_key.tmpl.rst | 14 -
.../templates/install_deps.tmpl.rst | 29 -
.../templates/install_portaudio.tmpl.rst | 35 -
setup.py | 97 --
testing/.gitignore | 3 -
testing/constraints-3.10.txt | 0
testing/constraints-3.11.txt | 0
testing/constraints-3.12.txt | 0
testing/constraints-3.13.txt | 0
testing/constraints-3.14.txt | 0
testing/constraints-3.7.txt | 10 -
testing/constraints-3.8.txt | 0
testing/constraints-3.9.txt | 0
tests/__init__.py | 0
tests/unit/__init__.py | 13 -
tests/unit/test__helpers.py | 847 ------------------
tests/unit/test__http.py | 623 -------------
tests/unit/test_client.py | 585 ------------
tests/unit/test_obsolete.py | 30 -
tests/unit/test_operation.py | 409 ---------
tests/unit/test_packaging.py | 37 -
133 files changed, 5 insertions(+), 8494 deletions(-)
delete mode 100644 .coveragerc
delete mode 100644 .flake8
delete mode 100644 .github/CODEOWNERS
delete mode 100644 .github/CONTRIBUTING.md
delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md
delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md
delete mode 100644 .github/ISSUE_TEMPLATE/support_request.md
delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md
delete mode 100644 .github/auto-label.yaml
delete mode 100644 .github/blunderbuss.yml
delete mode 100644 .github/header-checker-lint.yml
delete mode 100644 .github/snippet-bot.yml
delete mode 100644 .github/workflows/docs.yml
delete mode 100644 .github/workflows/lint.yml
delete mode 100644 .github/workflows/mypy.yml
delete mode 100644 .github/workflows/unittest.yml
delete mode 100644 .gitignore
delete mode 100755 .kokoro/build.sh
delete mode 100644 .kokoro/continuous/common.cfg
delete mode 100644 .kokoro/continuous/continuous.cfg
delete mode 100644 .kokoro/continuous/prerelease-deps.cfg
delete mode 100755 .kokoro/populate-secrets.sh
delete mode 100644 .kokoro/presubmit/common.cfg
delete mode 100644 .kokoro/presubmit/prerelease-deps.cfg
delete mode 100644 .kokoro/presubmit/presubmit.cfg
delete mode 100644 .kokoro/samples/lint/common.cfg
delete mode 100644 .kokoro/samples/lint/continuous.cfg
delete mode 100644 .kokoro/samples/lint/periodic.cfg
delete mode 100644 .kokoro/samples/lint/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.10/common.cfg
delete mode 100644 .kokoro/samples/python3.10/continuous.cfg
delete mode 100644 .kokoro/samples/python3.10/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.10/periodic.cfg
delete mode 100644 .kokoro/samples/python3.10/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.11/common.cfg
delete mode 100644 .kokoro/samples/python3.11/continuous.cfg
delete mode 100644 .kokoro/samples/python3.11/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.11/periodic.cfg
delete mode 100644 .kokoro/samples/python3.11/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.12/common.cfg
delete mode 100644 .kokoro/samples/python3.12/continuous.cfg
delete mode 100644 .kokoro/samples/python3.12/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.12/periodic.cfg
delete mode 100644 .kokoro/samples/python3.12/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.13/common.cfg
delete mode 100644 .kokoro/samples/python3.13/continuous.cfg
delete mode 100644 .kokoro/samples/python3.13/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.13/periodic.cfg
delete mode 100644 .kokoro/samples/python3.13/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.7/common.cfg
delete mode 100644 .kokoro/samples/python3.7/continuous.cfg
delete mode 100644 .kokoro/samples/python3.7/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.7/periodic.cfg
delete mode 100644 .kokoro/samples/python3.7/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.8/common.cfg
delete mode 100644 .kokoro/samples/python3.8/continuous.cfg
delete mode 100644 .kokoro/samples/python3.8/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.8/periodic.cfg
delete mode 100644 .kokoro/samples/python3.8/presubmit.cfg
delete mode 100644 .kokoro/samples/python3.9/common.cfg
delete mode 100644 .kokoro/samples/python3.9/continuous.cfg
delete mode 100644 .kokoro/samples/python3.9/periodic-head.cfg
delete mode 100644 .kokoro/samples/python3.9/periodic.cfg
delete mode 100644 .kokoro/samples/python3.9/presubmit.cfg
delete mode 100755 .kokoro/test-samples-against-head.sh
delete mode 100755 .kokoro/test-samples-impl.sh
delete mode 100755 .kokoro/test-samples.sh
delete mode 100755 .kokoro/trampoline.sh
delete mode 100755 .kokoro/trampoline_v2.sh
delete mode 100644 .librarian/state.yaml
delete mode 100644 .pre-commit-config.yaml
delete mode 100644 .trampolinerc
delete mode 100644 CHANGELOG.md
delete mode 100644 CODE_OF_CONDUCT.md
delete mode 100644 CONTRIBUTING.rst
delete mode 100644 MANIFEST.in
delete mode 120000 docs/README.rst
delete mode 100644 docs/_static/custom.css
delete mode 100644 docs/_templates/layout.html
delete mode 120000 docs/changelog.md
delete mode 100644 docs/client/client.rst
delete mode 100644 docs/conf.py
delete mode 100644 docs/config.rst
delete mode 100644 docs/index.rst
delete mode 100644 docs/summary_overview.md
delete mode 100644 google/cloud/_helpers/__init__.py
delete mode 100644 google/cloud/_helpers/py.typed
delete mode 100644 google/cloud/_http/__init__.py
delete mode 100644 google/cloud/_http/py.typed
delete mode 100644 google/cloud/_testing/__init__.py
delete mode 100644 google/cloud/_testing/py.typed
delete mode 100644 google/cloud/client/__init__.py
delete mode 100644 google/cloud/client/py.typed
delete mode 100644 google/cloud/environment_vars/__init__.py
delete mode 100644 google/cloud/environment_vars/py.typed
delete mode 100644 google/cloud/exceptions/__init__.py
delete mode 100644 google/cloud/exceptions/py.typed
delete mode 100644 google/cloud/obsolete/__init__.py
delete mode 100644 google/cloud/obsolete/py.typed
delete mode 100644 google/cloud/operation/__init__.py
delete mode 100644 google/cloud/operation/py.typed
delete mode 100644 google/cloud/version.py
delete mode 100644 mypy.ini
delete mode 100644 noxfile.py
delete mode 100644 pylint.config.py
delete mode 100644 pytest.ini
delete mode 100644 renovate.json
delete mode 100755 scripts/decrypt-secrets.sh
delete mode 100644 scripts/readme-gen/readme_gen.py
delete mode 100644 scripts/readme-gen/templates/README.tmpl.rst
delete mode 100644 scripts/readme-gen/templates/auth.tmpl.rst
delete mode 100644 scripts/readme-gen/templates/auth_api_key.tmpl.rst
delete mode 100644 scripts/readme-gen/templates/install_deps.tmpl.rst
delete mode 100644 scripts/readme-gen/templates/install_portaudio.tmpl.rst
delete mode 100644 setup.py
delete mode 100644 testing/.gitignore
delete mode 100644 testing/constraints-3.10.txt
delete mode 100644 testing/constraints-3.11.txt
delete mode 100644 testing/constraints-3.12.txt
delete mode 100644 testing/constraints-3.13.txt
delete mode 100644 testing/constraints-3.14.txt
delete mode 100644 testing/constraints-3.7.txt
delete mode 100644 testing/constraints-3.8.txt
delete mode 100644 testing/constraints-3.9.txt
delete mode 100644 tests/__init__.py
delete mode 100644 tests/unit/__init__.py
delete mode 100644 tests/unit/test__helpers.py
delete mode 100644 tests/unit/test__http.py
delete mode 100644 tests/unit/test_client.py
delete mode 100644 tests/unit/test_obsolete.py
delete mode 100644 tests/unit/test_operation.py
delete mode 100644 tests/unit/test_packaging.py
diff --git a/.coveragerc b/.coveragerc
deleted file mode 100644
index b6be3e3..0000000
--- a/.coveragerc
+++ /dev/null
@@ -1,19 +0,0 @@
-[run]
-branch = True
-
-[report]
-omit =
- /tmp/*
- google/cloud/__init__.py
- google/cloud/_testing/__init__.py
- google/cloud/environment_vars/__init__.py
-fail_under = 100
-show_missing = True
-exclude_lines =
- # Re-enable the standard pragma
- pragma: NO COVER
- # Ignore debug-only repr
- def __repr__
- # Ignore abstract methods
- raise NotImplementedError
- raise NotImplementedError()
diff --git a/.flake8 b/.flake8
deleted file mode 100644
index 02330e9..0000000
--- a/.flake8
+++ /dev/null
@@ -1,11 +0,0 @@
-[flake8]
-import-order-style=google
-# Note: this forces all google imports to be in the third group. See
-# https://github.com/PyCQA/flake8-import-order/issues/111
-application-import-names=google
-ignore = E203, E266, E501, W503, I202
-exclude =
- __pycache__,
- .git,
- *.pyc,
- conf.py
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index e446644..0000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1,12 +0,0 @@
-# Code owners file.
-# This file controls who is tagged for review for any given pull request.
-#
-# For syntax help see:
-# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax
-# Note: This file is autogenerated. To make changes to the codeowner team, please update .repo-metadata.json.
-
-# @googleapis/yoshi-python is the default owner for changes in this repo
-* @googleapis/yoshi-python
-
-# @googleapis/python-samples-reviewers is the default owner for samples changes
-/samples/ @googleapis/python-samples-reviewers
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
deleted file mode 100644
index 939e534..0000000
--- a/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# How to Contribute
-
-We'd love to accept your patches and contributions to this project. There are
-just a few small guidelines you need to follow.
-
-## Contributor License Agreement
-
-Contributions to this project must be accompanied by a Contributor License
-Agreement. You (or your employer) retain the copyright to your contribution;
-this simply gives us permission to use and redistribute your contributions as
-part of the project. Head over to to see
-your current agreements on file or to sign a new one.
-
-You generally only need to submit a CLA once, so if you've already submitted one
-(even if it was for a different project), you probably don't need to do it
-again.
-
-## Code reviews
-
-All submissions, including submissions by project members, require review. We
-use GitHub pull requests for this purpose. Consult
-[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
-information on using pull requests.
-
-## Community Guidelines
-
-This project follows [Google's Open Source Community
-Guidelines](https://opensource.google.com/conduct/).
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 182a47a..0000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-
----
-
-Thanks for stopping by to let us know something could be better!
-
-**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response.
-
-Please run down the following list and make sure you've tried the usual "quick fixes":
-
- - Search the issues already opened: https://github.com/googleapis/python-cloud-core/issues
- - Search StackOverflow: https://stackoverflow.com/questions/tagged/google-cloud-platform+python
-
-If you are still having issues, please be sure to include as much information as possible:
-
-#### Environment details
-
- - OS type and version:
- - Python version: `python --version`
- - pip version: `pip --version`
- - `google-cloud-core` version: `pip show google-cloud-core`
-
-#### Steps to reproduce
-
- 1. ?
- 2. ?
-
-#### Code example
-
-```python
-# example
-```
-
-#### Stack trace
-```
-# example
-```
-
-Making sure to follow these steps will guarantee the quickest resolution possible.
-
-Thanks!
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 6365857..0000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this library
-
----
-
-Thanks for stopping by to let us know something could be better!
-
-**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response.
-
- **Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
- **Describe the solution you'd like**
-A clear and concise description of what you want to happen.
- **Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
- **Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/support_request.md b/.github/ISSUE_TEMPLATE/support_request.md
deleted file mode 100644
index 9958690..0000000
--- a/.github/ISSUE_TEMPLATE/support_request.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-name: Support request
-about: If you have a support contract with Google, please create an issue in the Google Cloud Support console.
-
----
-
-**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index 3d0c6bf..0000000
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,7 +0,0 @@
-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/python-cloud-core/issues/new/choose) 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 # đŠ
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
deleted file mode 100644
index 21786a4..0000000
--- a/.github/auto-label.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-requestsize:
- enabled: true
-
-path:
- pullrequest: true
- paths:
- samples: "samples"
diff --git a/.github/blunderbuss.yml b/.github/blunderbuss.yml
deleted file mode 100644
index 990b311..0000000
--- a/.github/blunderbuss.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Blunderbuss config
-#
-# This file controls who is assigned for pull requests and issues.
-# Note: This file is autogenerated. To make changes to the assignee
-# team, please update `codeowner_team` in `.repo-metadata.json`.
-
-assign_issues:
- - googleapis/python-core-client-libraries
-
-assign_issues_by:
- - labels:
- - "samples"
- to:
- - googleapis/python-samples-reviewers
-
-assign_prs:
- - googleapis/python-core-client-libraries
diff --git a/.github/header-checker-lint.yml b/.github/header-checker-lint.yml
deleted file mode 100644
index 6fe78aa..0000000
--- a/.github/header-checker-lint.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-{"allowedCopyrightHolders": ["Google LLC"],
- "allowedLicenses": ["Apache-2.0", "MIT", "BSD-3"],
- "ignoreFiles": ["**/requirements.txt", "**/requirements-test.txt", "**/__init__.py", "samples/**/constraints.txt", "samples/**/constraints-test.txt"],
- "sourceFileExtensions": [
- "ts",
- "js",
- "java",
- "sh",
- "Dockerfile",
- "yaml",
- "py",
- "html",
- "txt"
- ]
-}
\ No newline at end of file
diff --git a/.github/snippet-bot.yml b/.github/snippet-bot.yml
deleted file mode 100644
index e69de29..0000000
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
deleted file mode 100644
index c5ee988..0000000
--- a/.github/workflows/docs.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-on:
- pull_request:
- branches:
- - main
-name: docs
-jobs:
- docs:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Setup Python
- uses: actions/setup-python@v6
- with:
- python-version: "3.10"
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
- - name: Run docs
- run: |
- nox -s docs
- docfx:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Setup Python
- uses: actions/setup-python@v6
- with:
- python-version: "3.10"
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
- - name: Run docfx
- run: |
- nox -s docfx
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index a529334..0000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-on:
- pull_request:
- branches:
- - main
-name: lint
-jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Setup Python
- uses: actions/setup-python@v6
- with:
- python-version: "3.14"
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
- - name: Run lint
- run: |
- nox -s lint
- - name: Run lint_setup_py
- run: |
- nox -s lint_setup_py
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
deleted file mode 100644
index 9a35763..0000000
--- a/.github/workflows/mypy.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-on:
- pull_request:
- branches:
- - main
-name: mypy
-jobs:
- mypy:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Setup Python
- uses: actions/setup-python@v6
- with:
- python-version: "3.14"
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
- - name: Run mypy
- run: |
- nox -s mypy
diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml
deleted file mode 100644
index d6cda9b..0000000
--- a/.github/workflows/unittest.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-on:
- pull_request:
- branches:
- - main
-name: unittest
-jobs:
- unit:
- # TODO(https://github.com/googleapis/gapic-generator-python/issues/2303): use `ubuntu-latest` once this bug is fixed.
- # Use ubuntu-22.04 until Python 3.7 is removed from the test matrix
- # https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
- runs-on: ubuntu-22.04
- strategy:
- matrix:
- python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Setup Python
- uses: actions/setup-python@v5
- with:
- python-version: ${{ matrix.python }}
- - name: Install nox
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install nox
- - name: Run unit tests
- env:
- COVERAGE_FILE: .coverage-${{ matrix.python }}
- run: |
- nox -s unit-${{ matrix.python }}
- - name: Upload coverage results
- uses: actions/upload-artifact@v4
- with:
- name: coverage-artifact-${{ matrix.python }}
- path: .coverage-${{ matrix.python }}
- include-hidden-files: true
-
- cover:
- runs-on: ubuntu-latest
- needs:
- - unit
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Setup Python
- uses: actions/setup-python@v5
- with:
- python-version: "3.14"
- - name: Install coverage
- run: |
- python -m pip install --upgrade setuptools pip wheel
- python -m pip install coverage
- - name: Download coverage results
- uses: actions/download-artifact@v4
- with:
- path: .coverage-results/
- - name: Report coverage results
- run: |
- find .coverage-results -type f -name '*.zip' -exec unzip {} \;
- coverage combine .coverage-results/**/.coverage*
- coverage report --show-missing --fail-under=100
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index d083ea1..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,64 +0,0 @@
-*.py[cod]
-*.sw[op]
-
-# C extensions
-*.so
-
-# Packages
-*.egg
-*.egg-info
-dist
-build
-eggs
-.eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
-lib
-lib64
-__pycache__
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.nox
-.cache
-.pytest_cache
-
-
-# Mac
-.DS_Store
-
-# JetBrains
-.idea
-
-# VS Code
-.vscode
-
-# emacs
-*~
-
-# Built documentation
-docs/_build
-bigquery/docs/generated
-docs.metadata
-
-# Virtual environment
-env/
-venv/
-
-# Test logs
-coverage.xml
-*sponge_log.xml
-
-# System test environment variables.
-system_tests/local_test_setup
-
-# Make sure a generated file isn't accidentally committed.
-pylintrc
-pylintrc.test
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
deleted file mode 100755
index d41b45a..0000000
--- a/.kokoro/build.sh
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eo pipefail
-
-CURRENT_DIR=$(dirname "${BASH_SOURCE[0]}")
-
-if [[ -z "${PROJECT_ROOT:-}" ]]; then
- PROJECT_ROOT=$(realpath "${CURRENT_DIR}/..")
-fi
-
-pushd "${PROJECT_ROOT}"
-
-# Disable buffering, so that the logs stream through.
-export PYTHONUNBUFFERED=1
-
-# Debug: show build environment
-env | grep KOKORO
-
-# Setup service account credentials.
-if [[ -f "${KOKORO_GFILE_DIR}/service-account.json" ]]
-then
- export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/service-account.json
-fi
-
-# Setup project id.
-if [[ -f "${KOKORO_GFILE_DIR}/project-id.json" ]]
-then
- export PROJECT_ID=$(cat "${KOKORO_GFILE_DIR}/project-id.json")
-fi
-
-# If this is a continuous build, send the test log to the FlakyBot.
-# See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
-if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"continuous"* ]]; then
- cleanup() {
- chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
- $KOKORO_GFILE_DIR/linux_amd64/flakybot
- }
- trap cleanup EXIT HUP
-fi
-
-# If NOX_SESSION is set, it only runs the specified session,
-# otherwise run all the sessions.
-if [[ -n "${NOX_SESSION:-}" ]]; then
- python3 -m nox -s ${NOX_SESSION:-}
-else
- python3 -m nox
-fi
diff --git a/.kokoro/continuous/common.cfg b/.kokoro/continuous/common.cfg
deleted file mode 100644
index 25f474d..0000000
--- a/.kokoro/continuous/common.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Download resources for system tests (service account key, etc.)
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/google-cloud-python"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-multi"
-}
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/build.sh"
-}
diff --git a/.kokoro/continuous/continuous.cfg b/.kokoro/continuous/continuous.cfg
deleted file mode 100644
index 8f43917..0000000
--- a/.kokoro/continuous/continuous.cfg
+++ /dev/null
@@ -1 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
\ No newline at end of file
diff --git a/.kokoro/continuous/prerelease-deps.cfg b/.kokoro/continuous/prerelease-deps.cfg
deleted file mode 100644
index 3595fb4..0000000
--- a/.kokoro/continuous/prerelease-deps.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Only run this nox session.
-env_vars: {
- key: "NOX_SESSION"
- value: "prerelease_deps"
-}
diff --git a/.kokoro/populate-secrets.sh b/.kokoro/populate-secrets.sh
deleted file mode 100755
index c435402..0000000
--- a/.kokoro/populate-secrets.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eo pipefail
-
-function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;}
-function msg { println "$*" >&2 ;}
-function println { printf '%s\n' "$(now) $*" ;}
-
-
-# Populates requested secrets set in SECRET_MANAGER_KEYS from service account:
-# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com
-SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager"
-msg "Creating folder on disk for secrets: ${SECRET_LOCATION}"
-mkdir -p ${SECRET_LOCATION}
-for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g")
-do
- msg "Retrieving secret ${key}"
- docker run --entrypoint=gcloud \
- --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \
- gcr.io/google.com/cloudsdktool/cloud-sdk \
- secrets versions access latest \
- --project cloud-devrel-kokoro-resources \
- --secret ${key} > \
- "${SECRET_LOCATION}/${key}"
- if [[ $? == 0 ]]; then
- msg "Secret written to ${SECRET_LOCATION}/${key}"
- else
- msg "Error retrieving secret ${key}"
- fi
-done
diff --git a/.kokoro/presubmit/common.cfg b/.kokoro/presubmit/common.cfg
deleted file mode 100644
index 25f474d..0000000
--- a/.kokoro/presubmit/common.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Download resources for system tests (service account key, etc.)
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/google-cloud-python"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline.sh"
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-multi"
-}
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/build.sh"
-}
diff --git a/.kokoro/presubmit/prerelease-deps.cfg b/.kokoro/presubmit/prerelease-deps.cfg
deleted file mode 100644
index 3595fb4..0000000
--- a/.kokoro/presubmit/prerelease-deps.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Only run this nox session.
-env_vars: {
- key: "NOX_SESSION"
- value: "prerelease_deps"
-}
diff --git a/.kokoro/presubmit/presubmit.cfg b/.kokoro/presubmit/presubmit.cfg
deleted file mode 100644
index 8f43917..0000000
--- a/.kokoro/presubmit/presubmit.cfg
+++ /dev/null
@@ -1 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
\ No newline at end of file
diff --git a/.kokoro/samples/lint/common.cfg b/.kokoro/samples/lint/common.cfg
deleted file mode 100644
index a0844fb..0000000
--- a/.kokoro/samples/lint/common.cfg
+++ /dev/null
@@ -1,34 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "lint"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/lint/continuous.cfg b/.kokoro/samples/lint/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/lint/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/lint/periodic.cfg b/.kokoro/samples/lint/periodic.cfg
deleted file mode 100644
index 50fec96..0000000
--- a/.kokoro/samples/lint/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/lint/presubmit.cfg b/.kokoro/samples/lint/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/lint/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.10/common.cfg b/.kokoro/samples/python3.10/common.cfg
deleted file mode 100644
index 0bce697..0000000
--- a/.kokoro/samples/python3.10/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.10"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-310"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.10/continuous.cfg b/.kokoro/samples/python3.10/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.10/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.10/periodic-head.cfg b/.kokoro/samples/python3.10/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.10/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.10/periodic.cfg b/.kokoro/samples/python3.10/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.10/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.10/presubmit.cfg b/.kokoro/samples/python3.10/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.10/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.11/common.cfg b/.kokoro/samples/python3.11/common.cfg
deleted file mode 100644
index 74c8cf3..0000000
--- a/.kokoro/samples/python3.11/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.11"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-311"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.11/continuous.cfg b/.kokoro/samples/python3.11/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.11/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.11/periodic-head.cfg b/.kokoro/samples/python3.11/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.11/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.11/periodic.cfg b/.kokoro/samples/python3.11/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.11/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.11/presubmit.cfg b/.kokoro/samples/python3.11/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.11/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.12/common.cfg b/.kokoro/samples/python3.12/common.cfg
deleted file mode 100644
index 9dced3a..0000000
--- a/.kokoro/samples/python3.12/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.12"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-312"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.12/continuous.cfg b/.kokoro/samples/python3.12/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.12/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.12/periodic-head.cfg b/.kokoro/samples/python3.12/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.12/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.12/periodic.cfg b/.kokoro/samples/python3.12/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.12/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.12/presubmit.cfg b/.kokoro/samples/python3.12/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.12/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.13/common.cfg b/.kokoro/samples/python3.13/common.cfg
deleted file mode 100644
index 67c71c6..0000000
--- a/.kokoro/samples/python3.13/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.13"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-313"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
diff --git a/.kokoro/samples/python3.13/continuous.cfg b/.kokoro/samples/python3.13/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.13/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.13/periodic-head.cfg b/.kokoro/samples/python3.13/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.13/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.13/periodic.cfg b/.kokoro/samples/python3.13/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.13/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.13/presubmit.cfg b/.kokoro/samples/python3.13/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.13/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.7/common.cfg b/.kokoro/samples/python3.7/common.cfg
deleted file mode 100644
index c73dd04..0000000
--- a/.kokoro/samples/python3.7/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.7"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-py37"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.7/continuous.cfg b/.kokoro/samples/python3.7/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.7/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.7/periodic-head.cfg b/.kokoro/samples/python3.7/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.7/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.7/periodic.cfg b/.kokoro/samples/python3.7/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.7/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.7/presubmit.cfg b/.kokoro/samples/python3.7/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.7/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.8/common.cfg b/.kokoro/samples/python3.8/common.cfg
deleted file mode 100644
index dc2327d..0000000
--- a/.kokoro/samples/python3.8/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.8"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-py38"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.8/continuous.cfg b/.kokoro/samples/python3.8/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.8/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.8/periodic-head.cfg b/.kokoro/samples/python3.8/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.8/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.8/periodic.cfg b/.kokoro/samples/python3.8/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.8/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.8/presubmit.cfg b/.kokoro/samples/python3.8/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.8/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/common.cfg b/.kokoro/samples/python3.9/common.cfg
deleted file mode 100644
index 34cfc60..0000000
--- a/.kokoro/samples/python3.9/common.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-# Build logs will be here
-action {
- define_artifacts {
- regex: "**/*sponge_log.xml"
- }
-}
-
-# Specify which tests to run
-env_vars: {
- key: "RUN_TESTS_SESSION"
- value: "py-3.9"
-}
-
-# Declare build specific Cloud project.
-env_vars: {
- key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
- value: "python-docs-samples-tests-py39"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples.sh"
-}
-
-# Configure the docker image for kokoro-trampoline.
-env_vars: {
- key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
-}
-
-# Download secrets for samples
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
-
-# Download trampoline resources.
-gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
-
-# Use the trampoline script to run in docker.
-build_file: "python-cloud-core/.kokoro/trampoline_v2.sh"
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/continuous.cfg b/.kokoro/samples/python3.9/continuous.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.9/continuous.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/samples/python3.9/periodic-head.cfg b/.kokoro/samples/python3.9/periodic-head.cfg
deleted file mode 100644
index f9e9e94..0000000
--- a/.kokoro/samples/python3.9/periodic-head.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
-
-env_vars: {
- key: "TRAMPOLINE_BUILD_FILE"
- value: "github/python-cloud-core/.kokoro/test-samples-against-head.sh"
-}
diff --git a/.kokoro/samples/python3.9/periodic.cfg b/.kokoro/samples/python3.9/periodic.cfg
deleted file mode 100644
index 71cd1e5..0000000
--- a/.kokoro/samples/python3.9/periodic.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "False"
-}
diff --git a/.kokoro/samples/python3.9/presubmit.cfg b/.kokoro/samples/python3.9/presubmit.cfg
deleted file mode 100644
index a1c8d97..0000000
--- a/.kokoro/samples/python3.9/presubmit.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-env_vars: {
- key: "INSTALL_LIBRARY_FROM_SOURCE"
- value: "True"
-}
\ No newline at end of file
diff --git a/.kokoro/test-samples-against-head.sh b/.kokoro/test-samples-against-head.sh
deleted file mode 100755
index e9d8bd7..0000000
--- a/.kokoro/test-samples-against-head.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A customized test runner for samples.
-#
-# For periodic builds, you can specify this file for testing against head.
-
-# `-e` enables the script to automatically fail when a command fails
-# `-o pipefail` sets the exit code to the rightmost comment to exit with a non-zero
-set -eo pipefail
-# Enables `**` to include files nested inside sub-folders
-shopt -s globstar
-
-exec .kokoro/test-samples-impl.sh
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
deleted file mode 100755
index 53e365b..0000000
--- a/.kokoro/test-samples-impl.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# `-e` enables the script to automatically fail when a command fails
-# `-o pipefail` sets the exit code to the rightmost comment to exit with a non-zero
-set -eo pipefail
-# Enables `**` to include files nested inside sub-folders
-shopt -s globstar
-
-# Exit early if samples don't exist
-if ! find samples -name 'requirements.txt' | grep -q .; then
- echo "No tests run. './samples/**/requirements.txt' not found"
- exit 0
-fi
-
-# Disable buffering, so that the logs stream through.
-export PYTHONUNBUFFERED=1
-
-# Debug: show build environment
-env | grep KOKORO
-
-# Install nox
-# `virtualenv==20.26.6` is added for Python 3.7 compatibility
-python3.9 -m pip install --upgrade --quiet nox virtualenv==20.26.6
-
-# Use secrets acessor service account to get secrets
-if [[ -f "${KOKORO_GFILE_DIR}/secrets_viewer_service_account.json" ]]; then
- gcloud auth activate-service-account \
- --key-file="${KOKORO_GFILE_DIR}/secrets_viewer_service_account.json" \
- --project="cloud-devrel-kokoro-resources"
-fi
-
-# This script will create 3 files:
-# - testing/test-env.sh
-# - testing/service-account.json
-# - testing/client-secrets.json
-./scripts/decrypt-secrets.sh
-
-source ./testing/test-env.sh
-export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/testing/service-account.json
-
-# For cloud-run session, we activate the service account for gcloud sdk.
-gcloud auth activate-service-account \
- --key-file "${GOOGLE_APPLICATION_CREDENTIALS}"
-
-export GOOGLE_CLIENT_SECRETS=$(pwd)/testing/client-secrets.json
-
-echo -e "\n******************** TESTING PROJECTS ********************"
-
-# Switch to 'fail at end' to allow all tests to complete before exiting.
-set +e
-# Use RTN to return a non-zero value if the test fails.
-RTN=0
-ROOT=$(pwd)
-# Find all requirements.txt in the samples directory (may break on whitespace).
-for file in samples/**/requirements.txt; do
- cd "$ROOT"
- # Navigate to the project folder.
- file=$(dirname "$file")
- cd "$file"
-
- echo "------------------------------------------------------------"
- echo "- testing $file"
- echo "------------------------------------------------------------"
-
- # Use nox to execute the tests for the project.
- python3.9 -m nox -s "$RUN_TESTS_SESSION"
- EXIT=$?
-
- # If this is a periodic build, send the test log to the FlakyBot.
- # See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
- if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
- chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
- $KOKORO_GFILE_DIR/linux_amd64/flakybot
- fi
-
- if [[ $EXIT -ne 0 ]]; then
- RTN=1
- echo -e "\n Testing failed: Nox returned a non-zero exit code. \n"
- else
- echo -e "\n Testing completed.\n"
- fi
-
-done
-cd "$ROOT"
-
-# Workaround for Kokoro permissions issue: delete secrets
-rm testing/{test-env.sh,client-secrets.json,service-account.json}
-
-exit "$RTN"
diff --git a/.kokoro/test-samples.sh b/.kokoro/test-samples.sh
deleted file mode 100755
index 7933d82..0000000
--- a/.kokoro/test-samples.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# The default test runner for samples.
-#
-# For periodic builds, we rewinds the repo to the latest release, and
-# run test-samples-impl.sh.
-
-# `-e` enables the script to automatically fail when a command fails
-# `-o pipefail` sets the exit code to the rightmost comment to exit with a non-zero
-set -eo pipefail
-# Enables `**` to include files nested inside sub-folders
-shopt -s globstar
-
-# Run periodic samples tests at latest release
-if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
- # preserving the test runner implementation.
- cp .kokoro/test-samples-impl.sh "${TMPDIR}/test-samples-impl.sh"
- echo "--- IMPORTANT IMPORTANT IMPORTANT ---"
- echo "Now we rewind the repo back to the latest release..."
- LATEST_RELEASE=$(git describe --abbrev=0 --tags)
- git checkout $LATEST_RELEASE
- echo "The current head is: "
- echo $(git rev-parse --verify HEAD)
- echo "--- IMPORTANT IMPORTANT IMPORTANT ---"
- # move back the test runner implementation if there's no file.
- if [ ! -f .kokoro/test-samples-impl.sh ]; then
- cp "${TMPDIR}/test-samples-impl.sh" .kokoro/test-samples-impl.sh
- fi
-fi
-
-exec .kokoro/test-samples-impl.sh
diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh
deleted file mode 100755
index 48f7969..0000000
--- a/.kokoro/trampoline.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eo pipefail
-
-# Always run the cleanup script, regardless of the success of bouncing into
-# the container.
-function cleanup() {
- chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh
- ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh
- echo "cleanup";
-}
-trap cleanup EXIT
-
-$(dirname $0)/populate-secrets.sh # Secret Manager secrets.
-python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py"
\ No newline at end of file
diff --git a/.kokoro/trampoline_v2.sh b/.kokoro/trampoline_v2.sh
deleted file mode 100755
index d03f92d..0000000
--- a/.kokoro/trampoline_v2.sh
+++ /dev/null
@@ -1,487 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# trampoline_v2.sh
-#
-# This script does 3 things.
-#
-# 1. Prepare the Docker image for the test
-# 2. Run the Docker with appropriate flags to run the test
-# 3. Upload the newly built Docker image
-#
-# in a way that is somewhat compatible with trampoline_v1.
-#
-# To run this script, first download few files from gcs to /dev/shm.
-# (/dev/shm is passed into the container as KOKORO_GFILE_DIR).
-#
-# gcloud storage cp gs://cloud-devrel-kokoro-resources/python-docs-samples/secrets_viewer_service_account.json /dev/shm
-# gcloud storage cp gs://cloud-devrel-kokoro-resources/python-docs-samples/automl_secrets.txt /dev/shm
-#
-# Then run the script.
-# .kokoro/trampoline_v2.sh
-#
-# These environment variables are required:
-# TRAMPOLINE_IMAGE: The docker image to use.
-# TRAMPOLINE_DOCKERFILE: The location of the Dockerfile.
-#
-# You can optionally change these environment variables:
-# TRAMPOLINE_IMAGE_UPLOAD:
-# (true|false): Whether to upload the Docker image after the
-# successful builds.
-# TRAMPOLINE_BUILD_FILE: The script to run in the docker container.
-# TRAMPOLINE_WORKSPACE: The workspace path in the docker container.
-# Defaults to /workspace.
-# Potentially there are some repo specific envvars in .trampolinerc in
-# the project root.
-
-
-set -euo pipefail
-
-TRAMPOLINE_VERSION="2.0.5"
-
-if command -v tput >/dev/null && [[ -n "${TERM:-}" ]]; then
- readonly IO_COLOR_RED="$(tput setaf 1)"
- readonly IO_COLOR_GREEN="$(tput setaf 2)"
- readonly IO_COLOR_YELLOW="$(tput setaf 3)"
- readonly IO_COLOR_RESET="$(tput sgr0)"
-else
- readonly IO_COLOR_RED=""
- readonly IO_COLOR_GREEN=""
- readonly IO_COLOR_YELLOW=""
- readonly IO_COLOR_RESET=""
-fi
-
-function function_exists {
- [ $(LC_ALL=C type -t $1)"" == "function" ]
-}
-
-# Logs a message using the given color. The first argument must be one
-# of the IO_COLOR_* variables defined above, such as
-# "${IO_COLOR_YELLOW}". The remaining arguments will be logged in the
-# given color. The log message will also have an RFC-3339 timestamp
-# prepended (in UTC). You can disable the color output by setting
-# TERM=vt100.
-function log_impl() {
- local color="$1"
- shift
- local timestamp="$(date -u "+%Y-%m-%dT%H:%M:%SZ")"
- echo "================================================================"
- echo "${color}${timestamp}:" "$@" "${IO_COLOR_RESET}"
- echo "================================================================"
-}
-
-# Logs the given message with normal coloring and a timestamp.
-function log() {
- log_impl "${IO_COLOR_RESET}" "$@"
-}
-
-# Logs the given message in green with a timestamp.
-function log_green() {
- log_impl "${IO_COLOR_GREEN}" "$@"
-}
-
-# Logs the given message in yellow with a timestamp.
-function log_yellow() {
- log_impl "${IO_COLOR_YELLOW}" "$@"
-}
-
-# Logs the given message in red with a timestamp.
-function log_red() {
- log_impl "${IO_COLOR_RED}" "$@"
-}
-
-readonly tmpdir=$(mktemp -d -t ci-XXXXXXXX)
-readonly tmphome="${tmpdir}/h"
-mkdir -p "${tmphome}"
-
-function cleanup() {
- rm -rf "${tmpdir}"
-}
-trap cleanup EXIT
-
-RUNNING_IN_CI="${RUNNING_IN_CI:-false}"
-
-# The workspace in the container, defaults to /workspace.
-TRAMPOLINE_WORKSPACE="${TRAMPOLINE_WORKSPACE:-/workspace}"
-
-pass_down_envvars=(
- # TRAMPOLINE_V2 variables.
- # Tells scripts whether they are running as part of CI or not.
- "RUNNING_IN_CI"
- # Indicates which CI system we're in.
- "TRAMPOLINE_CI"
- # Indicates the version of the script.
- "TRAMPOLINE_VERSION"
-)
-
-log_yellow "Building with Trampoline ${TRAMPOLINE_VERSION}"
-
-# Detect which CI systems we're in. If we're in any of the CI systems
-# we support, `RUNNING_IN_CI` will be true and `TRAMPOLINE_CI` will be
-# the name of the CI system. Both envvars will be passing down to the
-# container for telling which CI system we're in.
-if [[ -n "${KOKORO_BUILD_ID:-}" ]]; then
- # descriptive env var for indicating it's on CI.
- RUNNING_IN_CI="true"
- TRAMPOLINE_CI="kokoro"
- if [[ "${TRAMPOLINE_USE_LEGACY_SERVICE_ACCOUNT:-}" == "true" ]]; then
- if [[ ! -f "${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json" ]]; then
- log_red "${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json does not exist. Did you forget to mount cloud-devrel-kokoro-resources/trampoline? Aborting."
- exit 1
- fi
- # This service account will be activated later.
- TRAMPOLINE_SERVICE_ACCOUNT="${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json"
- else
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
- gcloud auth list
- fi
- log_yellow "Configuring Container Registry access"
- gcloud auth configure-docker --quiet
- fi
- pass_down_envvars+=(
- # KOKORO dynamic variables.
- "KOKORO_BUILD_NUMBER"
- "KOKORO_BUILD_ID"
- "KOKORO_JOB_NAME"
- "KOKORO_GIT_COMMIT"
- "KOKORO_GITHUB_COMMIT"
- "KOKORO_GITHUB_PULL_REQUEST_NUMBER"
- "KOKORO_GITHUB_PULL_REQUEST_COMMIT"
- # For FlakyBot
- "KOKORO_GITHUB_COMMIT_URL"
- "KOKORO_GITHUB_PULL_REQUEST_URL"
- )
-elif [[ "${TRAVIS:-}" == "true" ]]; then
- RUNNING_IN_CI="true"
- TRAMPOLINE_CI="travis"
- pass_down_envvars+=(
- "TRAVIS_BRANCH"
- "TRAVIS_BUILD_ID"
- "TRAVIS_BUILD_NUMBER"
- "TRAVIS_BUILD_WEB_URL"
- "TRAVIS_COMMIT"
- "TRAVIS_COMMIT_MESSAGE"
- "TRAVIS_COMMIT_RANGE"
- "TRAVIS_JOB_NAME"
- "TRAVIS_JOB_NUMBER"
- "TRAVIS_JOB_WEB_URL"
- "TRAVIS_PULL_REQUEST"
- "TRAVIS_PULL_REQUEST_BRANCH"
- "TRAVIS_PULL_REQUEST_SHA"
- "TRAVIS_PULL_REQUEST_SLUG"
- "TRAVIS_REPO_SLUG"
- "TRAVIS_SECURE_ENV_VARS"
- "TRAVIS_TAG"
- )
-elif [[ -n "${GITHUB_RUN_ID:-}" ]]; then
- RUNNING_IN_CI="true"
- TRAMPOLINE_CI="github-workflow"
- pass_down_envvars+=(
- "GITHUB_WORKFLOW"
- "GITHUB_RUN_ID"
- "GITHUB_RUN_NUMBER"
- "GITHUB_ACTION"
- "GITHUB_ACTIONS"
- "GITHUB_ACTOR"
- "GITHUB_REPOSITORY"
- "GITHUB_EVENT_NAME"
- "GITHUB_EVENT_PATH"
- "GITHUB_SHA"
- "GITHUB_REF"
- "GITHUB_HEAD_REF"
- "GITHUB_BASE_REF"
- )
-elif [[ "${CIRCLECI:-}" == "true" ]]; then
- RUNNING_IN_CI="true"
- TRAMPOLINE_CI="circleci"
- pass_down_envvars+=(
- "CIRCLE_BRANCH"
- "CIRCLE_BUILD_NUM"
- "CIRCLE_BUILD_URL"
- "CIRCLE_COMPARE_URL"
- "CIRCLE_JOB"
- "CIRCLE_NODE_INDEX"
- "CIRCLE_NODE_TOTAL"
- "CIRCLE_PREVIOUS_BUILD_NUM"
- "CIRCLE_PROJECT_REPONAME"
- "CIRCLE_PROJECT_USERNAME"
- "CIRCLE_REPOSITORY_URL"
- "CIRCLE_SHA1"
- "CIRCLE_STAGE"
- "CIRCLE_USERNAME"
- "CIRCLE_WORKFLOW_ID"
- "CIRCLE_WORKFLOW_JOB_ID"
- "CIRCLE_WORKFLOW_UPSTREAM_JOB_IDS"
- "CIRCLE_WORKFLOW_WORKSPACE_ID"
- )
-fi
-
-# Configure the service account for pulling the docker image.
-function repo_root() {
- local dir="$1"
- while [[ ! -d "${dir}/.git" ]]; do
- dir="$(dirname "$dir")"
- done
- echo "${dir}"
-}
-
-# Detect the project root. In CI builds, we assume the script is in
-# the git tree and traverse from there, otherwise, traverse from `pwd`
-# to find `.git` directory.
-if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
- PROGRAM_PATH="$(realpath "$0")"
- PROGRAM_DIR="$(dirname "${PROGRAM_PATH}")"
- PROJECT_ROOT="$(repo_root "${PROGRAM_DIR}")"
-else
- PROJECT_ROOT="$(repo_root $(pwd))"
-fi
-
-log_yellow "Changing to the project root: ${PROJECT_ROOT}."
-cd "${PROJECT_ROOT}"
-
-# To support relative path for `TRAMPOLINE_SERVICE_ACCOUNT`, we need
-# to use this environment variable in `PROJECT_ROOT`.
-if [[ -n "${TRAMPOLINE_SERVICE_ACCOUNT:-}" ]]; then
-
- mkdir -p "${tmpdir}/gcloud"
- gcloud_config_dir="${tmpdir}/gcloud"
-
- log_yellow "Using isolated gcloud config: ${gcloud_config_dir}."
- export CLOUDSDK_CONFIG="${gcloud_config_dir}"
-
- log_yellow "Using ${TRAMPOLINE_SERVICE_ACCOUNT} for authentication."
- gcloud auth activate-service-account \
- --key-file "${TRAMPOLINE_SERVICE_ACCOUNT}"
- log_yellow "Configuring Container Registry access"
- gcloud auth configure-docker --quiet
-fi
-
-required_envvars=(
- # The basic trampoline configurations.
- "TRAMPOLINE_IMAGE"
- "TRAMPOLINE_BUILD_FILE"
-)
-
-if [[ -f "${PROJECT_ROOT}/.trampolinerc" ]]; then
- source "${PROJECT_ROOT}/.trampolinerc"
-fi
-
-log_yellow "Checking environment variables."
-for e in "${required_envvars[@]}"
-do
- if [[ -z "${!e:-}" ]]; then
- log "Missing ${e} env var. Aborting."
- exit 1
- fi
-done
-
-# We want to support legacy style TRAMPOLINE_BUILD_FILE used with V1
-# script: e.g. "github/repo-name/.kokoro/run_tests.sh"
-TRAMPOLINE_BUILD_FILE="${TRAMPOLINE_BUILD_FILE#github/*/}"
-log_yellow "Using TRAMPOLINE_BUILD_FILE: ${TRAMPOLINE_BUILD_FILE}"
-
-# ignore error on docker operations and test execution
-set +e
-
-log_yellow "Preparing Docker image."
-# We only download the docker image in CI builds.
-if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
- # Download the docker image specified by `TRAMPOLINE_IMAGE`
-
- # We may want to add --max-concurrent-downloads flag.
-
- log_yellow "Start pulling the Docker image: ${TRAMPOLINE_IMAGE}."
- if docker pull "${TRAMPOLINE_IMAGE}"; then
- log_green "Finished pulling the Docker image: ${TRAMPOLINE_IMAGE}."
- has_image="true"
- else
- log_red "Failed pulling the Docker image: ${TRAMPOLINE_IMAGE}."
- has_image="false"
- fi
-else
- # For local run, check if we have the image.
- if docker images "${TRAMPOLINE_IMAGE}:latest" | grep "${TRAMPOLINE_IMAGE}"; then
- has_image="true"
- else
- has_image="false"
- fi
-fi
-
-
-# The default user for a Docker container has uid 0 (root). To avoid
-# creating root-owned files in the build directory we tell docker to
-# use the current user ID.
-user_uid="$(id -u)"
-user_gid="$(id -g)"
-user_name="$(id -un)"
-
-# To allow docker in docker, we add the user to the docker group in
-# the host os.
-docker_gid=$(cut -d: -f3 < <(getent group docker))
-
-update_cache="false"
-if [[ "${TRAMPOLINE_DOCKERFILE:-none}" != "none" ]]; then
- # Build the Docker image from the source.
- context_dir=$(dirname "${TRAMPOLINE_DOCKERFILE}")
- docker_build_flags=(
- "-f" "${TRAMPOLINE_DOCKERFILE}"
- "-t" "${TRAMPOLINE_IMAGE}"
- "--build-arg" "UID=${user_uid}"
- "--build-arg" "USERNAME=${user_name}"
- )
- if [[ "${has_image}" == "true" ]]; then
- docker_build_flags+=("--cache-from" "${TRAMPOLINE_IMAGE}")
- fi
-
- log_yellow "Start building the docker image."
- if [[ "${TRAMPOLINE_VERBOSE:-false}" == "true" ]]; then
- echo "docker build" "${docker_build_flags[@]}" "${context_dir}"
- fi
-
- # ON CI systems, we want to suppress docker build logs, only
- # output the logs when it fails.
- if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
- if docker build "${docker_build_flags[@]}" "${context_dir}" \
- > "${tmpdir}/docker_build.log" 2>&1; then
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
- cat "${tmpdir}/docker_build.log"
- fi
-
- log_green "Finished building the docker image."
- update_cache="true"
- else
- log_red "Failed to build the Docker image, aborting."
- log_yellow "Dumping the build logs:"
- cat "${tmpdir}/docker_build.log"
- exit 1
- fi
- else
- if docker build "${docker_build_flags[@]}" "${context_dir}"; then
- log_green "Finished building the docker image."
- update_cache="true"
- else
- log_red "Failed to build the Docker image, aborting."
- exit 1
- fi
- fi
-else
- if [[ "${has_image}" != "true" ]]; then
- log_red "We do not have ${TRAMPOLINE_IMAGE} locally, aborting."
- exit 1
- fi
-fi
-
-# We use an array for the flags so they are easier to document.
-docker_flags=(
- # Remove the container after it exists.
- "--rm"
-
- # Use the host network.
- "--network=host"
-
- # Run in priviledged mode. We are not using docker for sandboxing or
- # isolation, just for packaging our dev tools.
- "--privileged"
-
- # Run the docker script with the user id. Because the docker image gets to
- # write in ${PWD} you typically want this to be your user id.
- # To allow docker in docker, we need to use docker gid on the host.
- "--user" "${user_uid}:${docker_gid}"
-
- # Pass down the USER.
- "--env" "USER=${user_name}"
-
- # Mount the project directory inside the Docker container.
- "--volume" "${PROJECT_ROOT}:${TRAMPOLINE_WORKSPACE}"
- "--workdir" "${TRAMPOLINE_WORKSPACE}"
- "--env" "PROJECT_ROOT=${TRAMPOLINE_WORKSPACE}"
-
- # Mount the temporary home directory.
- "--volume" "${tmphome}:/h"
- "--env" "HOME=/h"
-
- # Allow docker in docker.
- "--volume" "/var/run/docker.sock:/var/run/docker.sock"
-
- # Mount the /tmp so that docker in docker can mount the files
- # there correctly.
- "--volume" "/tmp:/tmp"
- # Pass down the KOKORO_GFILE_DIR and KOKORO_KEYSTORE_DIR
- # TODO(tmatsuo): This part is not portable.
- "--env" "TRAMPOLINE_SECRET_DIR=/secrets"
- "--volume" "${KOKORO_GFILE_DIR:-/dev/shm}:/secrets/gfile"
- "--env" "KOKORO_GFILE_DIR=/secrets/gfile"
- "--volume" "${KOKORO_KEYSTORE_DIR:-/dev/shm}:/secrets/keystore"
- "--env" "KOKORO_KEYSTORE_DIR=/secrets/keystore"
-)
-
-# Add an option for nicer output if the build gets a tty.
-if [[ -t 0 ]]; then
- docker_flags+=("-it")
-fi
-
-# Passing down env vars
-for e in "${pass_down_envvars[@]}"
-do
- if [[ -n "${!e:-}" ]]; then
- docker_flags+=("--env" "${e}=${!e}")
- fi
-done
-
-# If arguments are given, all arguments will become the commands run
-# in the container, otherwise run TRAMPOLINE_BUILD_FILE.
-if [[ $# -ge 1 ]]; then
- log_yellow "Running the given commands '" "${@:1}" "' in the container."
- readonly commands=("${@:1}")
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
- echo docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}" "${commands[@]}"
- fi
- docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}" "${commands[@]}"
-else
- log_yellow "Running the tests in a Docker container."
- docker_flags+=("--entrypoint=${TRAMPOLINE_BUILD_FILE}")
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
- echo docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}"
- fi
- docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}"
-fi
-
-
-test_retval=$?
-
-if [[ ${test_retval} -eq 0 ]]; then
- log_green "Build finished with ${test_retval}"
-else
- log_red "Build finished with ${test_retval}"
-fi
-
-# Only upload it when the test passes.
-if [[ "${update_cache}" == "true" ]] && \
- [[ $test_retval == 0 ]] && \
- [[ "${TRAMPOLINE_IMAGE_UPLOAD:-false}" == "true" ]]; then
- log_yellow "Uploading the Docker image."
- if docker push "${TRAMPOLINE_IMAGE}"; then
- log_green "Finished uploading the Docker image."
- else
- log_red "Failed uploading the Docker image."
- fi
- # Call trampoline_after_upload_hook if it's defined.
- if function_exists trampoline_after_upload_hook; then
- trampoline_after_upload_hook
- fi
-
-fi
-
-exit "${test_retval}"
diff --git a/.librarian/state.yaml b/.librarian/state.yaml
deleted file mode 100644
index 51f1315..0000000
--- a/.librarian/state.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:c8612d3fffb3f6a32353b2d1abd16b61e87811866f7ec9d65b59b02eb452a620
-libraries:
- - id: google-cloud-core
- version: 2.5.0
- apis: []
- source_roots:
- - .
- preserve_regex: []
- remove_regex: []
- tag_format: v{version}
\ No newline at end of file
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
deleted file mode 100644
index 1d74695..0000000
--- a/.pre-commit-config.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# See https://pre-commit.com for more information
-# See https://pre-commit.com/hooks.html for more hooks
-repos:
-- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.0.1
- hooks:
- - id: trailing-whitespace
- - id: end-of-file-fixer
- - id: check-yaml
-- repo: https://github.com/psf/black
- rev: 23.7.0
- hooks:
- - id: black
-- repo: https://github.com/pycqa/flake8
- rev: 6.1.0
- hooks:
- - id: flake8
diff --git a/.trampolinerc b/.trampolinerc
deleted file mode 100644
index 0080152..0000000
--- a/.trampolinerc
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Add required env vars here.
-required_envvars+=(
-)
-
-# Add env vars which are passed down into the container here.
-pass_down_envvars+=(
- "NOX_SESSION"
- ###############
- # Docs builds
- ###############
- "STAGING_BUCKET"
- "V2_STAGING_BUCKET"
- ##################
- # Samples builds
- ##################
- "INSTALL_LIBRARY_FROM_SOURCE"
- "RUN_TESTS_SESSION"
- "BUILD_SPECIFIC_GCLOUD_PROJECT"
- # Target directories.
- "RUN_TESTS_DIRS"
- # The nox session to run.
- "RUN_TESTS_SESSION"
-)
-
-# Prevent unintentional override on the default image.
-if [[ "${TRAMPOLINE_IMAGE_UPLOAD:-false}" == "true" ]] && \
- [[ -z "${TRAMPOLINE_IMAGE:-}" ]]; then
- echo "Please set TRAMPOLINE_IMAGE if you want to upload the Docker image."
- exit 1
-fi
-
-# Define the default value if it makes sense.
-if [[ -z "${TRAMPOLINE_IMAGE_UPLOAD:-}" ]]; then
- TRAMPOLINE_IMAGE_UPLOAD=""
-fi
-
-if [[ -z "${TRAMPOLINE_IMAGE:-}" ]]; then
- TRAMPOLINE_IMAGE=""
-fi
-
-if [[ -z "${TRAMPOLINE_DOCKERFILE:-}" ]]; then
- TRAMPOLINE_DOCKERFILE=""
-fi
-
-if [[ -z "${TRAMPOLINE_BUILD_FILE:-}" ]]; then
- TRAMPOLINE_BUILD_FILE=""
-fi
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 7cdf4ae..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,407 +0,0 @@
-# Changelog
-
-[PyPI History][1]
-
-[1]: https://pypi.org/project/google-cloud-core/#history
-
-## [2.5.0](https://github.com/googleapis/python-cloud-core/compare/v2.4.3...v2.5.0) (2025-10-27)
-
-
-### Features
-
-* Add Python 3.14 support ([#333](https://github.com/googleapis/python-cloud-core/issues/333)) ([c26e587](https://github.com/googleapis/python-cloud-core/commit/c26e587a79b1905f4d64e409b853d9e50bbb6c17))
-
-
-### Bug Fixes
-
-* Remove setup.cfg configuration for creating universal wheels ([#332](https://github.com/googleapis/python-cloud-core/issues/332)) ([78ce8a6](https://github.com/googleapis/python-cloud-core/commit/78ce8a6f7c781cf2585131d7961beec9069a206c))
-* Resolve issue where pre-release versions of dependencies are installed ([#329](https://github.com/googleapis/python-cloud-core/issues/329)) ([ab9785d](https://github.com/googleapis/python-cloud-core/commit/ab9785d1bce1d50a03ff41d9b377dc7632772105))
-
-## [2.4.3](https://github.com/googleapis/python-cloud-core/compare/v2.4.2...v2.4.3) (2025-03-10)
-
-
-### Bug Fixes
-
-* Declare support for Python 3.13 ([#326](https://github.com/googleapis/python-cloud-core/issues/326)) ([da34f8a](https://github.com/googleapis/python-cloud-core/commit/da34f8a73b5aaaaee25e3a85da8f13488bdbe29e))
-
-## [2.4.2](https://github.com/googleapis/python-cloud-core/compare/v2.4.1...v2.4.2) (2025-02-20)
-
-
-### Features
-
-* Client should pass client_options.api_key to auth library ([#321](https://github.com/googleapis/python-cloud-core/issues/321)) ([dfac15b](https://github.com/googleapis/python-cloud-core/commit/dfac15b823a27a4c4ce68be9bb8aab6f81de5d83))
-
-## [2.4.1](https://github.com/googleapis/python-cloud-core/compare/v2.4.0...v2.4.1) (2023-12-07)
-
-
-### Bug Fixes
-
-* Fix regression with `google.cloud._helpers._NOW` ([#266](https://github.com/googleapis/python-cloud-core/issues/266)) ([5310aef](https://github.com/googleapis/python-cloud-core/commit/5310aef5b387aecd87d53acb7beb758dc9acb7e3))
-
-## [2.4.0](https://github.com/googleapis/python-cloud-core/compare/v2.3.3...v2.4.0) (2023-12-07)
-
-
-### Features
-
-* Add support for Python 3.12 ([#256](https://github.com/googleapis/python-cloud-core/issues/256)) ([988a8af](https://github.com/googleapis/python-cloud-core/commit/988a8af3fe5cf2c5f37e08c62b10dcd89e6333c1))
-* Introduce compatibility with native namespace packages ([#260](https://github.com/googleapis/python-cloud-core/issues/260)) ([fd1ef6e](https://github.com/googleapis/python-cloud-core/commit/fd1ef6e03252edca3641cc26ec227a00b4f44221))
-
-## [2.3.3](https://github.com/googleapis/python-cloud-core/compare/v2.3.2...v2.3.3) (2023-06-29)
-
-
-### Documentation
-
-* Update docs structure for c.g.c usage ([#226](https://github.com/googleapis/python-cloud-core/issues/226)) ([b805f4a](https://github.com/googleapis/python-cloud-core/commit/b805f4a273de53017f74ca693ba7243fb4694848))
-
-## [2.3.2](https://github.com/googleapis/python-cloud-core/compare/v2.3.1...v2.3.2) (2022-07-15)
-
-
-### Bug Fixes
-
-* require python 3.7+ ([#201](https://github.com/googleapis/python-cloud-core/issues/201)) ([3277c60](https://github.com/googleapis/python-cloud-core/commit/3277c60102803deaae17f665b3f2f80087dd1e0f))
-
-## [2.3.1](https://github.com/googleapis/python-cloud-core/compare/v2.3.0...v2.3.1) (2022-06-03)
-
-
-### Documentation
-
-* fix changelog header to consistent size ([#194](https://github.com/googleapis/python-cloud-core/issues/194)) ([1b79d69](https://github.com/googleapis/python-cloud-core/commit/1b79d69cdb156ae21dddb5ab7579f6c08fd701b8))
-
-## [2.3.0](https://github.com/googleapis/python-cloud-core/compare/v2.2.3...v2.3.0) (2022-04-06)
-
-
-### Features
-
-* allow extra_api_info to be passed to api request ([#183](https://github.com/googleapis/python-cloud-core/issues/183)) ([3f8e058](https://github.com/googleapis/python-cloud-core/commit/3f8e0581e631cde3163278fff326fd4831a75e75))
-
-## [2.2.3](https://github.com/googleapis/python-cloud-core/compare/v2.2.2...v2.2.3) (2022-03-07)
-
-
-### Bug Fixes
-
-* **deps:** require google-api-core>=1.31.5, >=2.3.2 ([#178](https://github.com/googleapis/python-cloud-core/issues/178)) ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
-* **deps:** require google-auth 1.25.0 ([c65ad44](https://github.com/googleapis/python-cloud-core/commit/c65ad44df0b058120aea0686eddeaffbe9bbdda7))
-
-## [2.2.2](https://github.com/googleapis/python-cloud-core/compare/v2.2.1...v2.2.2) (2022-01-17)
-
-
-### Bug Fixes
-
-* correct param type of _ClientFactoryMixin.from_service_account_info method ([#161](https://github.com/googleapis/python-cloud-core/issues/161)) ([24b7de4](https://github.com/googleapis/python-cloud-core/commit/24b7de49943a49e8235f9dbee6b32693deed8c1f))
-
-## [2.2.1](https://www.github.com/googleapis/python-cloud-core/compare/v2.2.0...v2.2.1) (2021-11-10)
-
-
-### Bug Fixes
-
-* correct Client and Connection type annotations ([#156](https://www.github.com/googleapis/python-cloud-core/issues/156)) ([a427681](https://www.github.com/googleapis/python-cloud-core/commit/a427681913ab76379e007a8c3ae519b41e8cee62))
-
-## [2.2.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.1.0...v2.2.0) (2021-11-09)
-
-
-### Features
-
-* add mypy checking + 'py.typed' files ([#149](https://www.github.com/googleapis/python-cloud-core/issues/149)) ([f20ef60](https://www.github.com/googleapis/python-cloud-core/commit/f20ef60abaff13520d2e7b9719741746bd0d1c7b))
-## [2.1.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0...v2.1.0) (2021-10-05)
-
-
-### Features
-
-* add support for Python 3.10 ([#145](https://www.github.com/googleapis/python-cloud-core/issues/145)) ([c9370b9](https://www.github.com/googleapis/python-cloud-core/commit/c9370b9598ae337abf1d9f9c02fdc5390ca83ff7))
-
-## [2.0.0](https://www.github.com/googleapis/python-cloud-core/compare/v2.0.0-b1...v2.0.0) (2021-08-18)
-
-### â BREAKING CHANGES
-
-* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
-
-
-### Miscellaneous Chores
-
-* trigger 2.0.0 release ([#128](https://www.github.com/googleapis/python-cloud-core/issues/128)) ([aead67a](https://www.github.com/googleapis/python-cloud-core/commit/aead67a1244306d518b8ab150e143e5a29e1ab6f))
-
-## [2.0.0b1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.2...v2.0.0b1) (2021-08-02)
-
-
-### â BREAKING CHANGES
-
-* drop python 2.7 support ([#103](https://www.github.com/googleapis/python-cloud-core/issues/103)) ([181d706](https://www.github.com/googleapis/python-cloud-core/commit/181d706e5b44d9d4189c21782551ce85c720d733)), closes [#102](https://www.github.com/googleapis/python-cloud-core/issues/102)
-
-## [1.7.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.1...v1.7.2) (2021-07-27)
-
-
-### Documentation
-
-* add Samples section to CONTRIBUTING.rst ([#119](https://www.github.com/googleapis/python-cloud-core/issues/119)) ([5c3959b](https://www.github.com/googleapis/python-cloud-core/commit/5c3959b3870b8c6ccaf321cc030f4b0cba7ce2ba))
-
-## [1.7.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.7.0...v1.7.1) (2021-06-25)
-
-
-### Bug Fixes
-
-* pass kwargs through in 'from_service_account_json' ([#109](https://www.github.com/googleapis/python-cloud-core/issues/109)) ([efc4bbf](https://www.github.com/googleapis/python-cloud-core/commit/efc4bbfd377e64763c60500407f5c191c03ef85c))
-
-## [1.7.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.6.0...v1.7.0) (2021-06-14)
-
-
-### Features
-
-* add 'Client.close' ([#100](https://www.github.com/googleapis/python-cloud-core/issues/100)) ([7387fc8](https://www.github.com/googleapis/python-cloud-core/commit/7387fc87186defff74612cf85909c7d456155d47))
-* add 'Client.from_service_account_info' factory ([#54](https://www.github.com/googleapis/python-cloud-core/issues/54)) ([7e59360](https://www.github.com/googleapis/python-cloud-core/commit/7e59360a43418947cbbb7608aa23ef5d566c964c))
-
-
-### Documentation
-
-* update python contributing guide ([#80](https://www.github.com/googleapis/python-cloud-core/issues/80)) ([58deef8](https://www.github.com/googleapis/python-cloud-core/commit/58deef8ce2e90415a4c38022e88fdfe25bc666b6))
-
-## [1.6.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.5.0...v1.6.0) (2021-02-02)
-
-
-### Features
-
-* add mtls support ([#75](https://www.github.com/googleapis/python-cloud-core/issues/75)) ([a93129b](https://www.github.com/googleapis/python-cloud-core/commit/a93129bf2fa6fabda3de8b8a342f31a328ccbaf0))
-* infer project from explicit service account creds ([#51](https://www.github.com/googleapis/python-cloud-core/issues/51)) ([2bd41a1](https://www.github.com/googleapis/python-cloud-core/commit/2bd41a177864c7d577155ee3c7e4a1dfd24601dc)), closes [#27](https://www.github.com/googleapis/python-cloud-core/issues/27)
-
-
-### Documentation
-
-* **python:** document adding Python 3.9 support, dropping 3.5 support ([#65](https://www.github.com/googleapis/python-cloud-core/issues/65)) ([860f345](https://www.github.com/googleapis/python-cloud-core/commit/860f345d1f912ffb9a41003159f34ddbebfbd110)), closes [#787](https://www.github.com/googleapis/python-cloud-core/issues/787)
-
-## [1.5.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.4...v1.5.0) (2020-12-14)
-
-
-### Features
-
-* add support for Python 3.9, drop support for Python 3.5 ([#55](https://www.github.com/googleapis/python-cloud-core/issues/55)) ([ddf7ce5](https://www.github.com/googleapis/python-cloud-core/commit/ddf7ce5cc1be78e580d6450043bace71e789e933))
-
-## [1.4.4](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.3...v1.4.4) (2020-11-30)
-
-
-### Dependencies
-
-* require `six>=1.12.0` and `google-api-core>=1.21.0` ([#46](https://www.github.com/googleapis/python-cloud-core/issues/46)) ([a97b9ca](https://www.github.com/googleapis/python-cloud-core/commit/a97b9cae6d3b8f0c723dfa825f1b76efc2318f80))
-
-## [1.4.3](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.2...v1.4.3) (2020-10-06)
-
-
-### Bug Fixes
-
-* avoid using 'pkg_resources' to determine version ([#40](https://www.github.com/googleapis/python-cloud-core/issues/40)) ([568578d](https://www.github.com/googleapis/python-cloud-core/commit/568578d33f71117564ee9212daad72d4e2b739a6)), closes [#39](https://www.github.com/googleapis/python-cloud-core/issues/39)
-
-## [1.4.2](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.1...v1.4.2) (2020-09-29)
-
-
-### Bug Fixes
-
-* handle query_params tuples in JSONConnection.build_api_url ([#34](https://www.github.com/googleapis/python-cloud-core/issues/34)) ([6a9adb3](https://www.github.com/googleapis/python-cloud-core/commit/6a9adb3dddd5f6d82032aba5efd673ea0641593c))
-
-
-### Performance Improvements
-
-* use prettyPrint=false by default ([#28](https://www.github.com/googleapis/python-cloud-core/issues/28)) ([c407b5d](https://www.github.com/googleapis/python-cloud-core/commit/c407b5d617c04affbdb4f444c188edffb25d4336))
-
-## [1.4.1](https://www.github.com/googleapis/python-cloud-core/compare/v1.4.0...v1.4.1) (2020-08-06)
-
-
-### Bug Fixes
-
-* **deps:** fix missing scopes attribute in client_options ([#24](https://www.github.com/googleapis/python-cloud-core/issues/24)) ([a0e7730](https://www.github.com/googleapis/python-cloud-core/commit/a0e773057a59b573a760d38710c52a8747fceb1f)), closes [/github.com/googleapis/python-cloud-core/issues/23#issuecomment-669504557](https://www.github.com/googleapis//github.com/googleapis/python-cloud-core/issues/23/issues/issuecomment-669504557)
-
-
-### Documentation
-
-* update docs build (via synth) ([#14](https://www.github.com/googleapis/python-cloud-core/issues/14)) ([f1a95ce](https://www.github.com/googleapis/python-cloud-core/commit/f1a95ce89c25f5297470299ca1ef7e1e05a9e99f))
-
-
-## 1.4.2rc2
-
-09-24-2020 09:29 PDT
-
-### Implementation Changes
-
-- fix: handle query_params tuples in JSONConnection.build_api_url ([#34](https://github.com/googleapis/python-cloud-core/pull/34))
-
-### Internal / Testing Changes
-
-- chore: add default CODEOWNERS ([#33](https://github.com/googleapis/python-cloud-core/pull/33))
-
-
-## 1.4.2rc1
-
-09-21-2020 14:45 PDT
-
-
-### Implementation Changes
-
-- perf: use prettyPrint=false by default ([#28](https://github.com/googleapis/python-cloud-core/pull/28))
-
-### Internal / Testing Changes
-
-- test: fix mock credentials to allow for quota projects ([#29](https://github.com/googleapis/python-cloud-core/pull/29))
-
-## [1.4.0](https://www.github.com/googleapis/python-cloud-core/compare/v1.3.0...v1.4.0) (2020-08-04)
-
-
-### Features
-
-* add quota_project, credentials file, and scopes options ([#15](https://www.github.com/googleapis/python-cloud-core/issues/15)) ([a1e11e1](https://www.github.com/googleapis/python-cloud-core/commit/a1e11e1f81a2a7e17b87fe4321eb497f7f3ccdc5))
-* add support for Python 3.8 ([#17](https://www.github.com/googleapis/python-cloud-core/issues/17)) ([f727aba](https://www.github.com/googleapis/python-cloud-core/commit/f727aba432d4726cce72da5f74e8be6adb945a80)), closes [#16](https://www.github.com/googleapis/python-cloud-core/issues/16)
-
-## 1.3.0
-
-01-31-2020 13:30 PST
-
-### New Features
-- Change default api_request() timeout to non-None ([#10219](https://github.com/googleapis/google-cloud-python/pull/10219))
-
-## 1.2.0
-
-01-14-2020 13:22 PST
-
-### Dependencies
-
-- chores(core): bump api-core dependency to 1.16.0 ([#10111](https://github.com/GoogleCloudPlatform/google-cloud-python/pull/10111))
-
-## 1.1.0
-
-12-04-2019 13:56 PST
-
-
-### New Features
-
-- Add timeout param to `JSONConnection.api_request()`. ([#9915](https://github.com/googleapis/google-cloud-python/pull/9915))
-
-
-### Documentation
-
-- Add Python 2 sunset banner to documentation. ([#9036](https://github.com/googleapis/google-cloud-python/pull/9036))
-- Fix intersphinx reference to requests. ([#9294](https://github.com/googleapis/google-cloud-python/pull/9294))
-- Fix Google Auth Credentials help link now. ([#9260](https://github.com/googleapis/google-cloud-python/pull/9260))
-- Remove CI for gh-pages, use googleapis.dev for api_core refs. ([#9085](https://github.com/googleapis/google-cloud-python/pull/9085))
-- Remove compatability badges from READMEs. ([#9035](https://github.com/googleapis/google-cloud-python/pull/9035))
-- Update intersphinx mapping for requests. ([#8805](https://github.com/googleapis/google-cloud-python/pull/8805))
-
-## 1.0.3
-
-07-26-2019 10:34 PDT
-
-
-### Implementation Changes
-- Make `Client.build_api_url` an instance method. ([#8747](https://github.com/googleapis/google-cloud-python/pull/8747))
-
-### Dependencies
-- Bump minimum version for google-api-core to 1.14.0. ([#8709](https://github.com/googleapis/google-cloud-python/pull/8709))
-
-### Documentation
-- Linkify the PR in the change log. ([#8790](https://github.com/googleapis/google-cloud-python/pull/8790))
-- Link to googleapis.dev documentation in READMEs. ([#8705](https://github.com/googleapis/google-cloud-python/pull/8705))
-- Add compatibility check badges to READMEs. ([#8288](https://github.com/googleapis/google-cloud-python/pull/8288))
-- Removing typing information for `**kwargs` in order to not conflict with type checkers. ([#8546](https://github.com/googleapis/google-cloud-python/pull/8546))
-
-### Internal / Testing Changes
-- Add nox session 'docs' to remaining manual clients. ([#8478](https://github.com/googleapis/google-cloud-python/pull/8478))
-- Add docs job to publish to googleapis.dev. ([#8464](https://github.com/googleapis/google-cloud-python/pull/8464))
-
-## 1.0.2
-
-06/11/2019 15:19 PDT
-
-### Internal Changes
-- Prevent requests from hanging on SSL handshake issue by adding a max timeout of 5 minutes. ([#8207](https://github.com/googleapis/google-cloud-python/pull/8207))
-
-## 1.0.1
-
-05-28-2019 11:22 PDT
-
-### Dependencies
-- Pin `grpcio < 2.0dev`. ([#8182](https://github.com/googleapis/google-cloud-python/pull/8182))
-
-## 1.0.0
-
-05-15-2019 13:09 PDT
-
-
-### Implementation Changes
-- Remove classifier for Python 3.4 for end-of-life. ([#7535](https://github.com/googleapis/google-cloud-python/pull/7535))
-
-### New Features
-- Refactor `client_info` support. ([#7849](https://github.com/googleapis/google-cloud-python/pull/7849))
-
-### Dependencies
-- Update dep on `api_core` >= 1.11.0. ([#7986](https://github.com/googleapis/google-cloud-python/pull/7986))
-
-### Documentation
-- Updated client library documentation URLs. ([#7307](https://github.com/googleapis/google-cloud-python/pull/7307))
-
-## 0.29.1
-
-12-17-2018 16:35 PST
-
-
-### Documentation
-- Document Python 2 deprecation ([#6910](https://github.com/googleapis/google-cloud-python/pull/6910))
-
-## 0.29.0
-
-12-03-2018 15:54 PST
-
-### Breaking Changes
-- Remove iam module from core. This module is now available as part of google-api-core. ([#6775](https://github.com/googleapis/google-cloud-python/pull/6775))
-
-### Implementation Changes
-- Fix `_time_from_iso8601_time_naive` for values with micros. ([#5756](https://github.com/googleapis/google-cloud-python/pull/5756))
-- Import stdlib ABCs from `collections.abc` rather than `collections`. ([#6451](https://github.com/googleapis/google-cloud-python/pull/6451))
-
-### Dependencies
-- Bump minimum `api_core` version to 1.0.0. ([#6391](https://github.com/googleapis/google-cloud-python/pull/6391))
-
-### Internal / Testing Changes
-- Blacken api_core and core. ([#6668](https://github.com/googleapis/google-cloud-python/pull/6668))
-- Add / fix badges for PyPI / versions. ([#6158](https://github.com/googleapis/google-cloud-python/pull/6158))
-- Use new Nox. ([#6175](https://github.com/googleapis/google-cloud-python/pull/6175))
-- Use inplace installs for nox ([#5865](https://github.com/googleapis/google-cloud-python/pull/5865))
-- Fix bad trove classifier.
-- Add Test runs for Python 3.7 and remove 3.4 ([#5295](https://github.com/googleapis/google-cloud-python/pull/5295))
-
-## 0.28.1
-
-### Dependencies
-
-- Update dependency range for api-core to include v1.0.0 releases (#4944)
-- Requiring 'grpcio >= 1.8.2'. (#4642)
-
-### Documentation
-
-- DefaultCredentialsError could be raised if credentials not supplied (#4688)
-- Unreachable links in the readme files have been fixed. (#4406)
-- Fixing "Fore" -> "For" typo in README docs. (#4317)
-
-### Testing and internal changes
-
-- Re-enable lint for tests, remove usage of pylint (#4921)
-- Normalize all setup.py files (#4909)
-- Making a `nox -s default` session for all packages. (#4324)
-- Shorten test names (#4321)
-
-## 0.28.0
-
-### Notable Implementation Changes
-
-- A large portion of the implementation has moved into
- [`google-api-core`][2] (#4022, #4041, #4057, #4067,
- #4069, #4079, #4081, #4166, #4221)
-
-### Dependencies
-
-- Explicit depending on `google-api-core` and upgrading to
- `grpcio >= 1.7.0` (see #4096, #4280 and
- https://github.com/grpc/grpc/issues/12455)
-
-### Interface changes / additions
-
-- Rename `google.cloud.obselete` module to
- `obsolete` (#3913, h/t to @dimaqq)
-
-PyPI: https://pypi.org/project/google-cloud-core/0.28.0/
-
-[2]: https://pypi.org/project/google-api-core/
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 039f436..0000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,95 +0,0 @@
-
-# Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, gender identity and expression, level of
-experience, education, socio-economic status, nationality, personal appearance,
-race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, or to ban temporarily or permanently any
-contributor for other behaviors that they deem inappropriate, threatening,
-offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-This Code of Conduct also applies outside the project spaces when the Project
-Steward has a reasonable belief that an individual's behavior may have a
-negative impact on the project or its community.
-
-## Conflict Resolution
-
-We do not believe that all conflict is bad; healthy debate and disagreement
-often yield positive results. However, it is never okay to be disrespectful or
-to engage in behavior that violates the projectâs code of conduct.
-
-If you see someone violating the code of conduct, you are encouraged to address
-the behavior directly with those involved. Many issues can be resolved quickly
-and easily, and this gives people more control over the outcome of their
-dispute. If you are unable to resolve the matter for any reason, or if the
-behavior is threatening or harassing, report it. We are dedicated to providing
-an environment where participants feel welcome and safe.
-
-
-Reports should be directed to *googleapis-stewards@google.com*, the
-Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Stewardâs duty to
-receive and address reported violations of the code of conduct. They will then
-work with a committee consisting of representatives from the Open Source
-Programs Office and the Google Open Source Strategy team. If for any reason you
-are uncomfortable reaching out to the Project Steward, please email
-opensource@google.com.
-
-We will investigate every complaint, but you may not receive a direct response.
-We will use our discretion in determining when and how to follow up on reported
-incidents, which may range from not taking action to permanent expulsion from
-the project and project-sponsored spaces. We will notify the accused of the
-report and provide them an opportunity to discuss it before any action is taken.
-The identity of the reporter will be omitted from the details of the report
-supplied to the accused. In potentially harmful situations, such as ongoing
-harassment or threats to anyone's safety, we may take action without notice.
-
-## Attribution
-
-This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
-available at
-https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
\ No newline at end of file
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
deleted file mode 100644
index 5f1f417..0000000
--- a/CONTRIBUTING.rst
+++ /dev/null
@@ -1,285 +0,0 @@
-.. Generated by synthtool. DO NOT EDIT!
-############
-Contributing
-############
-
-#. **Please sign one of the contributor license agreements below.**
-#. Fork the repo, develop and test your code changes, add docs.
-#. Make sure that your commit messages clearly describe the changes.
-#. Send a pull request. (Please Read: `Faster Pull Request Reviews`_)
-
-.. _Faster Pull Request Reviews: https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
-
-.. contents:: Here are some guidelines for hacking on the Google Cloud Client libraries.
-
-***************
-Adding Features
-***************
-
-In order to add a feature:
-
-- The feature must be documented in both the API and narrative
- documentation.
-
-- The feature must work fully on the following CPython versions:
- 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows.
-
-- The feature must not add unnecessary dependencies (where
- "unnecessary" is of course subjective, but new dependencies should
- be discussed).
-
-****************************
-Using a Development Checkout
-****************************
-
-You'll have to create a development environment using a Git checkout:
-
-- While logged into your GitHub account, navigate to the
- ``python-cloud-core`` `repo`_ on GitHub.
-
-- Fork and clone the ``python-cloud-core`` repository to your GitHub account by
- clicking the "Fork" button.
-
-- Clone your fork of ``python-cloud-core`` from your GitHub account to your local
- computer, substituting your account username and specifying the destination
- as ``hack-on-python-cloud-core``. E.g.::
-
- $ cd ${HOME}
- $ git clone git@github.com:USERNAME/python-cloud-core.git hack-on-python-cloud-core
- $ cd hack-on-python-cloud-core
- # Configure remotes such that you can pull changes from the googleapis/python-cloud-core
- # repository into your local repository.
- $ git remote add upstream git@github.com:googleapis/python-cloud-core.git
- # fetch and merge changes from upstream into main
- $ git fetch upstream
- $ git merge upstream/main
-
-Now your local repo is set up such that you will push changes to your GitHub
-repo, from which you can submit a pull request.
-
-To work on the codebase and run the tests, we recommend using ``nox``,
-but you can also use a ``virtualenv`` of your own creation.
-
-.. _repo: https://github.com/googleapis/python-cloud-core
-
-Using ``nox``
-=============
-
-We use `nox `__ to instrument our tests.
-
-- To test your changes, run unit tests with ``nox``::
- $ nox -s unit
-
-- To run a single unit test::
-
- $ nox -s unit-3.14 -- -k
-
-
- .. note::
-
- The unit tests and system tests are described in the
- ``noxfile.py`` files in each directory.
-
-.. nox: https://pypi.org/project/nox/
-
-*****************************************
-I'm getting weird errors... Can you help?
-*****************************************
-
-If the error mentions ``Python.h`` not being found,
-install ``python-dev`` and try again.
-On Debian/Ubuntu::
-
- $ sudo apt-get install python-dev
-
-************
-Coding Style
-************
-- We use the automatic code formatter ``black``. You can run it using
- the nox session ``blacken``. This will eliminate many lint errors. Run via::
-
- $ nox -s blacken
-
-- PEP8 compliance is required, with exceptions defined in the linter configuration.
- If you have ``nox`` installed, you can test that you have not introduced
- any non-compliant code via::
-
- $ nox -s lint
-
-- In order to make ``nox -s lint`` run faster, you can set some environment
- variables::
-
- export GOOGLE_CLOUD_TESTING_REMOTE="upstream"
- export GOOGLE_CLOUD_TESTING_BRANCH="main"
-
- By doing this, you are specifying the location of the most up-to-date
- version of ``python-cloud-core``. The
- remote name ``upstream`` should point to the official ``googleapis``
- checkout and the branch should be the default branch on that remote (``main``).
-
-- This repository contains configuration for the
- `pre-commit `__ tool, which automates checking
- our linters during a commit. If you have it installed on your ``$PATH``,
- you can enable enforcing those checks via:
-
-.. code-block:: bash
-
- $ pre-commit install
- pre-commit installed at .git/hooks/pre-commit
-
-Exceptions to PEP8:
-
-- Many unit tests use a helper method, ``_call_fut`` ("FUT" is short for
- "Function-Under-Test"), which is PEP8-incompliant, but more readable.
- Some also use a local variable, ``MUT`` (short for "Module-Under-Test").
-
-********************
-Running System Tests
-********************
-
-- To run system tests, you can execute::
-
- # Run all system tests
- $ nox -s system
-
- # Run a single system test
- $ nox -s system-3.8 -- -k
-
-
- .. note::
-
- System tests are only configured to run under Python 3.8.
- For expediency, we do not run them in older versions of Python 3.
-
- This alone will not run the tests. You'll need to change some local
- auth settings and change some configuration in your project to
- run all the tests.
-
-- System tests will be run against an actual project. You should use local credentials from gcloud when possible. See `Best practices for application authentication `__. Some tests require a service account. For those tests see `Authenticating as a service account `__.
-
-*************
-Test Coverage
-*************
-
-- The codebase *must* have 100% test statement coverage after each commit.
- You can test coverage via ``nox -s cover``.
-
-******************************************************
-Documentation Coverage and Building HTML Documentation
-******************************************************
-
-If you fix a bug, and the bug requires an API or behavior modification, all
-documentation in this package which references that API or behavior must be
-changed to reflect the bug fix, ideally in the same commit that fixes the bug
-or adds the feature.
-
-Build the docs via:
-
- $ nox -s docs
-
-*************************
-Samples and code snippets
-*************************
-
-Code samples and snippets live in the `samples/` catalogue. Feel free to
-provide more examples, but make sure to write tests for those examples.
-Each folder containing example code requires its own `noxfile.py` script
-which automates testing. If you decide to create a new folder, you can
-base it on the `samples/snippets` folder (providing `noxfile.py` and
-the requirements files).
-
-The tests will run against a real Google Cloud Project, so you should
-configure them just like the System Tests.
-
-- To run sample tests, you can execute::
-
- # Run all tests in a folder
- $ cd samples/snippets
- $ nox -s py-3.8
-
- # Run a single sample test
- $ cd samples/snippets
- $ nox -s py-3.8 -- -k
-
-********************************************
-Note About ``README`` as it pertains to PyPI
-********************************************
-
-The `description on PyPI`_ for the project comes directly from the
-``README``. Due to the reStructuredText (``rst``) parser used by
-PyPI, relative links which will work on GitHub (e.g. ``CONTRIBUTING.rst``
-instead of
-``https://github.com/googleapis/python-cloud-core/blob/main/CONTRIBUTING.rst``)
-may cause problems creating links or rendering the description.
-
-.. _description on PyPI: https://pypi.org/project/google-cloud-core
-
-
-*************************
-Supported Python Versions
-*************************
-
-We support:
-
-- `Python 3.8`_
-- `Python 3.9`_
-- `Python 3.10`_
-- `Python 3.11`_
-- `Python 3.12`_
-- `Python 3.13`_
-- `Python 3.14`_
-
-.. _Python 3.8: https://docs.python.org/3.8/
-.. _Python 3.9: https://docs.python.org/3.9/
-.. _Python 3.10: https://docs.python.org/3.10/
-.. _Python 3.11: https://docs.python.org/3.11/
-.. _Python 3.12: https://docs.python.org/3.12/
-.. _Python 3.13: https://docs.python.org/3.13/
-.. _Python 3.14: https://docs.python.org/3.14/
-
-
-Supported versions can be found in our ``noxfile.py`` `config`_.
-
-.. _config: https://github.com/googleapis/python-cloud-core/blob/main/noxfile.py
-
-
-We also explicitly decided to support Python 3 beginning with version 3.8.
-Reasons for this include:
-
-- Encouraging use of newest versions of Python 3
-- Taking the lead of `prominent`_ open-source `projects`_
-- `Unicode literal support`_ which allows for a cleaner codebase that
- works in both Python 2 and Python 3
-
-.. _prominent: https://docs.djangoproject.com/en/1.9/faq/install/#what-python-version-can-i-use-with-django
-.. _projects: http://flask.pocoo.org/docs/0.10/python3/
-.. _Unicode literal support: https://www.python.org/dev/peps/pep-0414/
-
-**********
-Versioning
-**********
-
-This library follows `Semantic Versioning`_.
-
-.. _Semantic Versioning: http://semver.org/
-
-Some packages are currently in major version zero (``0.y.z``), which means that
-anything may change at any time and the public API should not be considered
-stable.
-
-******************************
-Contributor License Agreements
-******************************
-
-Before we can accept your pull requests you'll need to sign a Contributor
-License Agreement (CLA):
-
-- **If you are an individual writing original source code** and **you own the
- intellectual property**, then you'll need to sign an
- `individual CLA `__.
-- **If you work for a company that wants to allow you to contribute your work**,
- then you'll need to sign a
- `corporate CLA `__.
-
-You can sign these electronically (just scroll to the bottom). After that,
-we'll be able to accept your pull requests.
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index d6814cd..0000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generated by synthtool. DO NOT EDIT!
-include README.rst LICENSE
-recursive-include google *.json *.proto py.typed
-recursive-include tests *
-global-exclude *.py[co]
-global-exclude __pycache__
-
-# Exclude scripts for samples readmegen
-prune scripts/readme-gen
diff --git a/README.rst b/README.rst
index 4a3b2b3..3f2bd1b 100644
--- a/README.rst
+++ b/README.rst
@@ -1,3 +1,8 @@
+:**NOTE**: **This github repository is archived. The repository contents and history have moved to** `google-cloud-python`_.
+
+.. _google-cloud-python: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-core
+
+
Core Helpers for Google Cloud Python Client Library
===================================================
diff --git a/docs/README.rst b/docs/README.rst
deleted file mode 120000
index 89a0106..0000000
--- a/docs/README.rst
+++ /dev/null
@@ -1 +0,0 @@
-../README.rst
\ No newline at end of file
diff --git a/docs/_static/custom.css b/docs/_static/custom.css
deleted file mode 100644
index b0a2954..0000000
--- a/docs/_static/custom.css
+++ /dev/null
@@ -1,20 +0,0 @@
-div#python2-eol {
- border-color: red;
- border-width: medium;
-}
-
-/* Ensure minimum width for 'Parameters' / 'Returns' column */
-dl.field-list > dt {
- min-width: 100px
-}
-
-/* Insert space between methods for readability */
-dl.method {
- padding-top: 10px;
- padding-bottom: 10px
-}
-
-/* Insert empty space between classes */
-dl.class {
- padding-bottom: 50px
-}
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
deleted file mode 100644
index 6316a53..0000000
--- a/docs/_templates/layout.html
+++ /dev/null
@@ -1,50 +0,0 @@
-
-{% extends "!layout.html" %}
-{%- block content %}
-{%- if theme_fixed_sidebar|lower == 'true' %}
-
- {{ sidebar() }}
- {%- block document %}
-
- {%- if render_sidebar %}
-
- {%- endif %}
-
- {%- block relbar_top %}
- {%- if theme_show_relbar_top|tobool %}
-
-
- {{- rellink_markup () }}
-
- {%- endif %}
- {% endblock %}
-
-
-
- As of January 1, 2020 this library no longer supports Python 2 on the latest released version.
- Library versions released prior to that date will continue to be available. For more information please
- visit
Python 2 support on Google Cloud .
-
- {% block body %} {% endblock %}
-
-
- {%- block relbar_bottom %}
- {%- if theme_show_relbar_bottom|tobool %}
-
-
- {{- rellink_markup () }}
-
- {%- endif %}
- {% endblock %}
-
- {%- if render_sidebar %}
-
- {%- endif %}
-
- {%- endblock %}
-
-
-{%- else %}
-{{ super() }}
-{%- endif %}
-{%- endblock %}
diff --git a/docs/changelog.md b/docs/changelog.md
deleted file mode 120000
index 04c99a5..0000000
--- a/docs/changelog.md
+++ /dev/null
@@ -1 +0,0 @@
-../CHANGELOG.md
\ No newline at end of file
diff --git a/docs/client/client.rst b/docs/client/client.rst
deleted file mode 100644
index 3d16e2a..0000000
--- a/docs/client/client.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Base Client
-===========
-
-.. automodule:: google.cloud.client
- :members:
- :show-inheritance:
diff --git a/docs/conf.py b/docs/conf.py
deleted file mode 100644
index c1f73e9..0000000
--- a/docs/conf.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# google-cloud-core documentation build configuration file
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys
-import os
-import shlex
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.insert(0, os.path.abspath(".."))
-
-# For plugins that can not read conf.py.
-# See also: https://github.com/docascode/sphinx-docfx-yaml/issues/85
-sys.path.insert(0, os.path.abspath("."))
-
-__version__ = ""
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-needs_sphinx = "1.5.5"
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- "sphinx.ext.autodoc",
- "sphinx.ext.autosummary",
- "sphinx.ext.intersphinx",
- "sphinx.ext.coverage",
- "sphinx.ext.doctest",
- "sphinx.ext.napoleon",
- "sphinx.ext.todo",
- "sphinx.ext.viewcode",
- "recommonmark",
-]
-
-# autodoc/autosummary flags
-autoclass_content = "both"
-autodoc_default_options = {"members": True}
-autosummary_generate = True
-
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ["_templates"]
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-# source_suffix = ['.rst', '.md']
-source_suffix = [".rst", ".md"]
-
-# The encoding of source files.
-# source_encoding = 'utf-8-sig'
-
-# The root toctree document.
-root_doc = "index"
-
-# General information about the project.
-project = "google-cloud-core"
-copyright = "2019, Google"
-author = "Google APIs"
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The full version, including alpha/beta/rc tags.
-release = __version__
-# The short X.Y version.
-version = ".".join(release.split(".")[0:2])
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-# today = ''
-# Else, today_fmt is used as the format for a strftime call.
-# today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = [
- "_build",
- "**/.nox/**/*",
- "samples/AUTHORING_GUIDE.md",
- "samples/CONTRIBUTING.md",
- "samples/snippets/README.rst",
-]
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-# default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-# add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-# add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-# show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = "sphinx"
-
-# A list of ignored prefixes for module index sorting.
-# modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-# keep_warnings = False
-
-# If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = True
-
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = "alabaster"
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-html_theme_options = {
- "description": "Google Cloud Client Libraries for google-cloud-core",
- "github_user": "googleapis",
- "github_repo": "python-cloud-core",
- "github_banner": True,
- "font_family": "'Roboto', Georgia, sans",
- "head_font_family": "'Roboto', Georgia, serif",
- "code_font_family": "'Roboto Mono', 'Consolas', monospace",
-}
-
-# Add any paths that contain custom themes here, relative to this directory.
-# html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# " v documentation".
-# html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-# html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-# html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-# html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ["_static"]
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-# html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-# html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-# html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-# html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-# html_additional_pages = {}
-
-# If false, no module index is generated.
-# html_domain_indices = True
-
-# If false, no index is generated.
-# html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-# html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-# html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-# html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-# html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-# html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-# html_file_suffix = None
-
-# Language to be used for generating the HTML full-text search index.
-# Sphinx supports the following languages:
-# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
-# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
-# html_search_language = 'en'
-
-# A dictionary with options for the search language support, empty by default.
-# Now only 'ja' uses this config value
-# html_search_options = {'type': 'default'}
-
-# The name of a javascript file (relative to the configuration directory) that
-# implements a search results scorer. If empty, the default will be used.
-# html_search_scorer = 'scorer.js'
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = "google-cloud-core-doc"
-
-# -- Options for warnings ------------------------------------------------------
-
-
-suppress_warnings = [
- # Temporarily suppress this to avoid "more than one target found for
- # cross-reference" warning, which are intractable for us to avoid while in
- # a mono-repo.
- # See https://github.com/sphinx-doc/sphinx/blob
- # /2a65ffeef5c107c19084fabdd706cdff3f52d93c/sphinx/domains/python.py#L843
- "ref.python"
-]
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #'papersize': 'letterpaper',
- # The font size ('10pt', '11pt' or '12pt').
- #'pointsize': '10pt',
- # Additional stuff for the LaTeX preamble.
- #'preamble': '',
- # Latex figure (float) alignment
- #'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- (
- root_doc,
- "google-cloud-core.tex",
- "google-cloud-core Documentation",
- author,
- "manual",
- )
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-# latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-# latex_use_parts = False
-
-# If true, show page references after internal links.
-# latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-# latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-# latex_appendices = []
-
-# If false, no module index is generated.
-# latex_domain_indices = True
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- (
- root_doc,
- "google-cloud-core",
- "google-cloud-core Documentation",
- [author],
- 1,
- )
-]
-
-# If true, show URL addresses after external links.
-# man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- (
- root_doc,
- "google-cloud-core",
- "google-cloud-core Documentation",
- author,
- "google-cloud-core",
- "google-cloud-core Library",
- "APIs",
- )
-]
-
-# Documents to append as an appendix to all manuals.
-# texinfo_appendices = []
-
-# If false, no module index is generated.
-# texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-# texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-# texinfo_no_detailmenu = False
-
-
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {
- "python": ("https://python.readthedocs.org/en/latest/", None),
- "google-auth": ("https://googleapis.dev/python/google-auth/latest/", None),
- "google.api_core": (
- "https://googleapis.dev/python/google-api-core/latest/",
- None,
- ),
- "grpc": ("https://grpc.github.io/grpc/python/", None),
- "proto-plus": ("https://proto-plus-python.readthedocs.io/en/latest/", None),
- "protobuf": ("https://googleapis.dev/python/protobuf/latest/", None),
-}
-
-
-# Napoleon settings
-napoleon_google_docstring = True
-napoleon_numpy_docstring = True
-napoleon_include_private_with_doc = False
-napoleon_include_special_with_doc = True
-napoleon_use_admonition_for_examples = False
-napoleon_use_admonition_for_notes = False
-napoleon_use_admonition_for_references = False
-napoleon_use_ivar = False
-napoleon_use_param = True
-napoleon_use_rtype = True
diff --git a/docs/config.rst b/docs/config.rst
deleted file mode 100644
index b98922a..0000000
--- a/docs/config.rst
+++ /dev/null
@@ -1,68 +0,0 @@
-Configuration
-*************
-
-Overview
-========
-
-Use service client objects to configure your applications.
-
-For example:
-
-.. code-block:: python
-
- >>> from google.cloud import bigquery
- >>> client = bigquery.Client()
-
-When creating a client in this way, the project ID will be determined by
-searching these locations in the following order.
-
-* GOOGLE_CLOUD_PROJECT environment variable
-* GOOGLE_APPLICATION_CREDENTIALS JSON file
-* Default service configuration path from
- ``$ gcloud beta auth application-default login``.
-* Google App Engine application ID
-* Google Compute Engine project ID (from metadata server)
-
-You can override the detection of your default project by setting the
- ``project`` parameter when creating client objects.
-
-.. code-block:: python
-
- >>> from google.cloud import bigquery
- >>> client = bigquery.Client(project='my-project')
-
-You can see what project ID a client is referencing by accessing the ``project``
-property on the client object.
-
-.. code-block:: python
-
- >>> client.project
- u'my-project'
-
-Authentication
-==============
-
-The authentication credentials can be implicitly determined from the
-environment or directly. See `Authentication `_.
-
-Logging in via ``gcloud beta auth application-default login`` will
-automatically configure a JSON key file with your default project ID and
-credentials.
-
-Setting the ``GOOGLE_APPLICATION_CREDENTIALS`` and ``GOOGLE_CLOUD_PROJECT``
-environment variables will override the automatically configured credentials.
-
-You can change your default project ID to ``my-new-default-project`` by
-using the ``gcloud`` CLI tool to change the configuration.
-
-.. code-block:: bash
-
- $ gcloud config set project my-new-default-project
-
-
-Environment Variables
-=====================
-
-.. automodule:: google.cloud.environment_vars
- :members:
- :show-inheritance:
diff --git a/docs/index.rst b/docs/index.rst
deleted file mode 100644
index 3441157..0000000
--- a/docs/index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-.. include:: README.rst
-
-The ``google-cloud-core`` package contains helpers common to all
-``google-cloud-*`` packages. In an attempt to reach a stable API,
-much of the functionality has been split out into a new package
-``google-api-core``.
-
-
-Core
-====
-
-.. toctree::
- config
- client/client
-
-Changelog
-=========
-
-.. toctree::
- :maxdepth: 2
-
- changelog
-
-.. toctree::
- :hidden:
-
- summary_overview.md
diff --git a/docs/summary_overview.md b/docs/summary_overview.md
deleted file mode 100644
index fa1b054..0000000
--- a/docs/summary_overview.md
+++ /dev/null
@@ -1,22 +0,0 @@
-[
-This is a templated file. Adding content to this file may result in it being
-reverted. Instead, if you want to place additional content, create an
-"overview_content.md" file in `docs/` directory. The Sphinx tool will
-pick up on the content and merge the content.
-]: #
-
-# Google API client core library API
-
-Overview of the APIs available for Google API client core library API.
-
-## All entries
-
-Classes, methods and properties & attributes for
-Google API client core library API.
-
-[classes](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_class.html)
-
-[methods](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_method.html)
-
-[properties and
-attributes](https://cloud.google.com/python/docs/reference/google-cloud-core/latest/summary_property.html)
diff --git a/google/cloud/_helpers/__init__.py b/google/cloud/_helpers/__init__.py
deleted file mode 100644
index 7a198cc..0000000
--- a/google/cloud/_helpers/__init__.py
+++ /dev/null
@@ -1,590 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Shared helpers for Google Cloud packages.
-
-This module is not part of the public API surface.
-"""
-
-from __future__ import absolute_import
-
-import calendar
-import datetime
-import http.client
-import os
-import re
-from threading import local as Local
-from typing import Union
-
-import google.auth
-import google.auth.transport.requests
-from google.protobuf import duration_pb2
-from google.protobuf import timestamp_pb2
-
-try:
- import grpc
- import google.auth.transport.grpc
-except ImportError: # pragma: NO COVER
- grpc = None
-
-# `google.cloud._helpers._NOW` is deprecated
-_NOW = datetime.datetime.utcnow
-UTC = datetime.timezone.utc # Singleton instance to be used throughout.
-_EPOCH = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
-
-_RFC3339_MICROS = "%Y-%m-%dT%H:%M:%S.%fZ"
-_RFC3339_NO_FRACTION = "%Y-%m-%dT%H:%M:%S"
-_TIMEONLY_W_MICROS = "%H:%M:%S.%f"
-_TIMEONLY_NO_FRACTION = "%H:%M:%S"
-# datetime.strptime cannot handle nanosecond precision: parse w/ regex
-_RFC3339_NANOS = re.compile(
- r"""
- (?P
- \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} # YYYY-MM-DDTHH:MM:SS
- )
- ( # Optional decimal part
- \. # decimal point
- (?P\d{1,9}) # nanoseconds, maybe truncated
- )?
- Z # Zulu
-""",
- re.VERBOSE,
-)
-# NOTE: Catching this ImportError is a workaround for GAE not supporting the
-# "pwd" module which is imported lazily when "expanduser" is called.
-_USER_ROOT: Union[str, None]
-try:
- _USER_ROOT = os.path.expanduser("~")
-except ImportError: # pragma: NO COVER
- _USER_ROOT = None
-_GCLOUD_CONFIG_FILE = os.path.join("gcloud", "configurations", "config_default")
-_GCLOUD_CONFIG_SECTION = "core"
-_GCLOUD_CONFIG_KEY = "project"
-
-
-class _LocalStack(Local):
- """Manage a thread-local LIFO stack of resources.
-
- Intended for use in :class:`google.cloud.datastore.batch.Batch.__enter__`,
- :class:`google.cloud.storage.batch.Batch.__enter__`, etc.
- """
-
- def __init__(self):
- super(_LocalStack, self).__init__()
- self._stack = []
-
- def __iter__(self):
- """Iterate the stack in LIFO order."""
- return iter(reversed(self._stack))
-
- def push(self, resource):
- """Push a resource onto our stack."""
- self._stack.append(resource)
-
- def pop(self):
- """Pop a resource from our stack.
-
- :rtype: object
- :returns: the top-most resource, after removing it.
- :raises IndexError: if the stack is empty.
- """
- return self._stack.pop()
-
- @property
- def top(self):
- """Get the top-most resource
-
- :rtype: object
- :returns: the top-most item, or None if the stack is empty.
- """
- if self._stack:
- return self._stack[-1]
-
-
-def _ensure_tuple_or_list(arg_name, tuple_or_list):
- """Ensures an input is a tuple or list.
-
- This effectively reduces the iterable types allowed to a very short
- allowlist: list and tuple.
-
- :type arg_name: str
- :param arg_name: Name of argument to use in error message.
-
- :type tuple_or_list: sequence of str
- :param tuple_or_list: Sequence to be verified.
-
- :rtype: list of str
- :returns: The ``tuple_or_list`` passed in cast to a ``list``.
- :raises TypeError: if the ``tuple_or_list`` is not a tuple or list.
- """
- if not isinstance(tuple_or_list, (tuple, list)):
- raise TypeError(
- "Expected %s to be a tuple or list. "
- "Received %r" % (arg_name, tuple_or_list)
- )
- return list(tuple_or_list)
-
-
-def _determine_default_project(project=None):
- """Determine default project ID explicitly or implicitly as fall-back.
-
- See :func:`google.auth.default` for details on how the default project
- is determined.
-
- :type project: str
- :param project: Optional. The project name to use as default.
-
- :rtype: str or ``NoneType``
- :returns: Default project if it can be determined.
- """
- if project is None:
- _, project = google.auth.default()
- return project
-
-
-def _millis(when):
- """Convert a zone-aware datetime to integer milliseconds.
-
- :type when: :class:`datetime.datetime`
- :param when: the datetime to convert
-
- :rtype: int
- :returns: milliseconds since epoch for ``when``
- """
- micros = _microseconds_from_datetime(when)
- return micros // 1000
-
-
-def _datetime_from_microseconds(value):
- """Convert timestamp to datetime, assuming UTC.
-
- :type value: float
- :param value: The timestamp to convert
-
- :rtype: :class:`datetime.datetime`
- :returns: The datetime object created from the value.
- """
- return _EPOCH + datetime.timedelta(microseconds=value)
-
-
-def _microseconds_from_datetime(value):
- """Convert non-none datetime to microseconds.
-
- :type value: :class:`datetime.datetime`
- :param value: The timestamp to convert.
-
- :rtype: int
- :returns: The timestamp, in microseconds.
- """
- if not value.tzinfo:
- value = value.replace(tzinfo=UTC)
- # Regardless of what timezone is on the value, convert it to UTC.
- value = value.astimezone(UTC)
- # Convert the datetime to a microsecond timestamp.
- return int(calendar.timegm(value.timetuple()) * 1e6) + value.microsecond
-
-
-def _millis_from_datetime(value):
- """Convert non-none datetime to timestamp, assuming UTC.
-
- :type value: :class:`datetime.datetime`
- :param value: (Optional) the timestamp
-
- :rtype: int, or ``NoneType``
- :returns: the timestamp, in milliseconds, or None
- """
- if value is not None:
- return _millis(value)
-
-
-def _date_from_iso8601_date(value):
- """Convert a ISO8601 date string to native datetime date
-
- :type value: str
- :param value: The date string to convert
-
- :rtype: :class:`datetime.date`
- :returns: A datetime date object created from the string
-
- """
- return datetime.datetime.strptime(value, "%Y-%m-%d").date()
-
-
-def _time_from_iso8601_time_naive(value):
- """Convert a zoneless ISO8601 time string to naive datetime time
-
- :type value: str
- :param value: The time string to convert
-
- :rtype: :class:`datetime.time`
- :returns: A datetime time object created from the string
- :raises ValueError: if the value does not match a known format.
- """
- if len(value) == 8: # HH:MM:SS
- fmt = _TIMEONLY_NO_FRACTION
- elif len(value) == 15: # HH:MM:SS.micros
- fmt = _TIMEONLY_W_MICROS
- else:
- raise ValueError("Unknown time format: {}".format(value))
- return datetime.datetime.strptime(value, fmt).time()
-
-
-def _rfc3339_to_datetime(dt_str):
- """Convert a microsecond-precision timestamp to a native datetime.
-
- :type dt_str: str
- :param dt_str: The string to convert.
-
- :rtype: :class:`datetime.datetime`
- :returns: The datetime object created from the string.
- """
- return datetime.datetime.strptime(dt_str, _RFC3339_MICROS).replace(tzinfo=UTC)
-
-
-def _rfc3339_nanos_to_datetime(dt_str):
- """Convert a nanosecond-precision timestamp to a native datetime.
-
- .. note::
-
- Python datetimes do not support nanosecond precision; this function
- therefore truncates such values to microseconds.
-
- :type dt_str: str
- :param dt_str: The string to convert.
-
- :rtype: :class:`datetime.datetime`
- :returns: The datetime object created from the string.
- :raises ValueError: If the timestamp does not match the RFC 3339
- regular expression.
- """
- with_nanos = _RFC3339_NANOS.match(dt_str)
- if with_nanos is None:
- raise ValueError(
- "Timestamp: %r, does not match pattern: %r"
- % (dt_str, _RFC3339_NANOS.pattern)
- )
- bare_seconds = datetime.datetime.strptime(
- with_nanos.group("no_fraction"), _RFC3339_NO_FRACTION
- )
- fraction = with_nanos.group("nanos")
- if fraction is None:
- micros = 0
- else:
- scale = 9 - len(fraction)
- nanos = int(fraction) * (10**scale)
- micros = nanos // 1000
- return bare_seconds.replace(microsecond=micros, tzinfo=UTC)
-
-
-def _datetime_to_rfc3339(value, ignore_zone=True):
- """Convert a timestamp to a string.
-
- :type value: :class:`datetime.datetime`
- :param value: The datetime object to be converted to a string.
-
- :type ignore_zone: bool
- :param ignore_zone: If True, then the timezone (if any) of the datetime
- object is ignored.
-
- :rtype: str
- :returns: The string representing the datetime stamp.
- """
- if not ignore_zone and value.tzinfo is not None:
- # Convert to UTC and remove the time zone info.
- value = value.replace(tzinfo=None) - value.utcoffset()
-
- return value.strftime(_RFC3339_MICROS)
-
-
-def _to_bytes(value, encoding="ascii"):
- """Converts a string value to bytes, if necessary.
-
- :type value: str / bytes or unicode
- :param value: The string/bytes value to be converted.
-
- :type encoding: str
- :param encoding: The encoding to use to convert unicode to bytes. Defaults
- to "ascii", which will not allow any characters from
- ordinals larger than 127. Other useful values are
- "latin-1", which which will only allows byte ordinals
- (up to 255) and "utf-8", which will encode any unicode
- that needs to be.
-
- :rtype: str / bytes
- :returns: The original value converted to bytes (if unicode) or as passed
- in if it started out as bytes.
- :raises TypeError: if the value could not be converted to bytes.
- """
- result = value.encode(encoding) if isinstance(value, str) else value
- if isinstance(result, bytes):
- return result
- else:
- raise TypeError("%r could not be converted to bytes" % (value,))
-
-
-def _bytes_to_unicode(value):
- """Converts bytes to a unicode value, if necessary.
-
- :type value: bytes
- :param value: bytes value to attempt string conversion on.
-
- :rtype: str
- :returns: The original value converted to unicode (if bytes) or as passed
- in if it started out as unicode.
-
- :raises ValueError: if the value could not be converted to unicode.
- """
- result = value.decode("utf-8") if isinstance(value, bytes) else value
- if isinstance(result, str):
- return result
- else:
- raise ValueError("%r could not be converted to unicode" % (value,))
-
-
-def _from_any_pb(pb_type, any_pb):
- """Converts an Any protobuf to the specified message type
-
- Args:
- pb_type (type): the type of the message that any_pb stores an instance
- of.
- any_pb (google.protobuf.any_pb2.Any): the object to be converted.
-
- Returns:
- pb_type: An instance of the pb_type message.
-
- Raises:
- TypeError: if the message could not be converted.
- """
- msg = pb_type()
- if not any_pb.Unpack(msg):
- raise TypeError(
- "Could not convert {} to {}".format(
- any_pb.__class__.__name__, pb_type.__name__
- )
- )
-
- return msg
-
-
-def _pb_timestamp_to_datetime(timestamp_pb):
- """Convert a Timestamp protobuf to a datetime object.
-
- :type timestamp_pb: :class:`google.protobuf.timestamp_pb2.Timestamp`
- :param timestamp_pb: A Google returned timestamp protobuf.
-
- :rtype: :class:`datetime.datetime`
- :returns: A UTC datetime object converted from a protobuf timestamp.
- """
- return _EPOCH + datetime.timedelta(
- seconds=timestamp_pb.seconds, microseconds=(timestamp_pb.nanos / 1000.0)
- )
-
-
-def _pb_timestamp_to_rfc3339(timestamp_pb):
- """Convert a Timestamp protobuf to an RFC 3339 string.
-
- :type timestamp_pb: :class:`google.protobuf.timestamp_pb2.Timestamp`
- :param timestamp_pb: A Google returned timestamp protobuf.
-
- :rtype: str
- :returns: An RFC 3339 formatted timestamp string.
- """
- timestamp = _pb_timestamp_to_datetime(timestamp_pb)
- return _datetime_to_rfc3339(timestamp)
-
-
-def _datetime_to_pb_timestamp(when):
- """Convert a datetime object to a Timestamp protobuf.
-
- :type when: :class:`datetime.datetime`
- :param when: the datetime to convert
-
- :rtype: :class:`google.protobuf.timestamp_pb2.Timestamp`
- :returns: A timestamp protobuf corresponding to the object.
- """
- ms_value = _microseconds_from_datetime(when)
- seconds, micros = divmod(ms_value, 10**6)
- nanos = micros * 10**3
- return timestamp_pb2.Timestamp(seconds=seconds, nanos=nanos)
-
-
-def _timedelta_to_duration_pb(timedelta_val):
- """Convert a Python timedelta object to a duration protobuf.
-
- .. note::
-
- The Python timedelta has a granularity of microseconds while
- the protobuf duration type has a duration of nanoseconds.
-
- :type timedelta_val: :class:`datetime.timedelta`
- :param timedelta_val: A timedelta object.
-
- :rtype: :class:`google.protobuf.duration_pb2.Duration`
- :returns: A duration object equivalent to the time delta.
- """
- duration_pb = duration_pb2.Duration()
- duration_pb.FromTimedelta(timedelta_val)
- return duration_pb
-
-
-def _duration_pb_to_timedelta(duration_pb):
- """Convert a duration protobuf to a Python timedelta object.
-
- .. note::
-
- The Python timedelta has a granularity of microseconds while
- the protobuf duration type has a duration of nanoseconds.
-
- :type duration_pb: :class:`google.protobuf.duration_pb2.Duration`
- :param duration_pb: A protobuf duration object.
-
- :rtype: :class:`datetime.timedelta`
- :returns: The converted timedelta object.
- """
- return datetime.timedelta(
- seconds=duration_pb.seconds, microseconds=(duration_pb.nanos / 1000.0)
- )
-
-
-def _name_from_project_path(path, project, template):
- """Validate a URI path and get the leaf object's name.
-
- :type path: str
- :param path: URI path containing the name.
-
- :type project: str
- :param project: (Optional) The project associated with the request. It is
- included for validation purposes. If passed as None,
- disables validation.
-
- :type template: str
- :param template: Template regex describing the expected form of the path.
- The regex must have two named groups, 'project' and
- 'name'.
-
- :rtype: str
- :returns: Name parsed from ``path``.
- :raises ValueError: if the ``path`` is ill-formed or if the project from
- the ``path`` does not agree with the ``project``
- passed in.
- """
- if isinstance(template, str):
- template = re.compile(template)
-
- match = template.match(path)
-
- if not match:
- raise ValueError(
- 'path "%s" did not match expected pattern "%s"' % (path, template.pattern)
- )
-
- if project is not None:
- found_project = match.group("project")
- if found_project != project:
- raise ValueError(
- "Project from client (%s) should agree with "
- "project from resource(%s)." % (project, found_project)
- )
-
- return match.group("name")
-
-
-def make_secure_channel(credentials, user_agent, host, extra_options=()):
- """Makes a secure channel for an RPC service.
-
- Uses / depends on gRPC.
-
- :type credentials: :class:`google.auth.credentials.Credentials`
- :param credentials: The OAuth2 Credentials to use for creating
- access tokens.
-
- :type user_agent: str
- :param user_agent: The user agent to be used with API requests.
-
- :type host: str
- :param host: The host for the service.
-
- :type extra_options: tuple
- :param extra_options: (Optional) Extra gRPC options used when creating the
- channel.
-
- :rtype: :class:`grpc._channel.Channel`
- :returns: gRPC secure channel with credentials attached.
- """
- target = "%s:%d" % (host, http.client.HTTPS_PORT)
- http_request = google.auth.transport.requests.Request()
-
- user_agent_option = ("grpc.primary_user_agent", user_agent)
- options = (user_agent_option,) + extra_options
- return google.auth.transport.grpc.secure_authorized_channel(
- credentials, http_request, target, options=options
- )
-
-
-def make_secure_stub(credentials, user_agent, stub_class, host, extra_options=()):
- """Makes a secure stub for an RPC service.
-
- Uses / depends on gRPC.
-
- :type credentials: :class:`google.auth.credentials.Credentials`
- :param credentials: The OAuth2 Credentials to use for creating
- access tokens.
-
- :type user_agent: str
- :param user_agent: The user agent to be used with API requests.
-
- :type stub_class: type
- :param stub_class: A gRPC stub type for a given service.
-
- :type host: str
- :param host: The host for the service.
-
- :type extra_options: tuple
- :param extra_options: (Optional) Extra gRPC options passed when creating
- the channel.
-
- :rtype: object, instance of ``stub_class``
- :returns: The stub object used to make gRPC requests to a given API.
- """
- channel = make_secure_channel(
- credentials, user_agent, host, extra_options=extra_options
- )
- return stub_class(channel)
-
-
-def make_insecure_stub(stub_class, host, port=None):
- """Makes an insecure stub for an RPC service.
-
- Uses / depends on gRPC.
-
- :type stub_class: type
- :param stub_class: A gRPC stub type for a given service.
-
- :type host: str
- :param host: The host for the service. May also include the port
- if ``port`` is unspecified.
-
- :type port: int
- :param port: (Optional) The port for the service.
-
- :rtype: object, instance of ``stub_class``
- :returns: The stub object used to make gRPC requests to a given API.
- """
- if port is None:
- target = host
- else:
- # NOTE: This assumes port != http.client.HTTPS_PORT:
- target = "%s:%d" % (host, port)
- channel = grpc.insecure_channel(target)
- return stub_class(channel)
diff --git a/google/cloud/_helpers/py.typed b/google/cloud/_helpers/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/_helpers/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/_http/__init__.py b/google/cloud/_http/__init__.py
deleted file mode 100644
index af25e65..0000000
--- a/google/cloud/_http/__init__.py
+++ /dev/null
@@ -1,499 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Shared implementation of connections to API servers."""
-
-import collections
-import collections.abc
-import json
-import os
-import platform
-from typing import Optional
-from urllib.parse import urlencode
-import warnings
-
-from google.api_core.client_info import ClientInfo
-from google.cloud import exceptions
-from google.cloud import version
-
-
-API_BASE_URL = "https://www.googleapis.com"
-"""The base of the API call URL."""
-
-DEFAULT_USER_AGENT = "gcloud-python/{0}".format(version.__version__)
-"""The user agent for google-cloud-python requests."""
-
-CLIENT_INFO_HEADER = "X-Goog-API-Client"
-CLIENT_INFO_TEMPLATE = "gl-python/" + platform.python_version() + " gccl/{}"
-
-_USER_AGENT_ALL_CAPS_DEPRECATED = """\
-The 'USER_AGENT' class-level attribute is deprecated. Please use
-'user_agent' instead.
-"""
-
-_EXTRA_HEADERS_ALL_CAPS_DEPRECATED = """\
-The '_EXTRA_HEADERS' class-level attribute is deprecated. Please use
-'extra_headers' instead.
-"""
-
-_DEFAULT_TIMEOUT = 60 # in seconds
-
-
-class Connection(object):
- """A generic connection to Google Cloud Platform.
-
- :type client: :class:`~google.cloud.client.Client`
- :param client: The client that owns the current connection.
-
- :type client_info: :class:`~google.api_core.client_info.ClientInfo`
- :param client_info: (Optional) instance used to generate user agent.
- """
-
- _user_agent = DEFAULT_USER_AGENT
-
- def __init__(self, client, client_info=None):
- self._client = client
-
- if client_info is None:
- client_info = ClientInfo()
-
- self._client_info = client_info
- self._extra_headers = {}
-
- @property
- def USER_AGENT(self):
- """Deprecated: get / set user agent sent by connection.
-
- :rtype: str
- :returns: user agent
- """
- warnings.warn(_USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
- return self.user_agent
-
- @USER_AGENT.setter
- def USER_AGENT(self, value):
- warnings.warn(_USER_AGENT_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2)
- self.user_agent = value
-
- @property
- def user_agent(self):
- """Get / set user agent sent by connection.
-
- :rtype: str
- :returns: user agent
- """
- return self._client_info.to_user_agent()
-
- @user_agent.setter
- def user_agent(self, value):
- self._client_info.user_agent = value
-
- @property
- def _EXTRA_HEADERS(self):
- """Deprecated: get / set extra headers sent by connection.
-
- :rtype: dict
- :returns: header keys / values
- """
- warnings.warn(
- _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2
- )
- return self.extra_headers
-
- @_EXTRA_HEADERS.setter
- def _EXTRA_HEADERS(self, value):
- warnings.warn(
- _EXTRA_HEADERS_ALL_CAPS_DEPRECATED, DeprecationWarning, stacklevel=2
- )
- self.extra_headers = value
-
- @property
- def extra_headers(self):
- """Get / set extra headers sent by connection.
-
- :rtype: dict
- :returns: header keys / values
- """
- return self._extra_headers
-
- @extra_headers.setter
- def extra_headers(self, value):
- self._extra_headers = value
-
- @property
- def credentials(self):
- """Getter for current credentials.
-
- :rtype: :class:`google.auth.credentials.Credentials` or
- :class:`NoneType`
- :returns: The credentials object associated with this connection.
- """
- return self._client._credentials
-
- @property
- def http(self):
- """A getter for the HTTP transport used in talking to the API.
-
- Returns:
- google.auth.transport.requests.AuthorizedSession:
- A :class:`requests.Session` instance.
- """
- return self._client._http
-
-
-class JSONConnection(Connection):
- """A connection to a Google JSON-based API.
-
- These APIs are discovery based. For reference:
-
- https://developers.google.com/discovery/
-
- This defines :meth:`api_request` for making a generic JSON
- API request and API requests are created elsewhere.
-
- * :attr:`API_BASE_URL`
- * :attr:`API_VERSION`
- * :attr:`API_URL_TEMPLATE`
-
- must be updated by subclasses.
- """
-
- API_BASE_URL: Optional[str] = None
- """The base of the API call URL."""
-
- API_BASE_MTLS_URL: Optional[str] = None
- """The base of the API call URL for mutual TLS."""
-
- ALLOW_AUTO_SWITCH_TO_MTLS_URL = False
- """Indicates if auto switch to mTLS url is allowed."""
-
- API_VERSION: Optional[str] = None
- """The version of the API, used in building the API call's URL."""
-
- API_URL_TEMPLATE: Optional[str] = None
- """A template for the URL of a particular API call."""
-
- def get_api_base_url_for_mtls(self, api_base_url=None):
- """Return the api base url for mutual TLS.
-
- Typically, you shouldn't need to use this method.
-
- The logic is as follows:
-
- If `api_base_url` is provided, just return this value; otherwise, the
- return value depends `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable
- value.
-
- If the environment variable value is "always", return `API_BASE_MTLS_URL`.
- If the environment variable value is "never", return `API_BASE_URL`.
- Otherwise, if `ALLOW_AUTO_SWITCH_TO_MTLS_URL` is True and the underlying
- http is mTLS, then return `API_BASE_MTLS_URL`; otherwise return `API_BASE_URL`.
-
- :type api_base_url: str
- :param api_base_url: User provided api base url. It takes precedence over
- `API_BASE_URL` and `API_BASE_MTLS_URL`.
-
- :rtype: str
- :returns: The api base url used for mTLS.
- """
- if api_base_url:
- return api_base_url
-
- env = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto")
- if env == "always":
- url_to_use = self.API_BASE_MTLS_URL
- elif env == "never":
- url_to_use = self.API_BASE_URL
- else:
- if self.ALLOW_AUTO_SWITCH_TO_MTLS_URL:
- url_to_use = (
- self.API_BASE_MTLS_URL if self.http.is_mtls else self.API_BASE_URL
- )
- else:
- url_to_use = self.API_BASE_URL
- return url_to_use
-
- def build_api_url(
- self, path, query_params=None, api_base_url=None, api_version=None
- ):
- """Construct an API url given a few components, some optional.
-
- Typically, you shouldn't need to use this method.
-
- :type path: str
- :param path: The path to the resource (ie, ``'/b/bucket-name'``).
-
- :type query_params: dict or list
- :param query_params: A dictionary of keys and values (or list of
- key-value pairs) to insert into the query
- string of the URL.
-
- :type api_base_url: str
- :param api_base_url: The base URL for the API endpoint.
- Typically you won't have to provide this.
-
- :type api_version: str
- :param api_version: The version of the API to call.
- Typically you shouldn't provide this and instead
- use the default for the library.
-
- :rtype: str
- :returns: The URL assembled from the pieces provided.
- """
- url = self.API_URL_TEMPLATE.format(
- api_base_url=self.get_api_base_url_for_mtls(api_base_url),
- api_version=(api_version or self.API_VERSION),
- path=path,
- )
-
- query_params = query_params or {}
-
- if isinstance(query_params, collections.abc.Mapping):
- query_params = query_params.copy()
- else:
- query_params_dict = collections.defaultdict(list)
- for key, value in query_params:
- query_params_dict[key].append(value)
- query_params = query_params_dict
-
- query_params.setdefault("prettyPrint", "false")
-
- url += "?" + urlencode(query_params, doseq=True)
-
- return url
-
- def _make_request(
- self,
- method,
- url,
- data=None,
- content_type=None,
- headers=None,
- target_object=None,
- timeout=_DEFAULT_TIMEOUT,
- extra_api_info=None,
- ):
- """A low level method to send a request to the API.
-
- Typically, you shouldn't need to use this method.
-
- :type method: str
- :param method: The HTTP method to use in the request.
-
- :type url: str
- :param url: The URL to send the request to.
-
- :type data: str
- :param data: The data to send as the body of the request.
-
- :type content_type: str
- :param content_type: The proper MIME type of the data provided.
-
- :type headers: dict
- :param headers: (Optional) A dictionary of HTTP headers to send with
- the request. If passed, will be modified directly
- here with added headers.
-
- :type target_object: object
- :param target_object:
- (Optional) Argument to be used by library callers. This can allow
- custom behavior, for example, to defer an HTTP request and complete
- initialization of the object at a later time.
-
- :type timeout: float or tuple
- :param timeout: (optional) The amount of time, in seconds, to wait
- for the server response.
-
- Can also be passed as a tuple (connect_timeout, read_timeout).
- See :meth:`requests.Session.request` documentation for details.
-
- :type extra_api_info: string
- :param extra_api_info: (optional) Extra api info to be appended to
- the X-Goog-API-Client header
-
- :rtype: :class:`requests.Response`
- :returns: The HTTP response.
- """
- headers = headers or {}
- headers.update(self.extra_headers)
- headers["Accept-Encoding"] = "gzip"
-
- if content_type:
- headers["Content-Type"] = content_type
-
- if extra_api_info:
- headers[CLIENT_INFO_HEADER] = f"{self.user_agent} {extra_api_info}"
- else:
- headers[CLIENT_INFO_HEADER] = self.user_agent
- headers["User-Agent"] = self.user_agent
-
- return self._do_request(
- method, url, headers, data, target_object, timeout=timeout
- )
-
- def _do_request(
- self, method, url, headers, data, target_object, timeout=_DEFAULT_TIMEOUT
- ): # pylint: disable=unused-argument
- """Low-level helper: perform the actual API request over HTTP.
-
- Allows batch context managers to override and defer a request.
-
- :type method: str
- :param method: The HTTP method to use in the request.
-
- :type url: str
- :param url: The URL to send the request to.
-
- :type headers: dict
- :param headers: A dictionary of HTTP headers to send with the request.
-
- :type data: str
- :param data: The data to send as the body of the request.
-
- :type target_object: object
- :param target_object:
- (Optional) Unused ``target_object`` here but may be used by a
- superclass.
-
- :type timeout: float or tuple
- :param timeout: (optional) The amount of time, in seconds, to wait
- for the server response.
-
- Can also be passed as a tuple (connect_timeout, read_timeout).
- See :meth:`requests.Session.request` documentation for details.
-
- :rtype: :class:`requests.Response`
- :returns: The HTTP response.
- """
- return self.http.request(
- url=url, method=method, headers=headers, data=data, timeout=timeout
- )
-
- def api_request(
- self,
- method,
- path,
- query_params=None,
- data=None,
- content_type=None,
- headers=None,
- api_base_url=None,
- api_version=None,
- expect_json=True,
- _target_object=None,
- timeout=_DEFAULT_TIMEOUT,
- extra_api_info=None,
- ):
- """Make a request over the HTTP transport to the API.
-
- You shouldn't need to use this method, but if you plan to
- interact with the API using these primitives, this is the
- correct one to use.
-
- :type method: str
- :param method: The HTTP method name (ie, ``GET``, ``POST``, etc).
- Required.
-
- :type path: str
- :param path: The path to the resource (ie, ``'/b/bucket-name'``).
- Required.
-
- :type query_params: dict or list
- :param query_params: A dictionary of keys and values (or list of
- key-value pairs) to insert into the query
- string of the URL.
-
- :type data: str
- :param data: The data to send as the body of the request. Default is
- the empty string.
-
- :type content_type: str
- :param content_type: The proper MIME type of the data provided. Default
- is None.
-
- :type headers: dict
- :param headers: extra HTTP headers to be sent with the request.
-
- :type api_base_url: str
- :param api_base_url: The base URL for the API endpoint.
- Typically you won't have to provide this.
- Default is the standard API base URL.
-
- :type api_version: str
- :param api_version: The version of the API to call. Typically
- you shouldn't provide this and instead use
- the default for the library. Default is the
- latest API version supported by
- google-cloud-python.
-
- :type expect_json: bool
- :param expect_json: If True, this method will try to parse the
- response as JSON and raise an exception if
- that cannot be done. Default is True.
-
- :type _target_object: :class:`object`
- :param _target_object:
- (Optional) Protected argument to be used by library callers. This
- can allow custom behavior, for example, to defer an HTTP request
- and complete initialization of the object at a later time.
-
- :type timeout: float or tuple
- :param timeout: (optional) The amount of time, in seconds, to wait
- for the server response.
-
- Can also be passed as a tuple (connect_timeout, read_timeout).
- See :meth:`requests.Session.request` documentation for details.
-
- :type extra_api_info: string
- :param extra_api_info: (optional) Extra api info to be appended to
- the X-Goog-API-Client header
-
- :raises ~google.cloud.exceptions.GoogleCloudError: if the response code
- is not 200 OK.
- :raises ValueError: if the response content type is not JSON.
- :rtype: dict or str
- :returns: The API response payload, either as a raw string or
- a dictionary if the response is valid JSON.
- """
- url = self.build_api_url(
- path=path,
- query_params=query_params,
- api_base_url=api_base_url,
- api_version=api_version,
- )
-
- # Making the executive decision that any dictionary
- # data will be sent properly as JSON.
- if data and isinstance(data, dict):
- data = json.dumps(data)
- content_type = "application/json"
-
- response = self._make_request(
- method=method,
- url=url,
- data=data,
- content_type=content_type,
- headers=headers,
- target_object=_target_object,
- timeout=timeout,
- extra_api_info=extra_api_info,
- )
-
- if not 200 <= response.status_code < 300:
- raise exceptions.from_http_response(response)
-
- if expect_json and response.content:
- return response.json()
- else:
- return response.content
diff --git a/google/cloud/_http/py.typed b/google/cloud/_http/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/_http/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/_testing/__init__.py b/google/cloud/_testing/__init__.py
deleted file mode 100644
index 16b9292..0000000
--- a/google/cloud/_testing/__init__.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Shared testing utilities."""
-
-from __future__ import absolute_import
-
-
-class _Monkey(object):
- """Context-manager for replacing module names in the scope of a test."""
-
- def __init__(self, module, **kw):
- self.module = module
- if not kw: # pragma: NO COVER
- raise ValueError("_Monkey was used with nothing to monkey-patch")
- self.to_restore = {key: getattr(module, key) for key in kw}
- for key, value in kw.items():
- setattr(module, key, value)
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- for key, value in self.to_restore.items():
- setattr(self.module, key, value)
-
-
-class _NamedTemporaryFile(object):
- def __init__(self, suffix=""):
- import os
- import tempfile
-
- filehandle, self.name = tempfile.mkstemp(suffix=suffix)
- os.close(filehandle)
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- import os
-
- os.remove(self.name)
-
-
-def _tempdir_maker():
- import contextlib
- import shutil
- import tempfile
-
- @contextlib.contextmanager
- def _tempdir_mgr():
- temp_dir = tempfile.mkdtemp()
- yield temp_dir
- shutil.rmtree(temp_dir)
-
- return _tempdir_mgr
-
-
-# pylint: disable=invalid-name
-# Retain _tempdir as a constant for backwards compatibility despite
-# being an invalid name.
-_tempdir = _tempdir_maker()
-del _tempdir_maker
-# pylint: enable=invalid-name
-
-
-class _GAXBaseAPI(object):
- _random_gax_error = False
-
- def __init__(self, **kw):
- self.__dict__.update(kw)
-
- @staticmethod
- def _make_grpc_error(status_code, trailing=None):
- from grpc._channel import _RPCState
- from google.cloud.exceptions import GrpcRendezvous
-
- details = "Some error details."
- exc_state = _RPCState((), None, trailing, status_code, details)
- return GrpcRendezvous(exc_state, None, None, None)
-
- def _make_grpc_not_found(self):
- from grpc import StatusCode
-
- return self._make_grpc_error(StatusCode.NOT_FOUND)
-
- def _make_grpc_failed_precondition(self):
- from grpc import StatusCode
-
- return self._make_grpc_error(StatusCode.FAILED_PRECONDITION)
-
- def _make_grpc_already_exists(self):
- from grpc import StatusCode
-
- return self._make_grpc_error(StatusCode.ALREADY_EXISTS)
-
- def _make_grpc_deadline_exceeded(self):
- from grpc import StatusCode
-
- return self._make_grpc_error(StatusCode.DEADLINE_EXCEEDED)
-
-
-class _GAXPageIterator(object):
- def __init__(self, *pages, **kwargs):
- self._pages = iter(pages)
- self.page_token = kwargs.get("page_token")
-
- def __next__(self):
- """Iterate to the next page."""
- return next(self._pages)
diff --git a/google/cloud/_testing/py.typed b/google/cloud/_testing/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/_testing/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/client/__init__.py b/google/cloud/client/__init__.py
deleted file mode 100644
index 27d1a4c..0000000
--- a/google/cloud/client/__init__.py
+++ /dev/null
@@ -1,342 +0,0 @@
-# Copyright 2015 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Base classes for client used to interact with Google Cloud APIs."""
-
-import io
-import json
-import os
-from pickle import PicklingError
-from typing import Tuple
-from typing import Union
-
-import google.api_core.client_options
-import google.api_core.exceptions
-import google.auth
-from google.auth import environment_vars
-import google.auth.credentials
-import google.auth.transport.requests
-from google.cloud._helpers import _determine_default_project
-from google.oauth2 import service_account
-
-try:
- import google.auth.api_key
-
- HAS_GOOGLE_AUTH_API_KEY = True
-except ImportError: # pragma: NO COVER
- HAS_GOOGLE_AUTH_API_KEY = False # pragma: NO COVER
- # TODO: Investigate adding a test for google.auth.api_key ImportError (https://github.com/googleapis/python-cloud-core/issues/334)
-
-
-_GOOGLE_AUTH_CREDENTIALS_HELP = (
- "This library only supports credentials from google-auth-library-python. "
- "See https://google-auth.readthedocs.io/en/latest/ "
- "for help on authentication with this library."
-)
-
-# Default timeout for auth requests.
-_CREDENTIALS_REFRESH_TIMEOUT = 300
-
-
-class _ClientFactoryMixin(object):
- """Mixin to allow factories that create credentials.
-
- .. note::
-
- This class is virtual.
- """
-
- _SET_PROJECT = False
-
- @classmethod
- def from_service_account_info(cls, info, *args, **kwargs):
- """Factory to retrieve JSON credentials while creating client.
-
- :type info: dict
- :param info:
- The JSON object with a private key and other credentials
- information (downloaded from the Google APIs console).
-
- :type args: tuple
- :param args: Remaining positional arguments to pass to constructor.
-
- :param kwargs: Remaining keyword arguments to pass to constructor.
-
- :rtype: :class:`_ClientFactoryMixin`
- :returns: The client created with the retrieved JSON credentials.
- :raises TypeError: if there is a conflict with the kwargs
- and the credentials created by the factory.
- """
- if "credentials" in kwargs:
- raise TypeError("credentials must not be in keyword arguments")
-
- credentials = service_account.Credentials.from_service_account_info(info)
- if cls._SET_PROJECT:
- if "project" not in kwargs:
- kwargs["project"] = info.get("project_id")
-
- kwargs["credentials"] = credentials
- return cls(*args, **kwargs)
-
- @classmethod
- def from_service_account_json(cls, json_credentials_path, *args, **kwargs):
- """Factory to retrieve JSON credentials while creating client.
-
- :type json_credentials_path: str
- :param json_credentials_path: The path to a private key file (this file
- was given to you when you created the
- service account). This file must contain
- a JSON object with a private key and
- other credentials information (downloaded
- from the Google APIs console).
-
- :type args: tuple
- :param args: Remaining positional arguments to pass to constructor.
-
- :param kwargs: Remaining keyword arguments to pass to constructor.
-
- :rtype: :class:`_ClientFactoryMixin`
- :returns: The client created with the retrieved JSON credentials.
- :raises TypeError: if there is a conflict with the kwargs
- and the credentials created by the factory.
- """
- with io.open(json_credentials_path, "r", encoding="utf-8") as json_fi:
- credentials_info = json.load(json_fi)
-
- return cls.from_service_account_info(credentials_info, *args, **kwargs)
-
-
-class Client(_ClientFactoryMixin):
- """Client to bundle configuration needed for API requests.
-
- Stores ``credentials`` and an HTTP object so that subclasses
- can pass them along to a connection class.
-
- If no value is passed in for ``_http``, a :class:`requests.Session` object
- will be created and authorized with the ``credentials``. If not, the
- ``credentials`` and ``_http`` need not be related.
-
- Callers and subclasses may seek to use the private key from
- ``credentials`` to sign data.
-
- Args:
- credentials (google.auth.credentials.Credentials):
- (Optional) The OAuth2 Credentials to use for this client. If not
- passed (and if no ``_http`` object is passed), falls back to the
- default inferred from the environment.
- client_options (google.api_core.client_options.ClientOptions):
- (Optional) Custom options for the client.
- _http (requests.Session):
- (Optional) HTTP object to make requests. Can be any object that
- defines ``request()`` with the same interface as
- :meth:`requests.Session.request`. If not passed, an ``_http``
- object is created that is bound to the ``credentials`` for the
- current object.
- This parameter should be considered private, and could change in
- the future.
-
- Raises:
- google.auth.exceptions.DefaultCredentialsError:
- Raised if ``credentials`` is not specified and the library fails
- to acquire default credentials.
- """
-
- SCOPE: Union[Tuple[str, ...], None] = None
- """The scopes required for authenticating with a service.
-
- Needs to be set by subclasses.
- """
-
- def __init__(self, credentials=None, _http=None, client_options=None):
- if isinstance(client_options, dict):
- client_options = google.api_core.client_options.from_dict(client_options)
- if client_options is None:
- client_options = google.api_core.client_options.ClientOptions()
-
- if credentials and client_options.credentials_file:
- raise google.api_core.exceptions.DuplicateCredentialArgs(
- "'credentials' and 'client_options.credentials_file' are mutually exclusive."
- )
-
- if (
- HAS_GOOGLE_AUTH_API_KEY
- and client_options.api_key
- and (credentials or client_options.credentials_file)
- ):
- raise google.api_core.exceptions.DuplicateCredentialArgs(
- "'client_options.api_key' is mutually exclusive with 'credentials' and 'client_options.credentials_file'."
- )
-
- if credentials and not isinstance(
- credentials, google.auth.credentials.Credentials
- ):
- raise ValueError(_GOOGLE_AUTH_CREDENTIALS_HELP)
-
- scopes = client_options.scopes or self.SCOPE
-
- # if no http is provided, credentials must exist
- if not _http and credentials is None:
- if client_options.credentials_file:
- credentials, _ = google.auth.load_credentials_from_file(
- client_options.credentials_file, scopes=scopes
- )
- elif HAS_GOOGLE_AUTH_API_KEY and client_options.api_key is not None:
- credentials = google.auth.api_key.Credentials(client_options.api_key)
- else:
- credentials, _ = google.auth.default(scopes=scopes)
-
- self._credentials = google.auth.credentials.with_scopes_if_required(
- credentials, scopes=scopes
- )
-
- if client_options.quota_project_id:
- self._credentials = self._credentials.with_quota_project(
- client_options.quota_project_id
- )
-
- self._http_internal = _http
- self._client_cert_source = client_options.client_cert_source
-
- def __getstate__(self):
- """Explicitly state that clients are not pickleable."""
- raise PicklingError(
- "\n".join(
- [
- "Pickling client objects is explicitly not supported.",
- "Clients have non-trivial state that is local and unpickleable.",
- ]
- )
- )
-
- @property
- def _http(self):
- """Getter for object used for HTTP transport.
-
- :rtype: :class:`~requests.Session`
- :returns: An HTTP object.
- """
- if self._http_internal is None:
- self._http_internal = google.auth.transport.requests.AuthorizedSession(
- self._credentials,
- refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT,
- )
- self._http_internal.configure_mtls_channel(self._client_cert_source)
- return self._http_internal
-
- def close(self):
- """Clean up transport, if set.
-
- Suggested use:
-
- .. code-block:: python
-
- import contextlib
-
- with contextlib.closing(client): # closes on exit
- do_something_with(client)
- """
- if self._http_internal is not None:
- self._http_internal.close()
-
-
-class _ClientProjectMixin(object):
- """Mixin to allow setting the project on the client.
-
- :type project: str
- :param project:
- (Optional) the project which the client acts on behalf of. If not
- passed, falls back to the default inferred from the environment.
-
- :type credentials: :class:`google.auth.credentials.Credentials`
- :param credentials:
- (Optional) credentials used to discover a project, if not passed.
-
- :raises: :class:`EnvironmentError` if the project is neither passed in nor
- set on the credentials or in the environment. :class:`ValueError`
- if the project value is invalid.
- """
-
- def __init__(self, project=None, credentials=None):
- # This test duplicates the one from `google.auth.default`, but earlier,
- # for backward compatibility: we want the environment variable to
- # override any project set on the credentials. See:
- # https://github.com/googleapis/python-cloud-core/issues/27
- if project is None:
- project = os.getenv(
- environment_vars.PROJECT,
- os.getenv(environment_vars.LEGACY_PROJECT),
- )
-
- # Project set on explicit credentials overrides discovery from
- # SDK / GAE / GCE.
- if project is None and credentials is not None:
- project = getattr(credentials, "project_id", None)
-
- if project is None:
- project = self._determine_default(project)
-
- if project is None:
- raise EnvironmentError(
- "Project was not passed and could not be "
- "determined from the environment."
- )
-
- if isinstance(project, bytes):
- project = project.decode("utf-8")
-
- if not isinstance(project, str):
- raise ValueError("Project must be a string.")
-
- self.project = project
-
- @staticmethod
- def _determine_default(project):
- """Helper: use default project detection."""
- return _determine_default_project(project)
-
-
-class ClientWithProject(Client, _ClientProjectMixin):
- """Client that also stores a project.
-
- :type project: str
- :param project: the project which the client acts on behalf of. If not
- passed falls back to the default inferred from the
- environment.
-
- :type credentials: :class:`~google.auth.credentials.Credentials`
- :param credentials: (Optional) The OAuth2 Credentials to use for this
- client. If not passed (and if no ``_http`` object is
- passed), falls back to the default inferred from the
- environment.
-
- :type _http: :class:`~requests.Session`
- :param _http: (Optional) HTTP object to make requests. Can be any object
- that defines ``request()`` with the same interface as
- :meth:`~requests.Session.request`. If not passed, an
- ``_http`` object is created that is bound to the
- ``credentials`` for the current object.
- This parameter should be considered private, and could
- change in the future.
-
- :raises: :class:`ValueError` if the project is neither passed in nor
- set in the environment.
- """
-
- _SET_PROJECT = True # Used by from_service_account_json()
-
- def __init__(self, project=None, credentials=None, client_options=None, _http=None):
- _ClientProjectMixin.__init__(self, project=project, credentials=credentials)
- Client.__init__(
- self, credentials=credentials, client_options=client_options, _http=_http
- )
diff --git a/google/cloud/client/py.typed b/google/cloud/client/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/client/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/environment_vars/__init__.py b/google/cloud/environment_vars/__init__.py
deleted file mode 100644
index d84afca..0000000
--- a/google/cloud/environment_vars/__init__.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2015 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Comprehensive list of environment variables used in google-cloud.
-
-These enable many types of implicit behavior in both production
-and tests.
-"""
-
-GCD_DATASET = "DATASTORE_DATASET"
-"""Environment variable defining default dataset ID under GCD."""
-
-GCD_HOST = "DATASTORE_EMULATOR_HOST"
-"""Environment variable defining host for GCD dataset server."""
-
-PUBSUB_EMULATOR = "PUBSUB_EMULATOR_HOST"
-"""Environment variable defining host for Pub/Sub emulator."""
-
-BIGTABLE_EMULATOR = "BIGTABLE_EMULATOR_HOST"
-"""Environment variable defining host for Bigtable emulator."""
-
-DISABLE_GRPC = "GOOGLE_CLOUD_DISABLE_GRPC"
-"""Environment variable acting as flag to disable gRPC.
-
-To be used for APIs where both an HTTP and gRPC implementation
-exist.
-"""
diff --git a/google/cloud/environment_vars/py.typed b/google/cloud/environment_vars/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/environment_vars/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/exceptions/__init__.py b/google/cloud/exceptions/__init__.py
deleted file mode 100644
index 36ee6d1..0000000
--- a/google/cloud/exceptions/__init__.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# pylint: disable=invalid-name
-# pylint recognizies all of these aliases as constants and thinks they have
-# invalid names.
-
-"""Custom exceptions for :mod:`google.cloud` package."""
-
-# Avoid the grpc and google.cloud.grpc collision.
-from __future__ import absolute_import
-
-from google.api_core import exceptions
-
-try:
- from grpc._channel import _Rendezvous
-except ImportError: # pragma: NO COVER
- _Rendezvous = None
-
-GrpcRendezvous = _Rendezvous
-"""Exception class raised by gRPC stable."""
-
-# Aliases to moved classes.
-GoogleCloudError = exceptions.GoogleAPICallError
-Redirection = exceptions.Redirection
-MovedPermanently = exceptions.MovedPermanently
-NotModified = exceptions.NotModified
-TemporaryRedirect = exceptions.TemporaryRedirect
-ResumeIncomplete = exceptions.ResumeIncomplete
-ClientError = exceptions.ClientError
-BadRequest = exceptions.BadRequest
-Unauthorized = exceptions.Unauthorized
-Forbidden = exceptions.Forbidden
-NotFound = exceptions.NotFound
-MethodNotAllowed = exceptions.MethodNotAllowed
-Conflict = exceptions.Conflict
-LengthRequired = exceptions.LengthRequired
-PreconditionFailed = exceptions.PreconditionFailed
-RequestRangeNotSatisfiable = exceptions.RequestRangeNotSatisfiable
-TooManyRequests = exceptions.TooManyRequests
-ServerError = exceptions.ServerError
-InternalServerError = exceptions.InternalServerError
-MethodNotImplemented = exceptions.MethodNotImplemented
-BadGateway = exceptions.BadGateway
-ServiceUnavailable = exceptions.ServiceUnavailable
-GatewayTimeout = exceptions.GatewayTimeout
-from_http_status = exceptions.from_http_status
-from_http_response = exceptions.from_http_response
diff --git a/google/cloud/exceptions/py.typed b/google/cloud/exceptions/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/exceptions/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/obsolete/__init__.py b/google/cloud/obsolete/__init__.py
deleted file mode 100644
index 552f755..0000000
--- a/google/cloud/obsolete/__init__.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2017 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Helpers for deprecated code and modules."""
-
-import importlib.metadata as metadata
-import warnings
-
-
-def complain(distribution_name):
- """Issue a warning if `distribution_name` is installed.
-
- In a future release, this method will be updated to raise ImportError
- rather than just send a warning.
-
- Args:
- distribution_name (str): The name of the obsolete distribution.
- """
- try:
- metadata.distribution(distribution_name)
- warnings.warn(
- "The {pkg} distribution is now obsolete. "
- "Please `pip uninstall {pkg}`. "
- "In the future, this warning will become an ImportError.".format(
- pkg=distribution_name
- ),
- DeprecationWarning,
- )
- except metadata.PackageNotFoundError:
- pass
diff --git a/google/cloud/obsolete/py.typed b/google/cloud/obsolete/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/obsolete/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/operation/__init__.py b/google/cloud/operation/__init__.py
deleted file mode 100644
index 4fd1f27..0000000
--- a/google/cloud/operation/__init__.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Wrap long-running operations returned from Google Cloud APIs."""
-
-from typing import Dict
-
-from google.longrunning import operations_pb2
-from google.protobuf import json_format
-
-
-_GOOGLE_APIS_PREFIX = "type.googleapis.com"
-
-_TYPE_URL_MAP: Dict[str, type] = {}
-
-
-def _compute_type_url(klass, prefix=_GOOGLE_APIS_PREFIX):
- """Compute a type URL for a klass.
-
- :type klass: type
- :param klass: class to be used as a factory for the given type
-
- :type prefix: str
- :param prefix: URL prefix for the type
-
- :rtype: str
- :returns: the URL, prefixed as appropriate
- """
- name = klass.DESCRIPTOR.full_name
- return "%s/%s" % (prefix, name)
-
-
-def register_type(klass, type_url=None):
- """Register a klass as the factory for a given type URL.
-
- :type klass: :class:`type`
- :param klass: class to be used as a factory for the given type
-
- :type type_url: str
- :param type_url: (Optional) URL naming the type. If not provided,
- infers the URL from the type descriptor.
-
- :raises ValueError: if a registration already exists for the URL.
- """
- if type_url is None:
- type_url = _compute_type_url(klass)
- if type_url in _TYPE_URL_MAP:
- if _TYPE_URL_MAP[type_url] is not klass:
- raise ValueError("Conflict: %s" % (_TYPE_URL_MAP[type_url],))
-
- _TYPE_URL_MAP[type_url] = klass
-
-
-def _from_any(any_pb):
- """Convert an ``Any`` protobuf into the actual class.
-
- Uses the type URL to do the conversion.
-
- .. note::
-
- This assumes that the type URL is already registered.
-
- :type any_pb: :class:`google.protobuf.any_pb2.Any`
- :param any_pb: An any object to be converted.
-
- :rtype: object
- :returns: The instance (of the correct type) stored in the any
- instance.
- """
- klass = _TYPE_URL_MAP[any_pb.type_url]
- return klass.FromString(any_pb.value)
-
-
-class Operation(object):
- """Representation of a Google API Long-Running Operation.
-
- .. _protobuf: https://github.com/googleapis/googleapis/blob/\
- 050400df0fdb16f63b63e9dee53819044bffc857/\
- google/longrunning/operations.proto#L80
- .. _service: https://github.com/googleapis/googleapis/blob/\
- 050400df0fdb16f63b63e9dee53819044bffc857/\
- google/longrunning/operations.proto#L38
- .. _JSON: https://cloud.google.com/speech/reference/rest/\
- v1beta1/operations#Operation
-
- This wraps an operation `protobuf`_ object and attempts to
- interact with the long-running operations `service`_ (specific
- to a given API). (Some services also offer a `JSON`_
- API that maps the same underlying data type.)
-
- :type name: str
- :param name: The fully-qualified path naming the operation.
-
- :type client: :class:`~google.cloud.client.Client`
- :param client: The client used to poll for the status of the operation.
- If the operation was created via JSON/HTTP, the client
- must own a :class:`~google.cloud._http.Connection`
- to send polling requests. If created via protobuf, the
- client must have a gRPC stub in the ``_operations_stub``
- attribute.
-
- :type caller_metadata: dict
- :param caller_metadata: caller-assigned metadata about the operation
- """
-
- target = None
- """Instance assocated with the operations: callers may set."""
-
- response = None
- """Response returned from completed operation.
-
- Only one of this and :attr:`error` can be populated.
- """
-
- error = None
- """Error that resulted from a failed (complete) operation.
-
- Only one of this and :attr:`response` can be populated.
- """
-
- metadata = None
- """Metadata about the current operation (as a protobuf).
-
- Code that uses operations must register the metadata types (via
- :func:`register_type`) to ensure that the metadata fields can be
- converted into the correct types.
- """
-
- _from_grpc = True
-
- def __init__(self, name, client, **caller_metadata):
- self.name = name
- self.client = client
- self.caller_metadata = caller_metadata.copy()
- self._complete = False
-
- @classmethod
- def from_pb(cls, operation_pb, client, **caller_metadata):
- """Factory: construct an instance from a protobuf.
-
- :type operation_pb:
- :class:`~google.longrunning.operations_pb2.Operation`
- :param operation_pb: Protobuf to be parsed.
-
- :type client: object: must provide ``_operations_stub`` accessor.
- :param client: The client used to poll for the status of the operation.
-
- :type caller_metadata: dict
- :param caller_metadata: caller-assigned metadata about the operation
-
- :rtype: :class:`Operation`
- :returns: new instance, with attributes based on the protobuf.
- """
- result = cls(operation_pb.name, client, **caller_metadata)
- result._update_state(operation_pb)
- result._from_grpc = True
- return result
-
- @classmethod
- def from_dict(cls, operation, client, **caller_metadata):
- """Factory: construct an instance from a dictionary.
-
- :type operation: dict
- :param operation: Operation as a JSON object.
-
- :type client: :class:`~google.cloud.client.Client`
- :param client: The client used to poll for the status of the operation.
-
- :type caller_metadata: dict
- :param caller_metadata: caller-assigned metadata about the operation
-
- :rtype: :class:`Operation`
- :returns: new instance, with attributes based on the protobuf.
- """
- operation_pb = json_format.ParseDict(operation, operations_pb2.Operation())
- result = cls(operation_pb.name, client, **caller_metadata)
- result._update_state(operation_pb)
- result._from_grpc = False
- return result
-
- @property
- def complete(self):
- """Has the operation already completed?
-
- :rtype: bool
- :returns: True if already completed, else false.
- """
- return self._complete
-
- def _get_operation_rpc(self):
- """Polls the status of the current operation.
-
- Uses gRPC request to check.
-
- :rtype: :class:`~google.longrunning.operations_pb2.Operation`
- :returns: The latest status of the current operation.
- """
- request_pb = operations_pb2.GetOperationRequest(name=self.name)
- return self.client._operations_stub.GetOperation(request_pb)
-
- def _get_operation_http(self):
- """Checks the status of the current operation.
-
- Uses HTTP request to check.
-
- :rtype: :class:`~google.longrunning.operations_pb2.Operation`
- :returns: The latest status of the current operation.
- """
- path = "operations/%s" % (self.name,)
- api_response = self.client._connection.api_request(method="GET", path=path)
- return json_format.ParseDict(api_response, operations_pb2.Operation())
-
- def _get_operation(self):
- """Checks the status of the current operation.
-
- :rtype: :class:`~google.longrunning.operations_pb2.Operation`
- :returns: The latest status of the current operation.
- """
- if self._from_grpc:
- return self._get_operation_rpc()
- else:
- return self._get_operation_http()
-
- def _update_state(self, operation_pb):
- """Update the state of the current object based on operation.
-
- :type operation_pb:
- :class:`~google.longrunning.operations_pb2.Operation`
- :param operation_pb: Protobuf to be parsed.
- """
- if operation_pb.done:
- self._complete = True
-
- if operation_pb.HasField("metadata"):
- self.metadata = _from_any(operation_pb.metadata)
-
- result_type = operation_pb.WhichOneof("result")
- if result_type == "error":
- self.error = operation_pb.error
- elif result_type == "response":
- self.response = _from_any(operation_pb.response)
-
- def poll(self):
- """Check if the operation has finished.
-
- :rtype: bool
- :returns: A boolean indicating if the current operation has completed.
- :raises ValueError: if the operation
- has already completed.
- """
- if self.complete:
- raise ValueError("The operation has completed.")
-
- operation_pb = self._get_operation()
- self._update_state(operation_pb)
-
- return self.complete
diff --git a/google/cloud/operation/py.typed b/google/cloud/operation/py.typed
deleted file mode 100644
index dfc5374..0000000
--- a/google/cloud/operation/py.typed
+++ /dev/null
@@ -1,2 +0,0 @@
-# Marker file for PEP 561.
-# This package uses inline types.
diff --git a/google/cloud/version.py b/google/cloud/version.py
deleted file mode 100644
index 5836d80..0000000
--- a/google/cloud/version.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__version__ = "2.5.0"
diff --git a/mypy.ini b/mypy.ini
deleted file mode 100644
index 5663b40..0000000
--- a/mypy.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[mypy]
-python_version = 3.6
-namespace_packages = True
-ignore_missing_imports = True
-
-[mypy-google.protobuf]
-ignore_missing_imports = True
diff --git a/noxfile.py b/noxfile.py
deleted file mode 100644
index d7012a0..0000000
--- a/noxfile.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import absolute_import
-import os
-import shutil
-
-import nox
-
-
-BLACK_VERSION = "black==23.7.0"
-BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
-
-DEFAULT_PYTHON_VERSION = "3.14"
-CURRENT_DIRECTORY = os.path.abspath(os.path.dirname(__file__))
-
-# Error if a python version is missing
-nox.options.error_on_missing_interpreters = True
-
-
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def lint(session):
- """Run linters.
-
- Returns a failure if the linters find linting errors or sufficiently
- serious code quality issues.
- """
- session.install("flake8", "flake8-import-order", BLACK_VERSION)
- session.install(".")
- session.run("flake8", "google", "tests")
-
-
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def mypy(session):
- """Run type-checking."""
- session.install(".", "mypy")
- # Exclude types-protobuf==4.24.0.20240106
- # See https://github.com/python/typeshed/issues/11254
- session.install(
- "types-setuptools",
- "types-requests",
- "types-mock",
- "types-protobuf!=4.24.0.20240106",
- )
- session.run("mypy", "-p", "google", "-p", "tests")
-
-
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def blacken(session):
- """Run black.
-
- Format code to uniform standard.
- """
- session.install(BLACK_VERSION)
- session.run("black", *BLACK_PATHS)
-
-
-def default(session):
- """Default unit test session.
- This is intended to be run **without** an interpreter set, so
- that the current ``python`` (on the ``PATH``) or the version of
- Python corresponding to the ``nox`` binary the ``PATH`` can
- run the tests.
- """
- constraints_path = os.path.join(
- CURRENT_DIRECTORY, "testing", "constraints-{}.txt".format(session.python)
- )
-
- # Install all test dependencies, then install local packages in-place.
- session.install("pytest", "pytest-cov", "-c", constraints_path)
- session.install("-e", ".[grpc]", "-c", constraints_path)
-
- # Run py.test against the unit tests.
- session.run(
- "py.test",
- "--quiet",
- "--cov=google.cloud",
- "--cov=tests.unit",
- "--cov-append",
- "--cov-config=.coveragerc",
- "--cov-report=",
- "--cov-fail-under=0",
- os.path.join("tests", "unit"),
- *session.posargs,
- )
-
-
-@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"])
-def unit(session):
- """Default unit test session."""
- default(session)
-
-
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def lint_setup_py(session):
- """Verify that setup.py is valid (including RST check)."""
-
- session.install("docutils", "Pygments", "setuptools")
- session.run("python", "setup.py", "check", "--restructuredtext", "--strict")
-
-
-@nox.session(python=DEFAULT_PYTHON_VERSION)
-def cover(session):
- """Run the final coverage report.
-
- This outputs the coverage report aggregating coverage from the unit
- test runs (not system test runs), and then erases coverage data.
- """
- session.install("coverage", "pytest-cov")
- session.run("coverage", "report", "--show-missing", "--fail-under=100")
- session.run("coverage", "erase")
-
-
-# Keep docs session at Python 3.10 until
-# https://github.com/googleapis/sphinx-docfx-yaml/issues/345 is fixed
-@nox.session(python="3.10")
-def docs(session):
- """Build the docs for this library."""
-
- session.install(".", "grpcio >= 1.8.2", "grpcio-gcp >= 0.2.2")
- session.install("-e", ".")
- session.install(
- # We need to pin to specific versions of the `sphinxcontrib-*` packages
- # which still support sphinx 4.x.
- # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344
- # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345.
- "sphinxcontrib-applehelp==1.0.4",
- "sphinxcontrib-devhelp==1.0.2",
- "sphinxcontrib-htmlhelp==2.0.1",
- "sphinxcontrib-qthelp==1.0.3",
- "sphinxcontrib-serializinghtml==1.1.5",
- "sphinx==4.5.0",
- "alabaster",
- "recommonmark",
- )
-
- shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
- session.run(
- "sphinx-build",
- "-W", # warnings as errors
- "-T", # show full traceback on exception
- "-N", # no colors
- "-b",
- "html",
- "-d",
- os.path.join("docs", "_build", "doctrees", ""),
- os.path.join("docs", ""),
- os.path.join("docs", "_build", "html", ""),
- )
-
-
-# Keep docfx session at Python 3.10 until
-# https://github.com/googleapis/sphinx-docfx-yaml/issues/345 is fixed
-@nox.session(python="3.10")
-def docfx(session):
- """Build the docfx yaml files for this library."""
-
- session.install("-e", ".")
- session.install(
- # We need to pin to specific versions of the `sphinxcontrib-*` packages
- # which still support sphinx 4.x.
- # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344
- # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345.
- "sphinxcontrib-applehelp==1.0.4",
- "sphinxcontrib-devhelp==1.0.2",
- "sphinxcontrib-htmlhelp==2.0.1",
- "sphinxcontrib-qthelp==1.0.3",
- "sphinxcontrib-serializinghtml==1.1.5",
- "gcp-sphinx-docfx-yaml",
- "alabaster",
- "recommonmark",
- )
-
- shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
- session.run(
- "sphinx-build",
- "-T", # show full traceback on exception
- "-N", # no colors
- "-D",
- (
- "extensions=sphinx.ext.autodoc,"
- "sphinx.ext.autosummary,"
- "docfx_yaml.extension,"
- "sphinx.ext.intersphinx,"
- "sphinx.ext.coverage,"
- "sphinx.ext.napoleon,"
- "sphinx.ext.todo,"
- "sphinx.ext.viewcode,"
- "recommonmark"
- ),
- "-b",
- "html",
- "-d",
- os.path.join("docs", "_build", "doctrees", ""),
- os.path.join("docs", ""),
- os.path.join("docs", "_build", "html", ""),
- )
diff --git a/pylint.config.py b/pylint.config.py
deleted file mode 100644
index 5d64b9d..0000000
--- a/pylint.config.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2017 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""This module is used to configure gcp-devrel-py-tools run-pylint."""
-
-# Library configuration
-
-# library_additions = {}
-# library_replacements = {}
-
-# Test configuration
-
-# test_additions = copy.deepcopy(library_additions)
-# test_replacements = copy.deepcopy(library_replacements)
diff --git a/pytest.ini b/pytest.ini
deleted file mode 100644
index dd32e71..0000000
--- a/pytest.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[pytest]
-filterwarnings =
- # treat all warnings as errors
- error
- # Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is fixed
- ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning
- # Remove after support for Python 3.7 is dropped
- ignore:After January 1, 2024, new releases of this library will drop support for Python 3.7:DeprecationWarning
- # Remove once the minimum supported version of `google-api-core` is 2.15.0
- ignore:.*pkg_resources.declare_namespace:DeprecationWarning
- ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
- # Remove after support for Python 3.8, 3.9 and/or 3.10+ is dropped
- ignore:\s*You are using a (non-supported )?Python version \(?3\.(8|9|1[0-9]+):DeprecationWarning
- ignore:\s*You are using a (non-supported )?Python version \(?3\.(8|9|1[0-9]+):FutureWarning
diff --git a/renovate.json b/renovate.json
deleted file mode 100644
index c7875c4..0000000
--- a/renovate.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": [
- "config:base",
- "group:all",
- ":preserveSemverRanges",
- ":disableDependencyDashboard"
- ],
- "ignorePaths": [".pre-commit-config.yaml", ".kokoro/requirements.txt", "setup.py", ".github/workflows/unittest.yml"],
- "pip_requirements": {
- "fileMatch": ["requirements-test.txt", "samples/[\\S/]*constraints.txt", "samples/[\\S/]*constraints-test.txt"]
- }
-}
diff --git a/scripts/decrypt-secrets.sh b/scripts/decrypt-secrets.sh
deleted file mode 100755
index 120b0dd..0000000
--- a/scripts/decrypt-secrets.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-
-# Copyright 2024 Google LLC All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-ROOT=$( dirname "$DIR" )
-
-# Work from the project root.
-cd $ROOT
-
-# Prevent it from overriding files.
-# We recommend that sample authors use their own service account files and cloud project.
-# In that case, they are supposed to prepare these files by themselves.
-if [[ -f "testing/test-env.sh" ]] || \
- [[ -f "testing/service-account.json" ]] || \
- [[ -f "testing/client-secrets.json" ]]; then
- echo "One or more target files exist, aborting."
- exit 1
-fi
-
-# Use SECRET_MANAGER_PROJECT if set, fallback to cloud-devrel-kokoro-resources.
-PROJECT_ID="${SECRET_MANAGER_PROJECT:-cloud-devrel-kokoro-resources}"
-
-gcloud secrets versions access latest --secret="python-docs-samples-test-env" \
- --project="${PROJECT_ID}" \
- > testing/test-env.sh
-gcloud secrets versions access latest \
- --secret="python-docs-samples-service-account" \
- --project="${PROJECT_ID}" \
- > testing/service-account.json
-gcloud secrets versions access latest \
- --secret="python-docs-samples-client-secrets" \
- --project="${PROJECT_ID}" \
- > testing/client-secrets.json
diff --git a/scripts/readme-gen/readme_gen.py b/scripts/readme-gen/readme_gen.py
deleted file mode 100644
index 8f5e248..0000000
--- a/scripts/readme-gen/readme_gen.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Generates READMEs using configuration defined in yaml."""
-
-import argparse
-import io
-import os
-import subprocess
-
-import jinja2
-import yaml
-
-
-jinja_env = jinja2.Environment(
- trim_blocks=True,
- loader=jinja2.FileSystemLoader(
- os.path.abspath(os.path.join(os.path.dirname(__file__), "templates"))
- ),
- autoescape=True,
-)
-
-README_TMPL = jinja_env.get_template("README.tmpl.rst")
-
-
-def get_help(file):
- return subprocess.check_output(["python", file, "--help"]).decode()
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument("source")
- parser.add_argument("--destination", default="README.rst")
-
- args = parser.parse_args()
-
- source = os.path.abspath(args.source)
- root = os.path.dirname(source)
- destination = os.path.join(root, args.destination)
-
- jinja_env.globals["get_help"] = get_help
-
- with io.open(source, "r") as f:
- config = yaml.load(f)
-
- # This allows get_help to execute in the right directory.
- os.chdir(root)
-
- output = README_TMPL.render(config)
-
- with io.open(destination, "w") as f:
- f.write(output)
-
-
-if __name__ == "__main__":
- main()
diff --git a/scripts/readme-gen/templates/README.tmpl.rst b/scripts/readme-gen/templates/README.tmpl.rst
deleted file mode 100644
index 4fd2397..0000000
--- a/scripts/readme-gen/templates/README.tmpl.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-{# The following line is a lie. BUT! Once jinja2 is done with it, it will
- become truth! #}
-.. This file is automatically generated. Do not edit this file directly.
-
-{{product.name}} Python Samples
-===============================================================================
-
-.. image:: https://gstatic.com/cloudssh/images/open-btn.png
- :target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor={{folder}}/README.rst
-
-
-This directory contains samples for {{product.name}}. {{product.description}}
-
-{{description}}
-
-.. _{{product.name}}: {{product.url}}
-
-{% if required_api_url %}
-To run the sample, you need to enable the API at: {{required_api_url}}
-{% endif %}
-
-{% if required_role %}
-To run the sample, you need to have `{{required_role}}` role.
-{% endif %}
-
-{{other_required_steps}}
-
-{% if setup %}
-Setup
--------------------------------------------------------------------------------
-
-{% for section in setup %}
-
-{% include section + '.tmpl.rst' %}
-
-{% endfor %}
-{% endif %}
-
-{% if samples %}
-Samples
--------------------------------------------------------------------------------
-
-{% for sample in samples %}
-{{sample.name}}
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-{% if not sample.hide_cloudshell_button %}
-.. image:: https://gstatic.com/cloudssh/images/open-btn.png
- :target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor={{folder}}/{{sample.file}},{{folder}}/README.rst
-{% endif %}
-
-
-{{sample.description}}
-
-To run this sample:
-
-.. code-block:: bash
-
- $ python {{sample.file}}
-{% if sample.show_help %}
-
- {{get_help(sample.file)|indent}}
-{% endif %}
-
-
-{% endfor %}
-{% endif %}
-
-{% if cloud_client_library %}
-
-The client library
--------------------------------------------------------------------------------
-
-This sample uses the `Google Cloud Client Library for Python`_.
-You can read the documentation for more details on API usage and use GitHub
-to `browse the source`_ and `report issues`_.
-
-.. _Google Cloud Client Library for Python:
- https://googlecloudplatform.github.io/google-cloud-python/
-.. _browse the source:
- https://github.com/GoogleCloudPlatform/google-cloud-python
-.. _report issues:
- https://github.com/GoogleCloudPlatform/google-cloud-python/issues
-
-{% endif %}
-
-.. _Google Cloud SDK: https://cloud.google.com/sdk/
\ No newline at end of file
diff --git a/scripts/readme-gen/templates/auth.tmpl.rst b/scripts/readme-gen/templates/auth.tmpl.rst
deleted file mode 100644
index 1446b94..0000000
--- a/scripts/readme-gen/templates/auth.tmpl.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Authentication
-++++++++++++++
-
-This sample requires you to have authentication setup. Refer to the
-`Authentication Getting Started Guide`_ for instructions on setting up
-credentials for applications.
-
-.. _Authentication Getting Started Guide:
- https://cloud.google.com/docs/authentication/getting-started
diff --git a/scripts/readme-gen/templates/auth_api_key.tmpl.rst b/scripts/readme-gen/templates/auth_api_key.tmpl.rst
deleted file mode 100644
index 11957ce..0000000
--- a/scripts/readme-gen/templates/auth_api_key.tmpl.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Authentication
-++++++++++++++
-
-Authentication for this service is done via an `API Key`_. To obtain an API
-Key:
-
-1. Open the `Cloud Platform Console`_
-2. Make sure that billing is enabled for your project.
-3. From the **Credentials** page, create a new **API Key** or use an existing
- one for your project.
-
-.. _API Key:
- https://developers.google.com/api-client-library/python/guide/aaa_apikeys
-.. _Cloud Console: https://console.cloud.google.com/project?_
diff --git a/scripts/readme-gen/templates/install_deps.tmpl.rst b/scripts/readme-gen/templates/install_deps.tmpl.rst
deleted file mode 100644
index 6f069c6..0000000
--- a/scripts/readme-gen/templates/install_deps.tmpl.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-Install Dependencies
-++++++++++++++++++++
-
-#. Clone python-docs-samples and change directory to the sample directory you want to use.
-
- .. code-block:: bash
-
- $ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
-
-#. Install `pip`_ and `virtualenv`_ if you do not already have them. You may want to refer to the `Python Development Environment Setup Guide`_ for Google Cloud Platform for instructions.
-
- .. _Python Development Environment Setup Guide:
- https://cloud.google.com/python/setup
-
-#. Create a virtualenv. Samples are compatible with Python 3.7+.
-
- .. code-block:: bash
-
- $ virtualenv env
- $ source env/bin/activate
-
-#. Install the dependencies needed to run the samples.
-
- .. code-block:: bash
-
- $ pip install -r requirements.txt
-
-.. _pip: https://pip.pypa.io/
-.. _virtualenv: https://virtualenv.pypa.io/
diff --git a/scripts/readme-gen/templates/install_portaudio.tmpl.rst b/scripts/readme-gen/templates/install_portaudio.tmpl.rst
deleted file mode 100644
index 5ea33d1..0000000
--- a/scripts/readme-gen/templates/install_portaudio.tmpl.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-Install PortAudio
-+++++++++++++++++
-
-Install `PortAudio`_. This is required by the `PyAudio`_ library to stream
-audio from your computer's microphone. PyAudio depends on PortAudio for cross-platform compatibility, and is installed differently depending on the
-platform.
-
-* For Mac OS X, you can use `Homebrew`_::
-
- brew install portaudio
-
- **Note**: if you encounter an error when running `pip install` that indicates
- it can't find `portaudio.h`, try running `pip install` with the following
- flags::
-
- pip install --global-option='build_ext' \
- --global-option='-I/usr/local/include' \
- --global-option='-L/usr/local/lib' \
- pyaudio
-
-* For Debian / Ubuntu Linux::
-
- apt-get install portaudio19-dev python-all-dev
-
-* Windows may work without having to install PortAudio explicitly (it will get
- installed with PyAudio).
-
-For more details, see the `PyAudio installation`_ page.
-
-
-.. _PyAudio: https://people.csail.mit.edu/hubert/pyaudio/
-.. _PortAudio: http://www.portaudio.com/
-.. _PyAudio installation:
- https://people.csail.mit.edu/hubert/pyaudio/#downloads
-.. _Homebrew: http://brew.sh
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 8e7dd9d..0000000
--- a/setup.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2018 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import io
-import os
-
-import setuptools
-
-
-# Package metadata.
-
-name = "google-cloud-core"
-description = "Google Cloud API client core library"
-# Should be one of:
-# 'Development Status :: 3 - Alpha'
-# 'Development Status :: 4 - Beta'
-# 'Development Status :: 5 - Production/Stable'
-release_status = "Development Status :: 5 - Production/Stable"
-dependencies = [
- "google-api-core >= 1.31.6, <3.0.0,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0",
- "google-auth >= 1.25.0, < 3.0.0",
- "importlib-metadata > 1.0.0; python_version<'3.8'",
-]
-extras = {
- "grpc": [
- "grpcio >= 1.38.0, < 2.0.0; python_version < '3.14'",
- "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'",
- "grpcio-status >= 1.38.0, < 2.0.0",
- ],
-}
-
-# Setup boilerplate below this line.
-
-package_root = os.path.abspath(os.path.dirname(__file__))
-
-version = {}
-with open(os.path.join(package_root, "google/cloud/version.py")) as fp:
- exec(fp.read(), version)
-version = version["__version__"]
-
-readme_filename = os.path.join(package_root, "README.rst")
-with io.open(readme_filename, encoding="utf-8") as readme_file:
- readme = readme_file.read()
-
-# Only include packages under the 'google' namespace. Do not include tests,
-# benchmarks, etc.
-packages = [
- package
- for package in setuptools.find_namespace_packages()
- if package.startswith("google")
-]
-
-setuptools.setup(
- name=name,
- version=version,
- description=description,
- long_description=readme,
- author="Google LLC",
- author_email="googleapis-packages@google.com",
- license="Apache 2.0",
- url="https://github.com/googleapis/python-cloud-core",
- classifiers=[
- release_status,
- "Intended Audience :: Developers",
- "License :: OSI Approved :: Apache Software License",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Programming Language :: Python :: 3.14",
- "Operating System :: OS Independent",
- "Topic :: Internet",
- ],
- platforms="Posix; MacOS X; Windows",
- packages=packages,
- install_requires=dependencies,
- extras_require=extras,
- python_requires=">=3.7",
- include_package_data=True,
- zip_safe=False,
-)
diff --git a/testing/.gitignore b/testing/.gitignore
deleted file mode 100644
index b05fbd6..0000000
--- a/testing/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-test-env.sh
-service-account.json
-client-secrets.json
\ No newline at end of file
diff --git a/testing/constraints-3.10.txt b/testing/constraints-3.10.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.11.txt b/testing/constraints-3.11.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.12.txt b/testing/constraints-3.12.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.13.txt b/testing/constraints-3.13.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.7.txt b/testing/constraints-3.7.txt
deleted file mode 100644
index 2964afa..0000000
--- a/testing/constraints-3.7.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# This constraints file is used to check that lower bounds
-# are correct in setup.py
-# List *all* library dependencies and extras in this file.
-# Pin the version to the lower bound.
-#
-# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev",
-# Then this file should have foo==1.14.0
-google-api-core==1.31.6
-google-auth==1.25.0
-grpcio==1.38.0
diff --git a/testing/constraints-3.8.txt b/testing/constraints-3.8.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/testing/constraints-3.9.txt b/testing/constraints-3.9.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/tests/__init__.py b/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py
deleted file mode 100644
index df379f1..0000000
--- a/tests/unit/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py
deleted file mode 100644
index 2901602..0000000
--- a/tests/unit/test__helpers.py
+++ /dev/null
@@ -1,847 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from unittest import mock
-
-
-class Test__LocalStack(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud._helpers import _LocalStack
-
- return _LocalStack
-
- def _make_one(self):
- return self._get_target_class()()
-
- def test_it(self):
- batch1, batch2 = object(), object()
- batches = self._make_one()
- self.assertEqual(list(batches), [])
- self.assertIsNone(batches.top)
- batches.push(batch1)
- self.assertIs(batches.top, batch1)
- batches.push(batch2)
- self.assertIs(batches.top, batch2)
- popped = batches.pop()
- self.assertIs(popped, batch2)
- self.assertIs(batches.top, batch1)
- self.assertEqual(list(batches), [batch1])
- popped = batches.pop()
- self.assertIsNone(batches.top)
- self.assertEqual(list(batches), [])
-
-
-class Test__ensure_tuple_or_list(unittest.TestCase):
- def _call_fut(self, arg_name, tuple_or_list):
- from google.cloud._helpers import _ensure_tuple_or_list
-
- return _ensure_tuple_or_list(arg_name, tuple_or_list)
-
- def test_valid_tuple(self):
- valid_tuple_or_list = ("a", "b", "c", "d")
- result = self._call_fut("ARGNAME", valid_tuple_or_list)
- self.assertEqual(result, ["a", "b", "c", "d"])
-
- def test_valid_list(self):
- valid_tuple_or_list = ["a", "b", "c", "d"]
- result = self._call_fut("ARGNAME", valid_tuple_or_list)
- self.assertEqual(result, valid_tuple_or_list)
-
- def test_invalid(self):
- invalid_tuple_or_list = object()
- with self.assertRaises(TypeError):
- self._call_fut("ARGNAME", invalid_tuple_or_list)
-
- def test_invalid_iterable(self):
- invalid_tuple_or_list = "FOO"
- with self.assertRaises(TypeError):
- self._call_fut("ARGNAME", invalid_tuple_or_list)
-
-
-class Test__determine_default_project(unittest.TestCase):
- def _call_fut(self, project=None):
- from google.cloud._helpers import _determine_default_project
-
- return _determine_default_project(project=project)
-
- def test_it(self):
- with mock.patch("google.auth.default", autospec=True) as default:
- default.return_value = (mock.sentinel.credentials, mock.sentinel.project)
- project = self._call_fut()
-
- self.assertEqual(project, mock.sentinel.project)
- default.assert_called_once_with()
-
- def test_explicit(self):
- with mock.patch("google.auth.default", autospec=True) as default:
- project = self._call_fut(mock.sentinel.project)
-
- self.assertEqual(project, mock.sentinel.project)
- self.assertFalse(default.called)
-
-
-class Test__millis(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _millis
-
- return _millis(value)
-
- def test_one_second_from_epoch(self):
- import datetime
- from google.cloud._helpers import UTC
-
- WHEN = datetime.datetime(1970, 1, 1, 0, 0, 1, tzinfo=UTC)
- self.assertEqual(self._call_fut(WHEN), 1000)
-
-
-class Test__microseconds_from_datetime(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _microseconds_from_datetime
-
- return _microseconds_from_datetime(value)
-
- def test_it(self):
- import datetime
-
- microseconds = 314159
- timestamp = datetime.datetime(
- 1970, 1, 1, hour=0, minute=0, second=0, microsecond=microseconds
- )
- result = self._call_fut(timestamp)
- self.assertEqual(result, microseconds)
-
-
-class Test__millis_from_datetime(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _millis_from_datetime
-
- return _millis_from_datetime(value)
-
- def test_w_none(self):
- self.assertIsNone(self._call_fut(None))
-
- def test_w_utc_datetime(self):
- import datetime
- from google.cloud._helpers import UTC
- from google.cloud._helpers import _microseconds_from_datetime
-
- NOW = datetime.datetime.now().replace(tzinfo=UTC)
- NOW_MICROS = _microseconds_from_datetime(NOW)
- MILLIS = NOW_MICROS // 1000
- result = self._call_fut(NOW)
- self.assertIsInstance(result, int)
- self.assertEqual(result, MILLIS)
-
- def test_w_non_utc_datetime(self):
- import datetime
- from google.cloud._helpers import _microseconds_from_datetime
-
- offset = datetime.timedelta(hours=-1)
- zone = datetime.timezone(offset=offset, name="CET")
- NOW = datetime.datetime(2015, 7, 28, 16, 34, 47, tzinfo=zone)
- NOW_MICROS = _microseconds_from_datetime(NOW)
- MILLIS = NOW_MICROS // 1000
- result = self._call_fut(NOW)
- self.assertIsInstance(result, int)
- self.assertEqual(result, MILLIS)
-
- def test_w_naive_datetime(self):
- import datetime
- from google.cloud._helpers import UTC
- from google.cloud._helpers import _microseconds_from_datetime
-
- NOW = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)
- UTC_NOW = NOW.replace(tzinfo=UTC)
- UTC_NOW_MICROS = _microseconds_from_datetime(UTC_NOW)
- MILLIS = UTC_NOW_MICROS // 1000
- result = self._call_fut(NOW)
- self.assertIsInstance(result, int)
- self.assertEqual(result, MILLIS)
-
-
-class Test__datetime_from_microseconds(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _datetime_from_microseconds
-
- return _datetime_from_microseconds(value)
-
- def test_it(self):
- import datetime
- from google.cloud._helpers import UTC
- from google.cloud._helpers import _microseconds_from_datetime
-
- NOW = datetime.datetime(2015, 7, 29, 17, 45, 21, 123456, tzinfo=UTC)
- NOW_MICROS = _microseconds_from_datetime(NOW)
- self.assertEqual(self._call_fut(NOW_MICROS), NOW)
-
-
-class Test___date_from_iso8601_date(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _date_from_iso8601_date
-
- return _date_from_iso8601_date(value)
-
- def test_todays_date(self):
- import datetime
-
- TODAY = datetime.date.today()
- self.assertEqual(self._call_fut(TODAY.strftime("%Y-%m-%d")), TODAY)
-
-
-class Test___time_from_iso8601_time_naive(unittest.TestCase):
- def _call_fut(self, value):
- from google.cloud._helpers import _time_from_iso8601_time_naive
-
- return _time_from_iso8601_time_naive(value)
-
- def test_todays_date(self):
- import datetime
-
- WHEN = datetime.time(12, 9, 42)
- self.assertEqual(self._call_fut(("12:09:42")), WHEN)
-
- def test_w_microseconds(self):
- import datetime
-
- WHEN = datetime.time(12, 9, 42, 123456)
- self.assertEqual(self._call_fut(("12:09:42.123456")), WHEN)
-
- def test_w_millis_fail(self):
- with self.assertRaises(ValueError):
- self._call_fut("12:09:42.123")
-
-
-class Test__rfc3339_to_datetime(unittest.TestCase):
- def _call_fut(self, dt_str):
- from google.cloud._helpers import _rfc3339_to_datetime
-
- return _rfc3339_to_datetime(dt_str)
-
- def test_w_bogus_zone(self):
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- micros = 123456789
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%06dBOGUS" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- micros,
- )
- with self.assertRaises(ValueError):
- self._call_fut(dt_str)
-
- def test_w_microseconds(self):
- import datetime
- from google.cloud._helpers import UTC
-
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- micros = 123456
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%06dZ" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- micros,
- )
- result = self._call_fut(dt_str)
- expected_result = datetime.datetime(
- year, month, day, hour, minute, seconds, micros, UTC
- )
- self.assertEqual(result, expected_result)
-
- def test_w_naonseconds(self):
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- nanos = 123456789
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%09dZ" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- nanos,
- )
- with self.assertRaises(ValueError):
- self._call_fut(dt_str)
-
-
-class Test__rfc3339_nanos_to_datetime(unittest.TestCase):
- def _call_fut(self, dt_str):
- from google.cloud._helpers import _rfc3339_nanos_to_datetime
-
- return _rfc3339_nanos_to_datetime(dt_str)
-
- def test_w_bogus_zone(self):
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- micros = 123456789
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%06dBOGUS" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- micros,
- )
- with self.assertRaises(ValueError):
- self._call_fut(dt_str)
-
- def test_w_truncated_nanos(self):
- import datetime
- from google.cloud._helpers import UTC
-
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- truncateds_and_micros = [
- ("12345678", 123456),
- ("1234567", 123456),
- ("123456", 123456),
- ("12345", 123450),
- ("1234", 123400),
- ("123", 123000),
- ("12", 120000),
- ("1", 100000),
- ]
-
- for truncated, micros in truncateds_and_micros:
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%sZ" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- truncated,
- )
- result = self._call_fut(dt_str)
- expected_result = datetime.datetime(
- year, month, day, hour, minute, seconds, micros, UTC
- )
- self.assertEqual(result, expected_result)
-
- def test_without_nanos(self):
- import datetime
- from google.cloud._helpers import UTC
-
- year = 1988
- month = 4
- day = 29
- hour = 12
- minute = 12
- seconds = 12
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02dZ" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- )
- result = self._call_fut(dt_str)
- expected_result = datetime.datetime(
- year, month, day, hour, minute, seconds, 0, UTC
- )
- self.assertEqual(result, expected_result)
-
- def test_w_naonseconds(self):
- import datetime
- from google.cloud._helpers import UTC
-
- year = 2009
- month = 12
- day = 17
- hour = 12
- minute = 44
- seconds = 32
- nanos = 123456789
- micros = nanos // 1000
-
- dt_str = "%d-%02d-%02dT%02d:%02d:%02d.%09dZ" % (
- year,
- month,
- day,
- hour,
- minute,
- seconds,
- nanos,
- )
- result = self._call_fut(dt_str)
- expected_result = datetime.datetime(
- year, month, day, hour, minute, seconds, micros, UTC
- )
- self.assertEqual(result, expected_result)
-
-
-class Test__datetime_to_rfc3339(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import _datetime_to_rfc3339
-
- return _datetime_to_rfc3339(*args, **kwargs)
-
- @staticmethod
- def _make_timezone(offset):
- import datetime
-
- return datetime.timezone(offset=offset, name="CET")
-
- def test_w_utc_datetime(self):
- import datetime
- from google.cloud._helpers import UTC
-
- TIMESTAMP = datetime.datetime(2016, 4, 5, 13, 30, 0, tzinfo=UTC)
- result = self._call_fut(TIMESTAMP, ignore_zone=False)
- self.assertEqual(result, "2016-04-05T13:30:00.000000Z")
-
- def test_w_non_utc_datetime(self):
- import datetime
-
- zone = self._make_timezone(offset=datetime.timedelta(hours=-1))
- TIMESTAMP = datetime.datetime(2016, 4, 5, 13, 30, 0, tzinfo=zone)
- result = self._call_fut(TIMESTAMP, ignore_zone=False)
- self.assertEqual(result, "2016-04-05T14:30:00.000000Z")
-
- def test_w_non_utc_datetime_and_ignore_zone(self):
- import datetime
-
- zone = self._make_timezone(offset=datetime.timedelta(hours=-1))
- TIMESTAMP = datetime.datetime(2016, 4, 5, 13, 30, 0, tzinfo=zone)
- result = self._call_fut(TIMESTAMP)
- self.assertEqual(result, "2016-04-05T13:30:00.000000Z")
-
- def test_w_naive_datetime(self):
- import datetime
-
- TIMESTAMP = datetime.datetime(2016, 4, 5, 13, 30, 0)
- result = self._call_fut(TIMESTAMP)
- self.assertEqual(result, "2016-04-05T13:30:00.000000Z")
-
-
-class Test__to_bytes(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import _to_bytes
-
- return _to_bytes(*args, **kwargs)
-
- def test_with_bytes(self):
- value = b"bytes-val"
- self.assertEqual(self._call_fut(value), value)
-
- def test_with_unicode(self):
- value = "string-val"
- encoded_value = b"string-val"
- self.assertEqual(self._call_fut(value), encoded_value)
-
- def test_unicode_non_ascii(self):
- value = "\u2013" # Long hyphen
- encoded_value = b"\xe2\x80\x93"
- self.assertRaises(UnicodeEncodeError, self._call_fut, value)
- self.assertEqual(self._call_fut(value, encoding="utf-8"), encoded_value)
-
- def test_with_nonstring_type(self):
- value = object()
- self.assertRaises(TypeError, self._call_fut, value)
-
-
-class Test__bytes_to_unicode(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import _bytes_to_unicode
-
- return _bytes_to_unicode(*args, **kwargs)
-
- def test_with_bytes(self):
- value = b"bytes-val"
- encoded_value = "bytes-val"
- self.assertEqual(self._call_fut(value), encoded_value)
-
- def test_with_unicode(self):
- value = "string-val"
- encoded_value = "string-val"
- self.assertEqual(self._call_fut(value), encoded_value)
-
- def test_with_nonstring_type(self):
- value = object()
- self.assertRaises(ValueError, self._call_fut, value)
-
-
-class Test__pb_timestamp_to_datetime(unittest.TestCase):
- def _call_fut(self, timestamp):
- from google.cloud._helpers import _pb_timestamp_to_datetime
-
- return _pb_timestamp_to_datetime(timestamp)
-
- def test_it(self):
- import datetime
- from google.protobuf.timestamp_pb2 import Timestamp
- from google.cloud._helpers import UTC
-
- # Epoch is midnight on January 1, 1970 ...
- dt_stamp = datetime.datetime(
- 1970,
- month=1,
- day=1,
- hour=0,
- minute=1,
- second=1,
- microsecond=1234,
- tzinfo=UTC,
- )
- # ... so 1 minute and 1 second after is 61 seconds and 1234
- # microseconds is 1234000 nanoseconds.
- timestamp = Timestamp(seconds=61, nanos=1234000)
- self.assertEqual(self._call_fut(timestamp), dt_stamp)
-
-
-class Test__from_any_pb(unittest.TestCase):
- def _call_fut(self, pb_type, any_pb):
- from google.cloud._helpers import _from_any_pb
-
- return _from_any_pb(pb_type, any_pb)
-
- def test_success(self):
- from google.protobuf import any_pb2
- from google.type import date_pb2
-
- in_message = date_pb2.Date(year=1990)
- in_message_any = any_pb2.Any()
- in_message_any.Pack(in_message)
- out_message = self._call_fut(date_pb2.Date, in_message_any)
- self.assertEqual(in_message, out_message)
-
- def test_failure(
- self,
- ):
- from google.protobuf import any_pb2
- from google.type import date_pb2
- from google.type import timeofday_pb2
-
- in_message = any_pb2.Any()
- in_message.Pack(date_pb2.Date(year=1990))
-
- with self.assertRaises(TypeError):
- self._call_fut(timeofday_pb2.TimeOfDay, in_message)
-
-
-class Test__pb_timestamp_to_rfc3339(unittest.TestCase):
- def _call_fut(self, timestamp):
- from google.cloud._helpers import _pb_timestamp_to_rfc3339
-
- return _pb_timestamp_to_rfc3339(timestamp)
-
- def test_it(self):
- from google.protobuf.timestamp_pb2 import Timestamp
-
- # Epoch is midnight on January 1, 1970 ...
- # ... so 1 minute and 1 second after is 61 seconds and 1234
- # microseconds is 1234000 nanoseconds.
- timestamp = Timestamp(seconds=61, nanos=1234000)
- self.assertEqual(self._call_fut(timestamp), "1970-01-01T00:01:01.001234Z")
-
-
-class Test__datetime_to_pb_timestamp(unittest.TestCase):
- def _call_fut(self, when):
- from google.cloud._helpers import _datetime_to_pb_timestamp
-
- return _datetime_to_pb_timestamp(when)
-
- def test_it(self):
- import datetime
- from google.protobuf.timestamp_pb2 import Timestamp
- from google.cloud._helpers import UTC
-
- # Epoch is midnight on January 1, 1970 ...
- dt_stamp = datetime.datetime(
- 1970,
- month=1,
- day=1,
- hour=0,
- minute=1,
- second=1,
- microsecond=1234,
- tzinfo=UTC,
- )
- # ... so 1 minute and 1 second after is 61 seconds and 1234
- # microseconds is 1234000 nanoseconds.
- timestamp = Timestamp(seconds=61, nanos=1234000)
- self.assertEqual(self._call_fut(dt_stamp), timestamp)
-
-
-class Test__timedelta_to_duration_pb(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import _timedelta_to_duration_pb
-
- return _timedelta_to_duration_pb(*args, **kwargs)
-
- def test_it(self):
- import datetime
- from google.protobuf import duration_pb2
-
- seconds = microseconds = 1
- timedelta_val = datetime.timedelta(seconds=seconds, microseconds=microseconds)
- result = self._call_fut(timedelta_val)
- self.assertIsInstance(result, duration_pb2.Duration)
- self.assertEqual(result.seconds, seconds)
- self.assertEqual(result.nanos, 1000 * microseconds)
-
- def test_with_negative_microseconds(self):
- import datetime
- from google.protobuf import duration_pb2
-
- seconds = 1
- microseconds = -5
- timedelta_val = datetime.timedelta(seconds=seconds, microseconds=microseconds)
- result = self._call_fut(timedelta_val)
- self.assertIsInstance(result, duration_pb2.Duration)
- self.assertEqual(result.seconds, seconds - 1)
- self.assertEqual(result.nanos, 10**9 + 1000 * microseconds)
-
- def test_with_negative_seconds(self):
- import datetime
- from google.protobuf import duration_pb2
-
- seconds = -1
- microseconds = 5
- timedelta_val = datetime.timedelta(seconds=seconds, microseconds=microseconds)
- result = self._call_fut(timedelta_val)
- self.assertIsInstance(result, duration_pb2.Duration)
- self.assertEqual(result.seconds, seconds + 1)
- self.assertEqual(result.nanos, -(10**9 - 1000 * microseconds))
-
-
-class Test__duration_pb_to_timedelta(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import _duration_pb_to_timedelta
-
- return _duration_pb_to_timedelta(*args, **kwargs)
-
- def test_it(self):
- import datetime
- from google.protobuf import duration_pb2
-
- seconds = microseconds = 1
- duration_pb = duration_pb2.Duration(seconds=seconds, nanos=1000 * microseconds)
- timedelta_val = datetime.timedelta(seconds=seconds, microseconds=microseconds)
- result = self._call_fut(duration_pb)
- self.assertIsInstance(result, datetime.timedelta)
- self.assertEqual(result, timedelta_val)
-
-
-class Test__name_from_project_path(unittest.TestCase):
- PROJECT = "PROJECT"
- THING_NAME = "THING_NAME"
- TEMPLATE = r"projects/(?P\w+)/things/(?P\w+)"
-
- def _call_fut(self, path, project, template):
- from google.cloud._helpers import _name_from_project_path
-
- return _name_from_project_path(path, project, template)
-
- def test_w_invalid_path_length(self):
- PATH = "projects/foo"
- with self.assertRaises(ValueError):
- self._call_fut(PATH, None, self.TEMPLATE)
-
- def test_w_invalid_path_segments(self):
- PATH = "foo/%s/bar/%s" % (self.PROJECT, self.THING_NAME)
- with self.assertRaises(ValueError):
- self._call_fut(PATH, self.PROJECT, self.TEMPLATE)
-
- def test_w_mismatched_project(self):
- PROJECT1 = "PROJECT1"
- PROJECT2 = "PROJECT2"
- PATH = "projects/%s/things/%s" % (PROJECT1, self.THING_NAME)
- with self.assertRaises(ValueError):
- self._call_fut(PATH, PROJECT2, self.TEMPLATE)
-
- def test_w_valid_data_w_compiled_regex(self):
- import re
-
- template = re.compile(self.TEMPLATE)
- PATH = "projects/%s/things/%s" % (self.PROJECT, self.THING_NAME)
- name = self._call_fut(PATH, self.PROJECT, template)
- self.assertEqual(name, self.THING_NAME)
-
- def test_w_project_passed_as_none(self):
- PROJECT1 = "PROJECT1"
- PATH = "projects/%s/things/%s" % (PROJECT1, self.THING_NAME)
- self._call_fut(PATH, None, self.TEMPLATE)
- name = self._call_fut(PATH, None, self.TEMPLATE)
- self.assertEqual(name, self.THING_NAME)
-
-
-class Test_make_secure_channel(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import make_secure_channel
-
- return make_secure_channel(*args, **kwargs)
-
- def test_it(self):
- import http.client
-
- credentials = object()
- host = "HOST"
- user_agent = "USER_AGENT"
-
- secure_authorized_channel_patch = mock.patch(
- "google.auth.transport.grpc.secure_authorized_channel", autospec=True
- )
-
- with secure_authorized_channel_patch as secure_authorized_channel:
- result = self._call_fut(credentials, user_agent, host)
-
- self.assertIs(result, secure_authorized_channel.return_value)
-
- expected_target = "%s:%d" % (host, http.client.HTTPS_PORT)
- expected_options = (("grpc.primary_user_agent", user_agent),)
-
- secure_authorized_channel.assert_called_once_with(
- credentials, mock.ANY, expected_target, options=expected_options
- )
-
- def test_extra_options(self):
- import http.client
-
- credentials = object()
- host = "HOST"
- user_agent = "USER_AGENT"
- extra_options = (("some", "option"),)
-
- secure_authorized_channel_patch = mock.patch(
- "google.auth.transport.grpc.secure_authorized_channel", autospec=True
- )
-
- with secure_authorized_channel_patch as secure_authorized_channel:
- result = self._call_fut(credentials, user_agent, host, extra_options)
-
- self.assertIs(result, secure_authorized_channel.return_value)
-
- expected_target = "%s:%d" % (host, http.client.HTTPS_PORT)
- expected_options = (("grpc.primary_user_agent", user_agent), extra_options[0])
-
- secure_authorized_channel.assert_called_once_with(
- credentials, mock.ANY, expected_target, options=expected_options
- )
-
-
-class Test_make_secure_stub(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import make_secure_stub
-
- return make_secure_stub(*args, **kwargs)
-
- def test_it(self):
- from google.cloud._testing import _Monkey
- from google.cloud import _helpers as MUT
-
- result = object()
- channel_obj = object()
- channels = []
- channel_args = []
-
- def stub_class(channel):
- channels.append(channel)
- return result
-
- def mock_channel(*args, **kwargs):
- channel_args.append(args)
- channel_args.append(kwargs)
- return channel_obj
-
- credentials = object()
- user_agent = "you-sir-age-int"
- host = "localhost"
- extra_options = {"extra_options": ()}
- with _Monkey(MUT, make_secure_channel=mock_channel):
- stub = self._call_fut(credentials, user_agent, stub_class, host)
-
- self.assertIs(stub, result)
- self.assertEqual(channels, [channel_obj])
- self.assertEqual(channel_args, [(credentials, user_agent, host), extra_options])
-
-
-class Test_make_insecure_stub(unittest.TestCase):
- def _call_fut(self, *args, **kwargs):
- from google.cloud._helpers import make_insecure_stub
-
- return make_insecure_stub(*args, **kwargs)
-
- def _helper(self, target, host, port=None):
- from google.cloud._testing import _Monkey
- from google.cloud import _helpers as MUT
-
- mock_result = object()
- stub_inputs = []
- CHANNEL = object()
-
- class _GRPCModule(object):
- def insecure_channel(self, *args):
- self.insecure_channel_args = args
- return CHANNEL
-
- grpc_mod = _GRPCModule()
-
- def mock_stub_class(channel):
- stub_inputs.append(channel)
- return mock_result
-
- with _Monkey(MUT, grpc=grpc_mod):
- result = self._call_fut(mock_stub_class, host, port=port)
-
- self.assertIs(result, mock_result)
- self.assertEqual(stub_inputs, [CHANNEL])
- self.assertEqual(grpc_mod.insecure_channel_args, (target,))
-
- def test_with_port_argument(self):
- host = "HOST"
- port = 1025
- target = "%s:%d" % (host, port)
- self._helper(target, host, port=port)
-
- def test_without_port_argument(self):
- host = "HOST:1114"
- self._helper(host, host)
diff --git a/tests/unit/test__http.py b/tests/unit/test__http.py
deleted file mode 100644
index faee193..0000000
--- a/tests/unit/test__http.py
+++ /dev/null
@@ -1,623 +0,0 @@
-# Copyright 2014 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import http.client
-import json
-import os
-import unittest
-from unittest import mock
-import warnings
-
-import requests
-
-
-class TestConnection(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud._http import Connection
-
- return Connection
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def test_constructor_defaults(self):
- from google.api_core.client_info import ClientInfo
-
- client = object()
- conn = self._make_one(client)
- self.assertIs(conn._client, client)
- self.assertIsInstance(conn._client_info, ClientInfo)
-
- def test_constructor_explicit(self):
- client = object()
- client_info = object()
- conn = self._make_one(client, client_info=client_info)
- self.assertIs(conn._client, client)
-
- def test_user_agent_all_caps_getter_deprecated(self):
- client = object()
- conn = self._make_one(client)
-
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- self.assertEqual(conn.USER_AGENT, conn._client_info.to_user_agent())
-
- warn.assert_called_once_with(mock.ANY, DeprecationWarning, stacklevel=2)
-
- def test_user_agent_all_caps_setter_deprecated(self):
- conn = self._make_one(object())
- user_agent = "testing"
-
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- conn.USER_AGENT = user_agent
-
- self.assertEqual(conn._client_info.user_agent, user_agent)
- warn.assert_called_once_with(mock.ANY, DeprecationWarning, stacklevel=2)
-
- def test_user_agent_getter(self):
- conn = self._make_one(object())
- self.assertEqual(conn.user_agent, conn._client_info.to_user_agent())
-
- def test_user_agent_setter(self):
- conn = self._make_one(object())
- user_agent = "testing"
- conn.user_agent = user_agent
- self.assertEqual(conn._client_info.user_agent, user_agent)
-
- def test_extra_headers_all_caps_getter_deprecated(self):
- client = object()
- conn = self._make_one(client)
- expected = conn._extra_headers = {"foo": "bar"}
-
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- self.assertEqual(conn._EXTRA_HEADERS, expected)
-
- warn.assert_called_once_with(mock.ANY, DeprecationWarning, stacklevel=2)
-
- def test_extra_headers_all_caps_setter_deprecated(self):
- conn = self._make_one(object())
- extra_headers = {"foo": "bar"}
-
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- conn._EXTRA_HEADERS = extra_headers
-
- self.assertEqual(conn._extra_headers, extra_headers)
- warn.assert_called_once_with(mock.ANY, DeprecationWarning, stacklevel=2)
-
- def test_extra_headers_getter_default(self):
- conn = self._make_one(object())
- expected = {}
- self.assertEqual(conn.extra_headers, expected)
-
- def test_extra_headers_getter_overridden(self):
- conn = self._make_one(object())
- expected = conn._extra_headers = {"foo": "bar"}
- self.assertEqual(conn.extra_headers, expected)
-
- def test_extra_headers_item_assignment(self):
- conn = self._make_one(object())
- expected = {"foo": "bar"}
- conn.extra_headers["foo"] = "bar"
- self.assertEqual(conn._extra_headers, expected)
-
- def test_extra_headers_setter(self):
- conn = self._make_one(object())
- expected = {"foo": "bar"}
- conn.extra_headers = expected
- self.assertEqual(conn._extra_headers, expected)
-
- def test_credentials_property(self):
- client = mock.Mock(spec=["_credentials"])
- conn = self._make_one(client)
- self.assertIs(conn.credentials, client._credentials)
-
- def test_http_property(self):
- client = mock.Mock(spec=["_http"])
- conn = self._make_one(client)
- self.assertIs(conn.http, client._http)
-
-
-def make_response(status=http.client.OK, content=b"", headers={}):
- response = requests.Response()
- response.status_code = status
- response._content = content
- response.headers = headers
- response.request = requests.Request()
-
- # Work around requests 'charset_normalizer' idiocy.
- # See https://github.com/googleapis/python-cloud-core/issues/117
- response.encoding = "utf-8"
-
- return response
-
-
-def make_requests_session(responses):
- session = mock.create_autospec(requests.Session, instance=True)
- session.request.side_effect = responses
- return session
-
-
-class TestJSONConnection(unittest.TestCase):
- JSON_HEADERS = {"content-type": "application/json"}
- EMPTY_JSON_RESPONSE = make_response(content=b"{}", headers=JSON_HEADERS)
-
- @staticmethod
- def _get_default_timeout():
- from google.cloud._http import _DEFAULT_TIMEOUT
-
- return _DEFAULT_TIMEOUT
-
- @staticmethod
- def _get_target_class():
- from google.cloud._http import JSONConnection
-
- return JSONConnection
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def _make_mock_one(self, *args, **kw):
- class MockConnection(self._get_target_class()):
- API_URL_TEMPLATE = "{api_base_url}/mock/{api_version}{path}"
- API_BASE_URL = "http://mock"
- API_BASE_MTLS_URL = "https://mock.mtls"
- API_VERSION = "vMOCK"
-
- return MockConnection(*args, **kw)
-
- def test_class_defaults(self):
- klass = self._get_target_class()
- self.assertIsNone(klass.API_URL_TEMPLATE)
- self.assertIsNone(klass.API_BASE_URL)
- self.assertIsNone(klass.API_VERSION)
-
- def test_constructor(self):
- client = object()
- conn = self._make_one(client)
- self.assertIs(conn._client, client)
-
- def test_build_api_url_no_extra_query_params(self):
- client = object()
- conn = self._make_mock_one(client)
- # Intended to emulate self.mock_template
- URI = "/".join(
- [conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=false"]
- )
- self.assertEqual(conn.build_api_url("/foo"), URI)
-
- def test_build_api_url_w_pretty_print_query_params(self):
- client = object()
- conn = self._make_mock_one(client)
- uri = conn.build_api_url("/foo", {"prettyPrint": "true"})
- URI = "/".join(
- [conn.API_BASE_URL, "mock", conn.API_VERSION, "foo?prettyPrint=true"]
- )
- self.assertEqual(uri, URI)
-
- def test_build_api_url_w_extra_query_params(self):
- from urllib.parse import parse_qs
- from urllib.parse import urlsplit
-
- client = object()
- conn = self._make_mock_one(client)
- uri = conn.build_api_url("/foo", {"bar": "baz", "qux": ["quux", "corge"]})
-
- scheme, netloc, path, qs, _ = urlsplit(uri)
- self.assertEqual("%s://%s" % (scheme, netloc), conn.API_BASE_URL)
- # Intended to emulate mock_template
- PATH = "/".join(["", "mock", conn.API_VERSION, "foo"])
- self.assertEqual(path, PATH)
- parms = dict(parse_qs(qs))
- self.assertEqual(parms["bar"], ["baz"])
- self.assertEqual(parms["qux"], ["quux", "corge"])
- self.assertEqual(parms["prettyPrint"], ["false"])
-
- def test_build_api_url_w_extra_query_params_tuples(self):
- from urllib.parse import parse_qs
- from urllib.parse import urlsplit
-
- client = object()
- conn = self._make_mock_one(client)
- uri = conn.build_api_url(
- "/foo", [("bar", "baz"), ("qux", "quux"), ("qux", "corge")]
- )
-
- scheme, netloc, path, qs, _ = urlsplit(uri)
- self.assertEqual("%s://%s" % (scheme, netloc), conn.API_BASE_URL)
- # Intended to emulate mock_template
- PATH = "/".join(["", "mock", conn.API_VERSION, "foo"])
- self.assertEqual(path, PATH)
- parms = dict(parse_qs(qs))
- self.assertEqual(parms["bar"], ["baz"])
- self.assertEqual(parms["qux"], ["quux", "corge"])
- self.assertEqual(parms["prettyPrint"], ["false"])
-
- def test_get_api_base_url_for_mtls_w_api_base_url(self):
- client = object()
- conn = self._make_mock_one(client)
- uri = conn.get_api_base_url_for_mtls(api_base_url="http://foo")
- self.assertEqual(uri, "http://foo")
-
- def test_get_api_base_url_for_mtls_env_always(self):
- client = object()
- conn = self._make_mock_one(client)
- with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}):
- uri = conn.get_api_base_url_for_mtls()
- self.assertEqual(uri, "https://mock.mtls")
-
- def test_get_api_base_url_for_mtls_env_never(self):
- client = object()
- conn = self._make_mock_one(client)
- with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}):
- uri = conn.get_api_base_url_for_mtls()
- self.assertEqual(uri, "http://mock")
-
- def test_get_api_base_url_for_mtls_env_auto(self):
- client = mock.Mock()
- client._http = mock.Mock()
- client._http.is_mtls = False
- conn = self._make_mock_one(client)
-
- # ALLOW_AUTO_SWITCH_TO_MTLS_URL is False, so use regular endpoint.
- with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}):
- uri = conn.get_api_base_url_for_mtls()
- self.assertEqual(uri, "http://mock")
-
- # ALLOW_AUTO_SWITCH_TO_MTLS_URL is True, so now endpoint dependes
- # on client._http.is_mtls
- conn.ALLOW_AUTO_SWITCH_TO_MTLS_URL = True
-
- with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}):
- uri = conn.get_api_base_url_for_mtls()
- self.assertEqual(uri, "http://mock")
-
- client._http.is_mtls = True
- with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}):
- uri = conn.get_api_base_url_for_mtls()
- self.assertEqual(uri, "https://mock.mtls")
-
- def test__make_request_no_data_no_content_type_no_headers(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([make_response()])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_one(client)
- url = "http://example.com/test"
-
- response = conn._make_request("GET", url)
-
- self.assertEqual(response.status_code, http.client.OK)
- self.assertEqual(response.content, b"")
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=url,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test__make_request_w_data_no_extra_headers(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([make_response()])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_one(client)
- url = "http://example.com/test"
- data = b"data"
-
- conn._make_request("GET", url, data, "application/json")
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "Content-Type": "application/json",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=url,
- headers=expected_headers,
- data=data,
- timeout=self._get_default_timeout(),
- )
-
- def test__make_request_w_extra_headers(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([make_response()])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_one(client)
-
- url = "http://example.com/test"
- conn._make_request("GET", url, headers={"X-Foo": "foo"})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "X-Foo": "foo",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=url,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test__make_request_w_timeout(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([make_response()])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_one(client)
-
- url = "http://example.com/test"
- conn._make_request("GET", url, timeout=(5.5, 2.8))
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=url,
- headers=expected_headers,
- data=None,
- timeout=(5.5, 2.8),
- )
-
- def test_api_request_defaults(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session(
- [make_response(content=b"{}", headers=self.JSON_HEADERS)]
- )
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
- path = "/path/required"
-
- self.assertEqual(conn.api_request("GET", path), {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- expected_url = "{base}/mock/{version}{path}?prettyPrint=false".format(
- base=conn.API_BASE_URL, version=conn.API_VERSION, path=path
- )
- session.request.assert_called_once_with(
- method="GET",
- url=expected_url,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test_api_request_w_non_json_response(self):
- session = make_requests_session([make_response(content=b"content")])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- with self.assertRaises(ValueError):
- conn.api_request("GET", "/")
-
- def test_api_request_wo_json_expected(self):
- session = make_requests_session([make_response(content=b"content")])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- result = conn.api_request("GET", "/", expect_json=False)
-
- self.assertEqual(result, b"content")
-
- def test_api_request_w_query_params(self):
- from urllib.parse import parse_qs
- from urllib.parse import urlsplit
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- result = conn.api_request("GET", "/", {"foo": "bar", "baz": ["qux", "quux"]})
-
- self.assertEqual(result, {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=mock.ANY,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- url = session.request.call_args[1]["url"]
- scheme, netloc, path, qs, _ = urlsplit(url)
- self.assertEqual("%s://%s" % (scheme, netloc), conn.API_BASE_URL)
- # Intended to emulate self.mock_template
- PATH = "/".join(["", "mock", conn.API_VERSION, ""])
- self.assertEqual(path, PATH)
- parms = dict(parse_qs(qs))
- self.assertEqual(parms["foo"], ["bar"])
- self.assertEqual(parms["baz"], ["qux", "quux"])
-
- def test_api_request_w_headers(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- result = conn.api_request("GET", "/", headers={"X-Foo": "bar"})
- self.assertEqual(result, {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- "X-Foo": "bar",
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=mock.ANY,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test_api_request_w_extra_headers(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
- conn.extra_headers = {
- "X-Baz": "dax-quux",
- "X-Foo": "not-bar", # Collision with ``headers``.
- }
-
- result = conn.api_request("GET", "/", headers={"X-Foo": "bar"})
-
- self.assertEqual(result, {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- "X-Foo": "not-bar", # The one passed-in is overridden.
- "X-Baz": "dax-quux",
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- session.request.assert_called_once_with(
- method="GET",
- url=mock.ANY,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test_api_request_w_data(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- data = {"foo": "bar"}
- self.assertEqual(conn.api_request("POST", "/", data=data), {})
-
- expected_data = json.dumps(data)
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "Content-Type": "application/json",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
-
- session.request.assert_called_once_with(
- method="POST",
- url=mock.ANY,
- headers=expected_headers,
- data=expected_data,
- timeout=self._get_default_timeout(),
- )
-
- def test_api_request_w_timeout(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session(
- [make_response(content=b"{}", headers=self.JSON_HEADERS)]
- )
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
- path = "/path/required"
-
- self.assertEqual(conn.api_request("GET", path, timeout=(2.2, 3.3)), {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: conn.user_agent,
- }
- expected_url = "{base}/mock/{version}{path}?prettyPrint=false".format(
- base=conn.API_BASE_URL, version=conn.API_VERSION, path=path
- )
- session.request.assert_called_once_with(
- method="GET",
- url=expected_url,
- headers=expected_headers,
- data=None,
- timeout=(2.2, 3.3),
- )
-
- def test_api_request_w_extra_api_info(self):
- from google.cloud._http import CLIENT_INFO_HEADER
-
- session = make_requests_session([self.EMPTY_JSON_RESPONSE])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- EXTRA_API_INFO = "gccl-invocation-id/testing-id-123"
- result = conn.api_request("GET", "/", extra_api_info=EXTRA_API_INFO)
-
- self.assertEqual(result, {})
-
- expected_headers = {
- "Accept-Encoding": "gzip",
- "User-Agent": conn.user_agent,
- CLIENT_INFO_HEADER: f"{conn.user_agent} {EXTRA_API_INFO}",
- }
- session.request.assert_called_once_with(
- method="GET",
- url=mock.ANY,
- headers=expected_headers,
- data=None,
- timeout=self._get_default_timeout(),
- )
-
- def test_api_request_w_404(self):
- from google.cloud import exceptions
-
- session = make_requests_session([make_response(http.client.NOT_FOUND)])
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- with self.assertRaises(exceptions.NotFound):
- conn.api_request("GET", "/")
-
- def test_api_request_w_500(self):
- from google.cloud import exceptions
-
- session = make_requests_session(
- [make_response(http.client.INTERNAL_SERVER_ERROR)]
- )
- client = mock.Mock(_http=session, spec=["_http"])
- conn = self._make_mock_one(client)
-
- with self.assertRaises(exceptions.InternalServerError):
- conn.api_request("GET", "/")
diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py
deleted file mode 100644
index 943b422..0000000
--- a/tests/unit/test_client.py
+++ /dev/null
@@ -1,585 +0,0 @@
-# Copyright 2015 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import io
-import json
-import unittest
-from unittest import mock
-
-from google.cloud.client import HAS_GOOGLE_AUTH_API_KEY
-
-
-def _make_credentials():
- import google.auth.credentials
-
- return mock.Mock(spec=google.auth.credentials.CredentialsWithQuotaProject)
-
-
-class Test_ClientFactoryMixin(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud.client import _ClientFactoryMixin
-
- return _ClientFactoryMixin
-
- def test_virtual(self):
- klass = self._get_target_class()
- self.assertFalse("__init__" in klass.__dict__)
-
-
-class TestClient(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud.client import Client
-
- return Client
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def test_unpickleable(self):
- import pickle
-
- credentials = _make_credentials()
- HTTP = object()
-
- client_obj = self._make_one(credentials=credentials, _http=HTTP)
- with self.assertRaises(pickle.PicklingError):
- pickle.dumps(client_obj)
-
- def test_ctor_defaults(self):
- credentials = _make_credentials()
-
- patch = mock.patch("google.auth.default", return_value=(credentials, None))
- with patch as default:
- client_obj = self._make_one()
-
- self.assertIs(client_obj._credentials, credentials)
- self.assertIsNone(client_obj._http_internal)
- default.assert_called_once_with(scopes=None)
-
- def test_ctor_explicit(self):
- credentials = _make_credentials()
- http = mock.sentinel.http
- client_obj = self._make_one(credentials=credentials, _http=http)
-
- self.assertIs(client_obj._credentials, credentials)
- self.assertIs(client_obj._http_internal, http)
-
- @unittest.skipIf(
- not HAS_GOOGLE_AUTH_API_KEY, "Auth library version does not support API keys"
- )
- def test_ctor_client_options_w_api_key(self):
- from google.auth.api_key import Credentials
-
- API_KEY = "my_api_key"
-
- client_options = {"api_key": API_KEY}
- client_obj = self._make_one(client_options=client_options)
-
- self.assertIsInstance(client_obj._credentials, Credentials)
-
- def test_ctor_client_options_w_conflicting_creds(self):
- from google.api_core.exceptions import DuplicateCredentialArgs
-
- credentials = _make_credentials()
- client_options = {"credentials_file": "/path/to/creds.json"}
- with self.assertRaises(DuplicateCredentialArgs):
- self._make_one(credentials=credentials, client_options=client_options)
-
- @unittest.skipIf(
- not HAS_GOOGLE_AUTH_API_KEY, "Auth library version does not support API keys"
- )
- def test_ctor_client_options_w_api_key_and_conflicting_creds(self):
- from google.api_core.exceptions import DuplicateCredentialArgs
-
- API_KEY = "my_api_key"
-
- credentials = _make_credentials()
- client_options = {"api_key": API_KEY}
- with self.assertRaises(DuplicateCredentialArgs):
- self._make_one(credentials=credentials, client_options=client_options)
-
- def test_ctor_bad_credentials(self):
- credentials = mock.sentinel.credentials
-
- with self.assertRaises(ValueError):
- self._make_one(credentials=credentials)
-
- def test_ctor_client_options_w_creds_file_scopes(self):
- credentials = _make_credentials()
- credentials_file = "/path/to/creds.json"
- scopes = ["SCOPE1", "SCOPE2"]
- client_options = {"credentials_file": credentials_file, "scopes": scopes}
-
- patch = mock.patch(
- "google.auth.load_credentials_from_file", return_value=(credentials, None)
- )
- with patch as load_credentials_from_file:
- client_obj = self._make_one(client_options=client_options)
-
- self.assertIs(client_obj._credentials, credentials)
- self.assertIsNone(client_obj._http_internal)
- load_credentials_from_file.assert_called_once_with(
- credentials_file, scopes=scopes
- )
-
- def test_ctor_client_options_w_quota_project(self):
- credentials = _make_credentials()
- quota_project_id = "quota-project-123"
- client_options = {"quota_project_id": quota_project_id}
-
- client_obj = self._make_one(
- credentials=credentials, client_options=client_options
- )
-
- self.assertIs(
- client_obj._credentials, credentials.with_quota_project.return_value
- )
- credentials.with_quota_project.assert_called_once_with(quota_project_id)
-
- def test_ctor__http_property_existing(self):
- credentials = _make_credentials()
- http = object()
- client = self._make_one(credentials=credentials, _http=http)
- self.assertIs(client._http_internal, http)
- self.assertIs(client._http, http)
-
- def test_ctor__http_property_new(self):
- from google.cloud.client import _CREDENTIALS_REFRESH_TIMEOUT
-
- credentials = _make_credentials()
- mock_client_cert_source = mock.Mock()
- client_options = {"client_cert_source": mock_client_cert_source}
- client = self._make_one(credentials=credentials, client_options=client_options)
- self.assertIsNone(client._http_internal)
-
- with mock.patch(
- "google.auth.transport.requests.AuthorizedSession"
- ) as AuthorizedSession:
- session = mock.Mock()
- session.configure_mtls_channel = mock.Mock()
- AuthorizedSession.return_value = session
- self.assertIs(client._http, session)
- # Check the mock.
- AuthorizedSession.assert_called_once_with(
- credentials, refresh_timeout=_CREDENTIALS_REFRESH_TIMEOUT
- )
- session.configure_mtls_channel.assert_called_once_with(
- mock_client_cert_source
- )
- # Make sure the cached value is used on subsequent access.
- self.assertIs(client._http_internal, session)
- self.assertIs(client._http, session)
- self.assertEqual(AuthorizedSession.call_count, 1)
-
- def test_from_service_account_info(self):
- klass = self._get_target_class()
-
- info = {"dummy": "value", "valid": "json"}
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials.from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with constructor_patch as constructor:
- client_obj = klass.from_service_account_info(info)
-
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- constructor.assert_called_once_with(info)
-
- def test_from_service_account_info_w_explicit_credentials(self):
- KLASS = self._get_target_class()
-
- info = {"dummy": "value", "valid": "json"}
-
- with self.assertRaises(TypeError):
- KLASS.from_service_account_info(info, credentials=mock.sentinel.credentials)
-
- def test_from_service_account_json(self):
- from google.cloud import _helpers
-
- klass = self._get_target_class()
-
- info = {"dummy": "value", "valid": "json"}
- json_file = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
-
- file_open_patch = mock.patch("io.open", return_value=json_file)
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials." "from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with file_open_patch as file_open:
- with constructor_patch as constructor:
- client_obj = klass.from_service_account_json(mock.sentinel.filename)
-
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- # Check that mocks were called as expected.
- file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
- constructor.assert_called_once_with(info)
-
- def test_close_w__http_internal_none(self):
- credentials = _make_credentials()
- client_obj = self._make_one(credentials=credentials, _http=None)
-
- client_obj.close() # noraise
-
- def test_close_w__http_internal_set(self):
- credentials = _make_credentials()
- http = mock.Mock(spec=["close"])
- client_obj = self._make_one(credentials=credentials, _http=http)
-
- client_obj.close()
-
- http.close.assert_called_once_with()
-
-
-class Test_ClientProjectMixin(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud.client import _ClientProjectMixin
-
- return _ClientProjectMixin
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def test_ctor_defaults_wo_envvar(self):
- environ = {}
- patch_env = mock.patch("os.environ", new=environ)
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
- )
- with patch_env:
- with patch_default as patched:
- with self.assertRaises(EnvironmentError):
- self._make_one()
-
- patched.assert_called_once_with(None)
-
- def test_ctor_defaults_w_envvar(self):
- from google.auth.environment_vars import PROJECT
-
- project = "some-project-123"
- environ = {PROJECT: project}
- patch_env = mock.patch("os.environ", new=environ)
- with patch_env:
- client = self._make_one()
-
- self.assertEqual(client.project, project)
-
- def test_ctor_defaults_w_legacy_envvar(self):
- from google.auth.environment_vars import LEGACY_PROJECT
-
- project = "some-project-123"
- environ = {LEGACY_PROJECT: project}
- patch_env = mock.patch("os.environ", new=environ)
- with patch_env:
- client = self._make_one()
-
- self.assertEqual(client.project, project)
-
- def test_ctor_w_explicit_project(self):
- explicit_project = "explicit-project-456"
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
- )
- with patch_default as patched:
- client = self._make_one(project=explicit_project)
-
- self.assertEqual(client.project, explicit_project)
-
- patched.assert_not_called()
-
- def test_ctor_w_explicit_project_bytes(self):
- explicit_project = b"explicit-project-456"
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
- )
- with patch_default as patched:
- client = self._make_one(project=explicit_project)
-
- self.assertEqual(client.project, explicit_project.decode("utf-8"))
-
- patched.assert_not_called()
-
- def test_ctor_w_explicit_project_invalid(self):
- explicit_project = object()
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
- )
- with patch_default as patched:
- with self.assertRaises(ValueError):
- self._make_one(project=explicit_project)
-
- patched.assert_not_called()
-
- @staticmethod
- def _make_credentials(**kw):
- from google.auth.credentials import Credentials
-
- class _Credentials(Credentials):
- def __init__(self, **kw):
- self.__dict__.update(kw)
-
- def refresh(self): # pragma: NO COVER
- pass
-
- return _Credentials(**kw)
-
- def test_ctor_w_explicit_credentials_wo_project(self):
- default_project = "default-project-123"
- credentials = self._make_credentials()
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=default_project,
- )
- with patch_default as patched:
- client = self._make_one(credentials=credentials)
-
- self.assertEqual(client.project, default_project)
-
- patched.assert_called_once_with(None)
-
- def test_ctor_w_explicit_credentials_w_project(self):
- project = "credentials-project-456"
- credentials = self._make_credentials(project_id=project)
- patch_default = mock.patch(
- "google.cloud.client._determine_default_project",
- return_value=None,
- )
- with patch_default as patched:
- client = self._make_one(credentials=credentials)
-
- self.assertEqual(client.project, project)
-
- patched.assert_not_called()
-
-
-class TestClientWithProject(unittest.TestCase):
- @staticmethod
- def _get_target_class():
- from google.cloud.client import ClientWithProject
-
- return ClientWithProject
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def test_constructor_defaults(self):
- credentials = _make_credentials()
- patch1 = mock.patch("google.auth.default", return_value=(credentials, None))
-
- project = "prahj-ekt"
- patch2 = mock.patch(
- "google.cloud.client._determine_default_project", return_value=project
- )
-
- with patch1 as default:
- with patch2 as _determine_default_project:
- client_obj = self._make_one()
-
- self.assertEqual(client_obj.project, project)
- self.assertIs(client_obj._credentials, credentials)
- self.assertIsNone(client_obj._http_internal)
- default.assert_called_once_with(scopes=None)
- _determine_default_project.assert_called_once_with(None)
-
- def test_constructor_missing_project(self):
- from google.cloud._testing import _Monkey
- from google.cloud import client
-
- FUNC_CALLS = []
-
- def mock_determine_proj(project):
- FUNC_CALLS.append((project, "_determine_default_project"))
- return None
-
- with _Monkey(client, _determine_default_project=mock_determine_proj):
- self.assertRaises(EnvironmentError, self._make_one)
-
- self.assertEqual(FUNC_CALLS, [(None, "_determine_default_project")])
-
- def test_constructor_w_invalid_project(self):
- CREDENTIALS = _make_credentials()
- HTTP = object()
- with self.assertRaises(ValueError):
- self._make_one(project=object(), credentials=CREDENTIALS, _http=HTTP)
-
- def _explicit_ctor_helper(self, project):
- CREDENTIALS = _make_credentials()
- HTTP = object()
-
- client_obj = self._make_one(
- project=project, credentials=CREDENTIALS, _http=HTTP
- )
-
- if isinstance(project, bytes):
- self.assertEqual(client_obj.project, project.decode("utf-8"))
- else:
- self.assertEqual(client_obj.project, project)
- self.assertIs(client_obj._credentials, CREDENTIALS)
- self.assertIs(client_obj._http_internal, HTTP)
-
- def test_constructor_explicit_bytes(self):
- PROJECT = b"PROJECT"
- self._explicit_ctor_helper(PROJECT)
-
- def test_constructor_explicit_text(self):
- PROJECT = "PROJECT"
- self._explicit_ctor_helper(PROJECT)
-
- def _from_service_account_info_helper(self, project=None):
- klass = self._get_target_class()
-
- default_project = "eye-d-of-project"
- info = {"dummy": "value", "valid": "json", "project_id": default_project}
- kwargs = {}
-
- if project is None:
- expected_project = default_project
- else:
- expected_project = project
- kwargs["project"] = project
-
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials.from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with constructor_patch as constructor:
- client_obj = klass.from_service_account_info(info, **kwargs)
-
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- self.assertEqual(client_obj.project, expected_project)
-
- constructor.assert_called_once_with(info)
-
- def test_from_service_account_info(self):
- self._from_service_account_info_helper()
-
- def test_from_service_account_info_with_project(self):
- self._from_service_account_info_helper(project="prah-jekt")
-
- def test_from_service_account_info_with_posarg(self):
- class Derived(self._get_target_class()):
- def __init__(self, required, **kwargs):
- super(Derived, self).__init__(**kwargs)
- self.required = required
-
- project = "eye-d-of-project"
- info = {"dummy": "value", "valid": "json", "project_id": project}
-
- # Mock both the file opening and the credentials constructor.
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials.from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with constructor_patch as constructor:
- client_obj = Derived.from_service_account_info(info, "REQUIRED")
-
- self.assertIsInstance(client_obj, Derived)
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- self.assertEqual(client_obj.project, project)
- self.assertEqual(client_obj.required, "REQUIRED")
-
- # Check that mocks were called as expected.
- constructor.assert_called_once_with(info)
-
- def _from_service_account_json_helper(self, project=None):
- from google.cloud import _helpers
-
- klass = self._get_target_class()
-
- default_project = "eye-d-of-project"
- info = {"dummy": "value", "valid": "json", "project_id": default_project}
- if project is None:
- expected_project = "eye-d-of-project"
- else:
- expected_project = project
-
- # Mock both the file opening and the credentials constructor.
- json_fi = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
- file_open_patch = mock.patch("io.open", return_value=json_fi)
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials." "from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with file_open_patch as file_open:
- with constructor_patch as constructor:
- kwargs = {}
- if project is not None:
- kwargs["project"] = project
- client_obj = klass.from_service_account_json(
- mock.sentinel.filename, **kwargs
- )
-
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- self.assertEqual(client_obj.project, expected_project)
- # Check that mocks were called as expected.
- file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
- constructor.assert_called_once_with(info)
-
- def test_from_service_account_json(self):
- self._from_service_account_json_helper()
-
- def test_from_service_account_json_project_set(self):
- self._from_service_account_json_helper(project="prah-jekt")
-
- def test_from_service_account_json_with_posarg(self):
- from google.cloud import _helpers
-
- class Derived(self._get_target_class()):
- def __init__(self, required, **kwargs):
- super(Derived, self).__init__(**kwargs)
- self.required = required
-
- project = "eye-d-of-project"
- info = {"dummy": "value", "valid": "json", "project_id": project}
-
- # Mock both the file opening and the credentials constructor.
- json_fi = io.StringIO(_helpers._bytes_to_unicode(json.dumps(info)))
- file_open_patch = mock.patch("io.open", return_value=json_fi)
- constructor_patch = mock.patch(
- "google.oauth2.service_account.Credentials.from_service_account_info",
- return_value=_make_credentials(),
- )
-
- with file_open_patch as file_open:
- with constructor_patch as constructor:
- client_obj = Derived.from_service_account_json(
- mock.sentinel.filename, "REQUIRED"
- )
-
- self.assertIsInstance(client_obj, Derived)
- self.assertIs(client_obj._credentials, constructor.return_value)
- self.assertIsNone(client_obj._http_internal)
- self.assertEqual(client_obj.project, project)
- self.assertEqual(client_obj.required, "REQUIRED")
-
- # Check that mocks were called as expected.
- file_open.assert_called_once_with(mock.sentinel.filename, "r", encoding="utf-8")
- constructor.assert_called_once_with(info)
diff --git a/tests/unit/test_obsolete.py b/tests/unit/test_obsolete.py
deleted file mode 100644
index d4c8020..0000000
--- a/tests/unit/test_obsolete.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2017 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from unittest import mock
-import warnings
-
-from google.cloud import obsolete
-
-
-def test_complain_noop():
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- obsolete.complain("bogus_package")
- assert warn.call_count == 0
-
-
-def test_complain():
- with mock.patch.object(warnings, "warn", autospec=True) as warn:
- obsolete.complain("google-cloud-core")
- warn.assert_called_once_with(mock.ANY, DeprecationWarning)
diff --git a/tests/unit/test_operation.py b/tests/unit/test_operation.py
deleted file mode 100644
index 1be96e8..0000000
--- a/tests/unit/test_operation.py
+++ /dev/null
@@ -1,409 +0,0 @@
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-
-
-class Test__compute_type_url(unittest.TestCase):
- def _call_fut(self, klass, prefix=None):
- from google.cloud.operation import _compute_type_url
-
- if prefix is None:
- return _compute_type_url(klass)
- return _compute_type_url(klass, prefix)
-
- def test_wo_prefix(self):
- from google.protobuf.struct_pb2 import Struct
- from google.cloud.operation import _GOOGLE_APIS_PREFIX
-
- type_url = self._call_fut(Struct)
-
- self.assertEqual(
- type_url, "%s/%s" % (_GOOGLE_APIS_PREFIX, Struct.DESCRIPTOR.full_name)
- )
-
- def test_w_prefix(self):
- from google.protobuf.struct_pb2 import Struct
-
- PREFIX = "test.google-cloud-python.com"
-
- type_url = self._call_fut(Struct, PREFIX)
-
- self.assertEqual(type_url, "%s/%s" % (PREFIX, Struct.DESCRIPTOR.full_name))
-
-
-class Test_register_type(unittest.TestCase):
- def _call_fut(self, klass, type_url=None):
- from google.cloud.operation import register_type
-
- register_type(klass, type_url=type_url)
-
- def test_explicit(self):
- from google.cloud import operation as MUT
- from google.cloud._testing import _Monkey
-
- type_url = "testing.google-cloud-python.com/testing"
- klass = object()
- type_url_map = {}
-
- with _Monkey(MUT, _TYPE_URL_MAP=type_url_map):
- self._call_fut(klass, type_url)
-
- self.assertEqual(type_url_map, {type_url: klass})
-
- def test_default(self):
- from google.protobuf.struct_pb2 import Struct
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- type_url_map = {}
- with _Monkey(MUT, _TYPE_URL_MAP=type_url_map):
- self._call_fut(Struct)
-
- type_url = MUT._compute_type_url(Struct)
- self.assertEqual(type_url_map, {type_url: Struct})
-
- def test_w_same_class(self):
- from google.cloud import operation as MUT
- from google.cloud._testing import _Monkey
-
- type_url = "testing.google-cloud-python.com/testing"
- klass = object()
- type_url_map = {type_url: klass}
-
- with _Monkey(MUT, _TYPE_URL_MAP=type_url_map):
- self._call_fut(klass, type_url)
-
- self.assertEqual(type_url_map, {type_url: klass})
-
- def test_w_conflict(self):
- from google.cloud import operation as MUT
- from google.cloud._testing import _Monkey
-
- type_url = "testing.google-cloud-python.com/testing"
- klass, other = object(), object()
- type_url_map = {type_url: other}
-
- with _Monkey(MUT, _TYPE_URL_MAP=type_url_map):
- with self.assertRaises(ValueError):
- self._call_fut(klass, type_url)
-
- self.assertEqual(type_url_map, {type_url: other})
-
-
-class TestOperation(unittest.TestCase):
- OPERATION_NAME = "operations/projects/foo/instances/bar/operations/123"
-
- @staticmethod
- def _get_target_class():
- from google.cloud.operation import Operation
-
- return Operation
-
- def _make_one(self, *args, **kw):
- return self._get_target_class()(*args, **kw)
-
- def test_ctor_defaults(self):
- client = _Client()
- operation = self._make_one(self.OPERATION_NAME, client)
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertIsNone(operation.target)
- self.assertIsNone(operation.response)
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.metadata)
- self.assertEqual(operation.caller_metadata, {})
- self.assertTrue(operation._from_grpc)
-
- def test_ctor_explicit(self):
- client = _Client()
- operation = self._make_one(self.OPERATION_NAME, client, foo="bar")
-
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertIsNone(operation.target)
- self.assertIsNone(operation.response)
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.metadata)
- self.assertEqual(operation.caller_metadata, {"foo": "bar"})
- self.assertTrue(operation._from_grpc)
-
- def test_from_pb_wo_metadata_or_kw(self):
- from google.longrunning import operations_pb2
-
- client = _Client()
- operation_pb = operations_pb2.Operation(name=self.OPERATION_NAME)
- klass = self._get_target_class()
-
- operation = klass.from_pb(operation_pb, client)
-
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertIsNone(operation.metadata)
- self.assertEqual(operation.caller_metadata, {})
-
- def test_from_pb_w_unknown_metadata(self):
- from google.longrunning import operations_pb2
- from google.protobuf.any_pb2 import Any
- from google.protobuf.json_format import ParseDict
- from google.protobuf.struct_pb2 import Struct
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- type_url = "type.googleapis.com/%s" % (Struct.DESCRIPTOR.full_name,)
- client = _Client()
- meta = ParseDict({"foo": "Bar"}, Struct())
- metadata_pb = Any(type_url=type_url, value=meta.SerializeToString())
- operation_pb = operations_pb2.Operation(
- name=self.OPERATION_NAME, metadata=metadata_pb
- )
- klass = self._get_target_class()
-
- with _Monkey(MUT, _TYPE_URL_MAP={type_url: Struct}):
- operation = klass.from_pb(operation_pb, client)
-
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertEqual(operation.metadata, meta)
- self.assertEqual(operation.caller_metadata, {})
-
- def test_from_pb_w_metadata_and_kwargs(self):
- from google.longrunning import operations_pb2
- from google.protobuf.any_pb2 import Any
- from google.protobuf.struct_pb2 import Struct
- from google.protobuf.struct_pb2 import Value
- from google.cloud import operation as MUT
- from google.cloud._testing import _Monkey
-
- type_url = "type.googleapis.com/%s" % (Struct.DESCRIPTOR.full_name,)
- type_url_map = {type_url: Struct}
-
- client = _Client()
- meta = Struct(fields={"foo": Value(string_value="Bar")})
- metadata_pb = Any(type_url=type_url, value=meta.SerializeToString())
- operation_pb = operations_pb2.Operation(
- name=self.OPERATION_NAME, metadata=metadata_pb
- )
- klass = self._get_target_class()
-
- with _Monkey(MUT, _TYPE_URL_MAP=type_url_map):
- operation = klass.from_pb(operation_pb, client, baz="qux")
-
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertEqual(operation.metadata, meta)
- self.assertEqual(operation.caller_metadata, {"baz": "qux"})
-
- def test_from_dict(self):
- from google.protobuf.struct_pb2 import Struct
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- type_url = "type.googleapis.com/%s" % (Struct.DESCRIPTOR.full_name,)
- api_response = {
- "name": self.OPERATION_NAME,
- "metadata": {"@type": type_url, "value": {"foo": "Bar"}},
- }
-
- client = _Client()
- klass = self._get_target_class()
-
- with _Monkey(MUT, _TYPE_URL_MAP={type_url: Struct}):
- operation = klass.from_dict(api_response, client)
-
- self.assertEqual(operation.name, self.OPERATION_NAME)
- self.assertIs(operation.client, client)
- self.assertIsNone(operation.target)
- self.assertIsNone(operation.response)
- self.assertIsNone(operation.error)
- self.assertIsInstance(operation.metadata, Struct)
- self.assertEqual(len(operation.metadata.fields), 1)
- self.assertEqual(operation.metadata.fields["foo"].string_value, "Bar")
- self.assertEqual(operation.caller_metadata, {})
- self.assertFalse(operation._from_grpc)
-
- def test_complete_property(self):
- client = _Client()
- operation = self._make_one(self.OPERATION_NAME, client)
- self.assertFalse(operation.complete)
- operation._complete = True
- self.assertTrue(operation.complete)
- with self.assertRaises(AttributeError):
- operation.complete = False
-
- def test_poll_already_complete(self):
- client = _Client()
- operation = self._make_one(self.OPERATION_NAME, client)
- operation._complete = True
-
- with self.assertRaises(ValueError):
- operation.poll()
-
- def test_poll_false(self):
- from google.longrunning import operations_pb2
-
- response_pb = operations_pb2.Operation(done=False)
- client = _Client()
- stub = client._operations_stub
- stub._get_operation_response = response_pb
- operation = self._make_one(self.OPERATION_NAME, client)
-
- self.assertFalse(operation.poll())
-
- request_pb = stub._get_operation_requested
- self.assertIsInstance(request_pb, operations_pb2.GetOperationRequest)
- self.assertEqual(request_pb.name, self.OPERATION_NAME)
-
- def test_poll_true(self):
- from google.longrunning import operations_pb2
-
- response_pb = operations_pb2.Operation(done=True)
- client = _Client()
- stub = client._operations_stub
- stub._get_operation_response = response_pb
- operation = self._make_one(self.OPERATION_NAME, client)
-
- self.assertTrue(operation.poll())
-
- request_pb = stub._get_operation_requested
- self.assertIsInstance(request_pb, operations_pb2.GetOperationRequest)
- self.assertEqual(request_pb.name, self.OPERATION_NAME)
-
- def test_poll_http(self):
- from google.protobuf.struct_pb2 import Struct
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- type_url = "type.googleapis.com/%s" % (Struct.DESCRIPTOR.full_name,)
- name = "2302903294023"
- api_response = {
- "name": name,
- "done": True,
- "metadata": {"@type": type_url, "value": {"foo": "Bar"}},
- }
- connection = _Connection(api_response)
- client = _Client(connection)
- operation = self._make_one(name, client)
- operation._from_grpc = False
-
- with _Monkey(MUT, _TYPE_URL_MAP={type_url: Struct}):
- self.assertTrue(operation.poll())
-
- expected_path = "operations/%s" % (name,)
- self.assertEqual(
- connection._requested, [{"method": "GET", "path": expected_path}]
- )
-
- def test__update_state_done(self):
- from google.longrunning import operations_pb2
-
- operation = self._make_one(None, None)
- self.assertFalse(operation.complete)
- operation_pb = operations_pb2.Operation(done=True)
- operation._update_state(operation_pb)
- self.assertTrue(operation.complete)
-
- def test__update_state_metadata(self):
- from google.longrunning import operations_pb2
- from google.protobuf.any_pb2 import Any
- from google.protobuf.struct_pb2 import Value
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- operation = self._make_one(None, None)
- self.assertIsNone(operation.metadata)
-
- val_pb = Value(number_value=1337)
- type_url = "type.googleapis.com/%s" % (Value.DESCRIPTOR.full_name,)
- val_any = Any(type_url=type_url, value=val_pb.SerializeToString())
- operation_pb = operations_pb2.Operation(metadata=val_any)
-
- with _Monkey(MUT, _TYPE_URL_MAP={type_url: Value}):
- operation._update_state(operation_pb)
-
- self.assertEqual(operation.metadata, val_pb)
-
- def test__update_state_error(self):
- from google.longrunning import operations_pb2
- from google.rpc.status_pb2 import Status
-
- operation = self._make_one(None, None)
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.response)
-
- error_pb = Status(code=1)
- operation_pb = operations_pb2.Operation(error=error_pb)
- operation._update_state(operation_pb)
-
- self.assertEqual(operation.error, error_pb)
- self.assertIsNone(operation.response)
-
- def test__update_state_response(self):
- from google.longrunning import operations_pb2
- from google.protobuf.any_pb2 import Any
- from google.protobuf.struct_pb2 import Value
- from google.cloud._testing import _Monkey
- from google.cloud import operation as MUT
-
- operation = self._make_one(None, None)
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.response)
-
- response_pb = Value(string_value="totes a response")
- type_url = "type.googleapis.com/%s" % (Value.DESCRIPTOR.full_name,)
- response_any = Any(type_url=type_url, value=response_pb.SerializeToString())
- operation_pb = operations_pb2.Operation(response=response_any)
-
- with _Monkey(MUT, _TYPE_URL_MAP={type_url: Value}):
- operation._update_state(operation_pb)
-
- self.assertIsNone(operation.error)
- self.assertEqual(operation.response, response_pb)
-
- def test__update_state_no_result(self):
- from google.longrunning import operations_pb2
-
- operation = self._make_one(None, None)
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.response)
-
- operation_pb = operations_pb2.Operation()
- operation._update_state(operation_pb)
-
- # Make sure nothing changed.
- self.assertIsNone(operation.error)
- self.assertIsNone(operation.response)
-
-
-class _OperationsStub(object):
- def GetOperation(self, request_pb):
- self._get_operation_requested = request_pb
- return self._get_operation_response
-
-
-class _Connection(object):
- def __init__(self, *responses):
- self._responses = responses
- self._requested = []
-
- def api_request(self, **kw):
- self._requested.append(kw)
- response, self._responses = self._responses[0], self._responses[1:]
- return response
-
-
-class _Client(object):
- def __init__(self, connection=None):
- self._operations_stub = _OperationsStub()
- self._connection = connection
diff --git a/tests/unit/test_packaging.py b/tests/unit/test_packaging.py
deleted file mode 100644
index e931116..0000000
--- a/tests/unit/test_packaging.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2023 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os
-import subprocess
-import sys
-
-
-def test_namespace_package_compat(tmp_path):
- # The ``google`` namespace package should not be masked
- # by the presence of ``google-cloud-core``.
- google = tmp_path / "google"
- google.mkdir()
- google.joinpath("othermod.py").write_text("")
- env = dict(os.environ, PYTHONPATH=str(tmp_path))
- cmd = [sys.executable, "-m", "google.othermod"]
- subprocess.check_call(cmd, env=env)
-
- # The ``google.cloud`` namespace package should not be masked
- # by the presence of ``google-cloud-core``.
- google_cloud = tmp_path / "google" / "cloud"
- google_cloud.mkdir()
- google_cloud.joinpath("othermod.py").write_text("")
- env = dict(os.environ, PYTHONPATH=str(tmp_path))
- cmd = [sys.executable, "-m", "google.cloud.othermod"]
- subprocess.check_call(cmd, env=env)