From c75988cd3a04bcb90890604ab7865e079546bd0b Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 12 May 2021 11:51:29 -0400 Subject: [PATCH] chore: migrate to owl bot (#186) * chore: migrate to owl bot * chore: copy files from googleapis-gen ee56c3493ec6aeb237ff515ecea949710944a20f * chore: run the post processor --- .../.github/.OwlBot.lock.yaml | 4 + .../google-cloud-asset/.github/.OwlBot.yaml | 29 ++ .../.github/header-checker-lint.yml | 2 +- .../google-cloud-asset/.kokoro/release.sh | 4 +- .../.kokoro/release/common.cfg | 14 +- .../.pre-commit-config.yaml | 2 +- packages/google-cloud-asset/CONTRIBUTING.rst | 16 +- .../docs/_static/custom.css | 13 +- packages/google-cloud-asset/noxfile.py | 14 +- .../{synth.py => owlbot.py} | 82 +++--- packages/google-cloud-asset/renovate.json | 5 +- .../samples/snippets/noxfile.py | 10 +- packages/google-cloud-asset/synth.metadata | 258 ------------------ 13 files changed, 104 insertions(+), 349 deletions(-) create mode 100644 packages/google-cloud-asset/.github/.OwlBot.lock.yaml create mode 100644 packages/google-cloud-asset/.github/.OwlBot.yaml rename packages/google-cloud-asset/{synth.py => owlbot.py} (53%) delete mode 100644 packages/google-cloud-asset/synth.metadata diff --git a/packages/google-cloud-asset/.github/.OwlBot.lock.yaml b/packages/google-cloud-asset/.github/.OwlBot.lock.yaml new file mode 100644 index 000000000000..d49860b32e70 --- /dev/null +++ b/packages/google-cloud-asset/.github/.OwlBot.lock.yaml @@ -0,0 +1,4 @@ +docker: + digest: sha256:457583330eec64daa02aeb7a72a04d33e7be2428f646671ce4045dcbc0191b1e + image: gcr.io/repo-automation-bots/owlbot-python:latest + diff --git a/packages/google-cloud-asset/.github/.OwlBot.yaml b/packages/google-cloud-asset/.github/.OwlBot.yaml new file mode 100644 index 000000000000..602ece684fd2 --- /dev/null +++ b/packages/google-cloud-asset/.github/.OwlBot.yaml @@ -0,0 +1,29 @@ +# 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 + +deep-remove-regex: + - /owl-bot-staging + +deep-preserve-regex: + - /owl-bot-staging/v1p7beta1 + +deep-copy-regex: + - source: /google/cloud/asset/(v.*)/.*-py/(.*) + dest: /owl-bot-staging/$1/$2 + +begin-after-commit-hash: ee56c3493ec6aeb237ff515ecea949710944a20f + diff --git a/packages/google-cloud-asset/.github/header-checker-lint.yml b/packages/google-cloud-asset/.github/header-checker-lint.yml index fc281c05bd55..6fe78aa7987a 100644 --- a/packages/google-cloud-asset/.github/header-checker-lint.yml +++ b/packages/google-cloud-asset/.github/header-checker-lint.yml @@ -1,6 +1,6 @@ {"allowedCopyrightHolders": ["Google LLC"], "allowedLicenses": ["Apache-2.0", "MIT", "BSD-3"], - "ignoreFiles": ["**/requirements.txt", "**/requirements-test.txt"], + "ignoreFiles": ["**/requirements.txt", "**/requirements-test.txt", "**/__init__.py", "samples/**/constraints.txt", "samples/**/constraints-test.txt"], "sourceFileExtensions": [ "ts", "js", diff --git a/packages/google-cloud-asset/.kokoro/release.sh b/packages/google-cloud-asset/.kokoro/release.sh index 1d0147a6f27c..fd054d307ea1 100755 --- a/packages/google-cloud-asset/.kokoro/release.sh +++ b/packages/google-cloud-asset/.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_KEYSTORE_DIR}/73713_google_cloud_pypi_password") +TWINE_PASSWORD=$(cat "${KOKORO_GFILE_DIR}/secret_manager/google-cloud-pypi-token") cd github/python-asset python3 setup.py sdist bdist_wheel -twine upload --username gcloudpypi --password "${TWINE_PASSWORD}" dist/* +twine upload --username __token__ --password "${TWINE_PASSWORD}" dist/* diff --git a/packages/google-cloud-asset/.kokoro/release/common.cfg b/packages/google-cloud-asset/.kokoro/release/common.cfg index 4587627e1f64..bb08ee8c13a0 100644 --- a/packages/google-cloud-asset/.kokoro/release/common.cfg +++ b/packages/google-cloud-asset/.kokoro/release/common.cfg @@ -23,18 +23,8 @@ env_vars: { value: "github/python-asset/.kokoro/release.sh" } -# Fetch PyPI password -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "google_cloud_pypi_password" - } - } -} - # 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" -} \ No newline at end of file + value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem,google-cloud-pypi-token" +} diff --git a/packages/google-cloud-asset/.pre-commit-config.yaml b/packages/google-cloud-asset/.pre-commit-config.yaml index 8912e9b5d7d7..1bbd787833ec 100644 --- a/packages/google-cloud-asset/.pre-commit-config.yaml +++ b/packages/google-cloud-asset/.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/packages/google-cloud-asset/CONTRIBUTING.rst b/packages/google-cloud-asset/CONTRIBUTING.rst index 4f75367231fc..76d88dce60bb 100644 --- a/packages/google-cloud-asset/CONTRIBUTING.rst +++ b/packages/google-cloud-asset/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/packages/google-cloud-asset/docs/_static/custom.css b/packages/google-cloud-asset/docs/_static/custom.css index bcd37bbd3c4a..b0a295464b23 100644 --- a/packages/google-cloud-asset/docs/_static/custom.css +++ b/packages/google-cloud-asset/docs/_static/custom.css @@ -1,9 +1,20 @@ 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/packages/google-cloud-asset/noxfile.py b/packages/google-cloud-asset/noxfile.py index 6e8aafb99d21..c5a826dc22d8 100644 --- a/packages/google-cloud-asset/noxfile.py +++ b/packages/google-cloud-asset/noxfile.py @@ -62,16 +62,9 @@ def lint(session): session.run("flake8", "google", "tests") -@nox.session(python="3.6") +@nox.session(python=DEFAULT_PYTHON_VERSION) def blacken(session): - """Run black. - - Format code to uniform standard. - - This currently uses Python 3.6 due to the automated Kokoro run of synthtool. - That run uses an image that doesn't have 3.6 installed. Before updating this - check the state of the `gcp_ubuntu_config` we use for that Kokoro run. - """ + """Run black. Format code to uniform standard.""" session.install(BLACK_VERSION) session.run( "black", *BLACK_PATHS, @@ -131,9 +124,6 @@ def system(session): # Check the value of `RUN_SYSTEM_TESTS` env var. It defaults to true. if os.environ.get("RUN_SYSTEM_TESTS", "true") == "false": session.skip("RUN_SYSTEM_TESTS is set to false, skipping") - # Sanity check: Only run tests if the environment variable is set. - if not os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", ""): - session.skip("Credentials must be set via environment variable") # Install pyopenssl for mTLS testing. if os.environ.get("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true": session.install("pyopenssl") diff --git a/packages/google-cloud-asset/synth.py b/packages/google-cloud-asset/owlbot.py similarity index 53% rename from packages/google-cloud-asset/synth.py rename to packages/google-cloud-asset/owlbot.py index 10a4b93f4a02..7814727115f7 100644 --- a/packages/google-cloud-asset/synth.py +++ b/packages/google-cloud-asset/owlbot.py @@ -20,58 +20,52 @@ from synthtool import gcp from synthtool.languages import python -gapic = gcp.GAPICBazel() common = gcp.CommonTemplates() -versions = ["v1p1beta1", "v1p2beta1", "v1p4beta1", "v1p5beta1", "v1"] -excludes = ["setup.py", "nox*.py", "README.rst", "docs/conf.py", "docs/index.rst"] +default_version = "v1" -# ---------------------------------------------------------------------------- -# Generate asset GAPIC layer -# ---------------------------------------------------------------------------- -for version in versions: - library = gapic.py_library( - service="asset", - version=version, - bazel_target=f"//google/cloud/asset/{version}:asset-{version}-py", +for library in s.get_staging_dirs(default_version): + # Fix import of 'osconfig' type + s.replace( + library / f"google/cloud/asset_{library.name}/types/assets.py", + f"from google\.cloud\.osconfig\.{library.name} import inventory_pb2 as inventory", + f"from google.cloud.osconfig_{library.name} import Inventory" ) - s.move(library, excludes=excludes) + s.replace( + library / f"google/cloud/asset_{library.name}/types/assets.py", + "message=inventory\.Inventory,", + "message=Inventory," + ) -# Fix import of 'osconfig' type -s.replace( - "google/cloud/asset_v1/types/assets.py", - "from google\.cloud\.osconfig\.v1 import inventory_pb2 as inventory", - "from google.cloud.osconfig_v1 import Inventory" -) + # Remove broken `parse_asset_path` method + # The resource pattern is '*' which breaks the regex match + s.replace( + library / "google/cloud/**/client.py", + """@staticmethod + def parse_asset_path.*?@staticmethod""", + """@staticmethod""", + flags=re.MULTILINE | re.DOTALL + ) -s.replace( - "google/cloud/asset_v1/types/assets.py", - "message=inventory\.Inventory,", - "message=Inventory," -) + s.replace( + library / "google/cloud/**/async_client.py", + """parse_asset_path = staticmethod\(AssetServiceClient\.parse_asset_path\)""", + "" + ) -# Remove broken `parse_asset_path` method -# The resource pattern is '*' which breaks the regex match -s.replace( - "google/cloud/**/client.py", - """@staticmethod - def parse_asset_path.*?@staticmethod""", - """@staticmethod""", - flags=re.MULTILINE | re.DOTALL -) + s.replace( + library / "tests/unit/**/test_asset_service.py", + """def test_parse_asset_path.*?def""", + """def""", + flags=re.MULTILINE | re.DOTALL, + ) + + excludes = ["setup.py", "nox*.py", "README.rst", "docs/conf.py", "docs/index.rst"] + s.move(library, excludes=excludes) + +s.remove_staging_dirs() -s.replace( - "google/cloud/**/async_client.py", - """parse_asset_path = staticmethod\(AssetServiceClient\.parse_asset_path\)""", - "" -) -s.replace( - "tests/unit/**/test_asset_service.py", - """def test_parse_asset_path.*?def""", - """def""", - flags=re.MULTILINE | re.DOTALL, -) # ---------------------------------------------------------------------------- # Add templated files # ---------------------------------------------------------------------------- @@ -92,4 +86,4 @@ def parse_asset_path.*?@staticmethod""", # https://github.com/googleapis/gapic-generator-python/issues/525 s.replace("noxfile.py", '[\"\']-W[\"\']', '# "-W"') -s.shell.run(["nox", "-s", "blacken"], hide_output=False) +s.shell.run(["nox", "-s", "blacken"], hide_output=False) \ No newline at end of file diff --git a/packages/google-cloud-asset/renovate.json b/packages/google-cloud-asset/renovate.json index f08bc22c9a55..c04895563e69 100644 --- a/packages/google-cloud-asset/renovate.json +++ b/packages/google-cloud-asset/renovate.json @@ -2,5 +2,8 @@ "extends": [ "config:base", ":preserveSemverRanges" ], - "ignorePaths": [".pre-commit-config.yaml"] + "ignorePaths": [".pre-commit-config.yaml"], + "pip_requirements": { + "fileMatch": ["requirements-test.txt", "samples/[\\S/]*constraints.txt", "samples/[\\S/]*constraints-test.txt"] + } } diff --git a/packages/google-cloud-asset/samples/snippets/noxfile.py b/packages/google-cloud-asset/samples/snippets/noxfile.py index 97bf7da80e39..956cdf4f9250 100644 --- a/packages/google-cloud-asset/samples/snippets/noxfile.py +++ b/packages/google-cloud-asset/samples/snippets/noxfile.py @@ -172,10 +172,16 @@ def blacken(session: nox.sessions.Session) -> None: def _session_tests(session: nox.sessions.Session, post_install: Callable = None) -> None: """Runs py.test for a particular project.""" if os.path.exists("requirements.txt"): - session.install("-r", "requirements.txt") + if os.path.exists("constraints.txt"): + session.install("-r", "requirements.txt", "-c", "constraints.txt") + else: + session.install("-r", "requirements.txt") if os.path.exists("requirements-test.txt"): - session.install("-r", "requirements-test.txt") + if os.path.exists("constraints-test.txt"): + session.install("-r", "requirements-test.txt", "-c", "constraints-test.txt") + else: + session.install("-r", "requirements-test.txt") if INSTALL_LIBRARY_FROM_SOURCE: session.install("-e", _get_repo_root()) diff --git a/packages/google-cloud-asset/synth.metadata b/packages/google-cloud-asset/synth.metadata deleted file mode 100644 index cf85fe035325..000000000000 --- a/packages/google-cloud-asset/synth.metadata +++ /dev/null @@ -1,258 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "https://github.com/googleapis/python-asset.git", - "sha": "07780ca9af3184eac94d33455f0550431e37d93e" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "8ff7d794576311d3d68d4df2ac6da93bbfcd7476", - "internalRef": "366472163" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5b5bf6d519b2d658d9f2e483d9f6f3d0ba8ee6bc" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5b5bf6d519b2d658d9f2e483d9f6f3d0ba8ee6bc" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "asset", - "apiVersion": "v1p1beta1", - "language": "python", - "generator": "bazel" - } - }, - { - "client": { - "source": "googleapis", - "apiName": "asset", - "apiVersion": "v1p2beta1", - "language": "python", - "generator": "bazel" - } - }, - { - "client": { - "source": "googleapis", - "apiName": "asset", - "apiVersion": "v1p4beta1", - "language": "python", - "generator": "bazel" - } - }, - { - "client": { - "source": "googleapis", - "apiName": "asset", - "apiVersion": "v1p5beta1", - "language": "python", - "generator": "bazel" - } - }, - { - "client": { - "source": "googleapis", - "apiName": "asset", - "apiVersion": "v1", - "language": "python", - "generator": "bazel" - } - } - ], - "generatedFiles": [ - ".coveragerc", - ".flake8", - ".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", - "asset-v1-py.tar.gz", - "docs/_static/custom.css", - "docs/_templates/layout.html", - "docs/asset_v1/asset_service.rst", - "docs/asset_v1/services.rst", - "docs/asset_v1/types.rst", - "docs/asset_v1p1beta1/asset_service.rst", - "docs/asset_v1p1beta1/services.rst", - "docs/asset_v1p1beta1/types.rst", - "docs/asset_v1p2beta1/asset_service.rst", - "docs/asset_v1p2beta1/services.rst", - "docs/asset_v1p2beta1/types.rst", - "docs/asset_v1p4beta1/asset_service.rst", - "docs/asset_v1p4beta1/services.rst", - "docs/asset_v1p4beta1/types.rst", - "docs/asset_v1p5beta1/asset_service.rst", - "docs/asset_v1p5beta1/services.rst", - "docs/asset_v1p5beta1/types.rst", - "docs/conf.py", - "docs/multiprocessing.rst", - "google/cloud/asset/__init__.py", - "google/cloud/asset/py.typed", - "google/cloud/asset_v1/__init__.py", - "google/cloud/asset_v1/py.typed", - "google/cloud/asset_v1/services/__init__.py", - "google/cloud/asset_v1/services/asset_service/__init__.py", - "google/cloud/asset_v1/services/asset_service/async_client.py", - "google/cloud/asset_v1/services/asset_service/client.py", - "google/cloud/asset_v1/services/asset_service/pagers.py", - "google/cloud/asset_v1/services/asset_service/transports/__init__.py", - "google/cloud/asset_v1/services/asset_service/transports/base.py", - "google/cloud/asset_v1/services/asset_service/transports/grpc.py", - "google/cloud/asset_v1/services/asset_service/transports/grpc_asyncio.py", - "google/cloud/asset_v1/types/__init__.py", - "google/cloud/asset_v1/types/asset_service.py", - "google/cloud/asset_v1/types/assets.py", - "google/cloud/asset_v1p1beta1/__init__.py", - "google/cloud/asset_v1p1beta1/py.typed", - "google/cloud/asset_v1p1beta1/services/__init__.py", - "google/cloud/asset_v1p1beta1/services/asset_service/__init__.py", - "google/cloud/asset_v1p1beta1/services/asset_service/async_client.py", - "google/cloud/asset_v1p1beta1/services/asset_service/client.py", - "google/cloud/asset_v1p1beta1/services/asset_service/pagers.py", - "google/cloud/asset_v1p1beta1/services/asset_service/transports/__init__.py", - "google/cloud/asset_v1p1beta1/services/asset_service/transports/base.py", - "google/cloud/asset_v1p1beta1/services/asset_service/transports/grpc.py", - "google/cloud/asset_v1p1beta1/services/asset_service/transports/grpc_asyncio.py", - "google/cloud/asset_v1p1beta1/types/__init__.py", - "google/cloud/asset_v1p1beta1/types/asset_service.py", - "google/cloud/asset_v1p1beta1/types/assets.py", - "google/cloud/asset_v1p2beta1/__init__.py", - "google/cloud/asset_v1p2beta1/py.typed", - "google/cloud/asset_v1p2beta1/services/__init__.py", - "google/cloud/asset_v1p2beta1/services/asset_service/__init__.py", - "google/cloud/asset_v1p2beta1/services/asset_service/async_client.py", - "google/cloud/asset_v1p2beta1/services/asset_service/client.py", - "google/cloud/asset_v1p2beta1/services/asset_service/transports/__init__.py", - "google/cloud/asset_v1p2beta1/services/asset_service/transports/base.py", - "google/cloud/asset_v1p2beta1/services/asset_service/transports/grpc.py", - "google/cloud/asset_v1p2beta1/services/asset_service/transports/grpc_asyncio.py", - "google/cloud/asset_v1p2beta1/types/__init__.py", - "google/cloud/asset_v1p2beta1/types/asset_service.py", - "google/cloud/asset_v1p2beta1/types/assets.py", - "google/cloud/asset_v1p4beta1/__init__.py", - "google/cloud/asset_v1p4beta1/py.typed", - "google/cloud/asset_v1p4beta1/services/__init__.py", - "google/cloud/asset_v1p4beta1/services/asset_service/__init__.py", - "google/cloud/asset_v1p4beta1/services/asset_service/async_client.py", - "google/cloud/asset_v1p4beta1/services/asset_service/client.py", - "google/cloud/asset_v1p4beta1/services/asset_service/transports/__init__.py", - "google/cloud/asset_v1p4beta1/services/asset_service/transports/base.py", - "google/cloud/asset_v1p4beta1/services/asset_service/transports/grpc.py", - "google/cloud/asset_v1p4beta1/services/asset_service/transports/grpc_asyncio.py", - "google/cloud/asset_v1p4beta1/types/__init__.py", - "google/cloud/asset_v1p4beta1/types/asset_service.py", - "google/cloud/asset_v1p4beta1/types/assets.py", - "google/cloud/asset_v1p5beta1/__init__.py", - "google/cloud/asset_v1p5beta1/py.typed", - "google/cloud/asset_v1p5beta1/services/__init__.py", - "google/cloud/asset_v1p5beta1/services/asset_service/__init__.py", - "google/cloud/asset_v1p5beta1/services/asset_service/async_client.py", - "google/cloud/asset_v1p5beta1/services/asset_service/client.py", - "google/cloud/asset_v1p5beta1/services/asset_service/pagers.py", - "google/cloud/asset_v1p5beta1/services/asset_service/transports/__init__.py", - "google/cloud/asset_v1p5beta1/services/asset_service/transports/base.py", - "google/cloud/asset_v1p5beta1/services/asset_service/transports/grpc.py", - "google/cloud/asset_v1p5beta1/services/asset_service/transports/grpc_asyncio.py", - "google/cloud/asset_v1p5beta1/types/__init__.py", - "google/cloud/asset_v1p5beta1/types/asset_service.py", - "google/cloud/asset_v1p5beta1/types/assets.py", - "mypy.ini", - "noxfile.py", - "renovate.json", - "samples/AUTHORING_GUIDE.md", - "samples/CONTRIBUTING.md", - "samples/snippets/noxfile.py", - "scripts/decrypt-secrets.sh", - "scripts/fixup_asset_v1_keywords.py", - "scripts/fixup_asset_v1p1beta1_keywords.py", - "scripts/fixup_asset_v1p2beta1_keywords.py", - "scripts/fixup_asset_v1p4beta1_keywords.py", - "scripts/fixup_asset_v1p5beta1_keywords.py", - "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", - "setup.cfg", - "testing/.gitignore", - "tests/unit/gapic/asset_v1/__init__.py", - "tests/unit/gapic/asset_v1/test_asset_service.py", - "tests/unit/gapic/asset_v1p1beta1/__init__.py", - "tests/unit/gapic/asset_v1p1beta1/test_asset_service.py", - "tests/unit/gapic/asset_v1p2beta1/__init__.py", - "tests/unit/gapic/asset_v1p2beta1/test_asset_service.py", - "tests/unit/gapic/asset_v1p4beta1/__init__.py", - "tests/unit/gapic/asset_v1p4beta1/test_asset_service.py", - "tests/unit/gapic/asset_v1p5beta1/__init__.py", - "tests/unit/gapic/asset_v1p5beta1/test_asset_service.py" - ] -} \ No newline at end of file