From 3788dcf2b79a998111a6b7eef8ed2fc9234a9828 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 24 Sep 2024 16:22:01 -0400 Subject: [PATCH 01/50] chore: change to a secure base image --- .cloudbuild/library_generation/library_generation.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index ad9fc9c5ce..e99d48b3aa 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -14,7 +14,7 @@ # install gapic-generator-java in a separate layer so we don't overload the image # with the transferred source code and jars -FROM gcr.io/cloud-devrel-public-resources/java21 AS ggj-build +FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:2cb7c73ba2fd0f7ae64cfabd99180030ec85841a1197b4ae821d21836cb0aa3b AS ggj-build WORKDIR /sdk-platform-java COPY . . @@ -27,7 +27,7 @@ RUN cp "/root/.m2/repository/com/google/api/gapic-generator-java/${DOCKER_GAPIC_ "./gapic-generator-java.jar" # build from the root of this repo: -FROM gcr.io/cloud-devrel-public-resources/python +FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/python@sha256:e31986c72ec7f2a4e1c4d7a4e6034b5db537293b01df9192934ec028f762279e SHELL [ "/bin/bash", "-c" ] From 25e0b2c90b9ae7fe37e65a0f08a297ae4b4ff712 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 25 Sep 2024 10:17:34 -0400 Subject: [PATCH 02/50] add a test config --- ...-library-generation-integration-tests.yaml | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml new file mode 100644 index 0000000000..7499054c96 --- /dev/null +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -0,0 +1,49 @@ +# 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. + +timeout: 7200s # 2 hours +substitutions: + _IMAGE_NAME: "test-image" +steps: + # Library generation build + - id: library-generation-image-build + name: gcr.io/cloud-builders/docker + args: [ + "build", + "-t", "${_IMAGE_NAME}", + "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] + env: + - 'DOCKER_BUILDKIT=1' + waitFor: ["-"] + # Dependency installation + - id: library-generation-python-libs + name: python + args: [ "python", "-m", "pip", "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] + waitFor: ["library-generation-image-build"] + # Python scripts compilation + - id: library-generation-python-compile + name: python + args: [ "python", "-m", "pip", "install", "library_generation" ] + waitFor: ["library-generation-image-build"] + # Python integration tests execution + - id: run-integration-tests + name: python + args: [ "python", "-m", "unittest", + "library_generation/test/integration_tests.py" ] + waitFor: ["library-generation-python-compile", "library-generation-python-libs"] + +options: + # Builds ran by service accounts we need to either a) specify a logs bucket, + # b) use REGIONAL_USER_OWNER_BUCKET, or c) use CLOUD_LOGGING_ONLY. We go for c) + logging: CLOUD_LOGGING_ONLY From 472b49368bf9395cb2e3c1a0326681d451465e5e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 25 Sep 2024 10:19:06 -0400 Subject: [PATCH 03/50] change integration test --- library_generation/test/integration_tests.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index c5f8221cc9..7166d1b2a4 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -34,9 +34,6 @@ golden_dir = os.path.join(config_dir, "golden") generator_jar_coordinates_file = os.path.join(config_dir, "test_generator_coordinates") repo_root_dir = os.path.join(script_dir, "..", "..") -build_file = os.path.join( - repo_root_dir, ".cloudbuild", "library_generation", "library_generation.Dockerfile" -) image_tag = "test-image:latest" repo_prefix = "https://github.com/googleapis" output_dir = shell_call("get_output_folder") @@ -63,7 +60,6 @@ class IntegrationTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.__download_generator_jar(coordinates_file=generator_jar_coordinates_file) - cls.__build_image(docker_file=build_file, cwd=repo_root_dir) @classmethod def setUp(cls) -> None: @@ -209,15 +205,6 @@ def __copy_api_definition(cls, committish: str) -> str: shutil.rmtree(repo_dest) return api_temp_dir - @classmethod - def __build_image(cls, docker_file: str, cwd: str): - # we build the docker image without removing intermediate containers, so - # we can re-test more quickly - subprocess.check_call( - ["docker", "build", "-f", docker_file, "-t", image_tag, "."], - cwd=cwd, - ) - @classmethod def __download_generator_jar(cls, coordinates_file: str) -> None: """ From 303d96face429aad83f9128a485f7c3170da55c1 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 25 Sep 2024 10:26:23 -0400 Subject: [PATCH 04/50] remove integration test in ci --- .../workflows/verify_library_generation.yaml | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/.github/workflows/verify_library_generation.yaml b/.github/workflows/verify_library_generation.yaml index 9682f8e594..bdb6a005f7 100644 --- a/.github/workflows/verify_library_generation.yaml +++ b/.github/workflows/verify_library_generation.yaml @@ -38,40 +38,6 @@ jobs: head_repo_url: ${{ github.event.pull_request.head.repo.html_url }} head_repo_name: ${{ github.event.pull_request.head.repo.full_name }} base_repo: ${{ github.repository }} - library-generation-integration-tests: - runs-on: ubuntu-22.04 - needs: should-run-library-generation-tests - if: needs.should-run-library-generation-tests.outputs.should_run == 'true' - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.11 - - name: install pyenv - shell: bash - run: | - set -ex - curl https://pyenv.run | bash - # setup environment - export PYENV_ROOT="$HOME/.pyenv" - export PATH="$PYENV_ROOT/bin:$PATH" - echo "PYENV_ROOT=${PYENV_ROOT}" >> $GITHUB_ENV - echo "PATH=${PATH}" >> $GITHUB_ENV - - set +ex - - name: install python dependencies - shell: bash - run: | - set -ex - pushd library_generation - pip install -r requirements.txt - pip install . - popd - - name: Run integration tests - shell: bash - run: | - set -x - python -m unittest library_generation/test/integration_tests.py library-generation-unit-tests: runs-on: ubuntu-22.04 needs: should-run-library-generation-tests From 2055944dedea46046b1b6d8f9a7e7f8b76df8a15 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 25 Sep 2024 11:33:51 -0400 Subject: [PATCH 05/50] add auth --- .../cloudbuild-library-generation-integration-tests.yaml | 2 ++ .cloudbuild/library_generation/library_generation.Dockerfile | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 7499054c96..1df82978ff 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -21,6 +21,8 @@ steps: name: gcr.io/cloud-builders/docker args: [ "build", + "--secret", "id=credentials,src=$HOME/.config/gcloud/application_default_credentials.json", + "--build-arg", "GOOGLE_APPLICATION_CREDENTIALS=/run/secrets/credentials", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] env: diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index e99d48b3aa..e626c8f3ad 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -14,6 +14,11 @@ # install gapic-generator-java in a separate layer so we don't overload the image # with the transferred source code and jars +FROM gcr.io/cloud-builders/gcloud +# If GOOGLE_APPLICATION_CREDENTIALS is passed in docker build command use it, if not leave it unset to support GCE Metadata in CI builds +ARG GOOGLE_APPLICATION_CREDENTIALS +RUN --mount=type=secret,id=credentials gcloud auth list + FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:2cb7c73ba2fd0f7ae64cfabd99180030ec85841a1197b4ae821d21836cb0aa3b AS ggj-build WORKDIR /sdk-platform-java From 653b9041eccad69b63c8590180abc427167fb90b Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 25 Sep 2024 11:37:04 -0400 Subject: [PATCH 06/50] change home --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 1df82978ff..2a1ffc78da 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -21,7 +21,7 @@ steps: name: gcr.io/cloud-builders/docker args: [ "build", - "--secret", "id=credentials,src=$HOME/.config/gcloud/application_default_credentials.json", + "--secret", "id=credentials,src=~/.config/gcloud/application_default_credentials.json", "--build-arg", "GOOGLE_APPLICATION_CREDENTIALS=/run/secrets/credentials", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] From d5909b621fad328e8b6b5b1ee39bad8d2afb4b89 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 26 Sep 2024 07:57:32 -0400 Subject: [PATCH 07/50] restore --- .../cloudbuild-library-generation-integration-tests.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 2a1ffc78da..7499054c96 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -21,8 +21,6 @@ steps: name: gcr.io/cloud-builders/docker args: [ "build", - "--secret", "id=credentials,src=~/.config/gcloud/application_default_credentials.json", - "--build-arg", "GOOGLE_APPLICATION_CREDENTIALS=/run/secrets/credentials", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] env: From 8f32363060709747f95a253222927dc6b9fbb6a4 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 26 Sep 2024 14:46:15 -0400 Subject: [PATCH 08/50] run gcloud --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index e626c8f3ad..aa29b1a05f 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -17,7 +17,7 @@ FROM gcr.io/cloud-builders/gcloud # If GOOGLE_APPLICATION_CREDENTIALS is passed in docker build command use it, if not leave it unset to support GCE Metadata in CI builds ARG GOOGLE_APPLICATION_CREDENTIALS -RUN --mount=type=secret,id=credentials gcloud auth list +RUN --mount=type=secret,id=credentials gcloud auth configure-docker us-docker.pkg.dev FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:2cb7c73ba2fd0f7ae64cfabd99180030ec85841a1197b4ae821d21836cb0aa3b AS ggj-build From 0e8643654cf51365121e776e84c0b555212c007e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 26 Sep 2024 14:53:59 -0400 Subject: [PATCH 09/50] remove gcloud --- .../library_generation/library_generation.Dockerfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 3bd194c7c7..7b7f6f6dbd 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -12,13 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -# install gapic-generator-java in a separate layer so we don't overload the image -# with the transferred source code and jars -FROM gcr.io/cloud-builders/gcloud # If GOOGLE_APPLICATION_CREDENTIALS is passed in docker build command use it, if not leave it unset to support GCE Metadata in CI builds ARG GOOGLE_APPLICATION_CREDENTIALS -RUN --mount=type=secret,id=credentials gcloud auth configure-docker us-docker.pkg.dev +# install gapic-generator-java in a separate layer so we don't overload the image +# with the transferred source code and jars FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:2cb7c73ba2fd0f7ae64cfabd99180030ec85841a1197b4ae821d21836cb0aa3b AS ggj-build WORKDIR /sdk-platform-java From 3831e37f8d975e8cedeaa321709a2553061521e4 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 26 Sep 2024 14:58:41 -0400 Subject: [PATCH 10/50] add mount --- .../library_generation.Dockerfile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 7b7f6f6dbd..849de0c9de 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -12,20 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -# If GOOGLE_APPLICATION_CREDENTIALS is passed in docker build command use it, if not leave it unset to support GCE Metadata in CI builds -ARG GOOGLE_APPLICATION_CREDENTIALS - # install gapic-generator-java in a separate layer so we don't overload the image # with the transferred source code and jars FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:2cb7c73ba2fd0f7ae64cfabd99180030ec85841a1197b4ae821d21836cb0aa3b AS ggj-build +# If GOOGLE_APPLICATION_CREDENTIALS is passed in docker build command use it, if not leave it unset to support GCE Metadata in CI builds +ARG GOOGLE_APPLICATION_CREDENTIALS + WORKDIR /sdk-platform-java COPY . . # {x-version-update-start:gapic-generator-java:current} ENV DOCKER_GAPIC_GENERATOR_VERSION="2.46.2-SNAPSHOT" # {x-version-update-end} -RUN mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip +RUN --mount=type=secret,id=credentials \ + mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip RUN cp "/root/.m2/repository/com/google/api/gapic-generator-java/${DOCKER_GAPIC_GENERATOR_VERSION}/gapic-generator-java-${DOCKER_GAPIC_GENERATOR_VERSION}.jar" \ "./gapic-generator-java.jar" @@ -42,9 +43,10 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apt-get update && apt-get install -y \ - unzip openjdk-17-jdk rsync maven jq \ - && apt-get clean +RUN --mount=type=secret,id=credentials \ + apt-get update && apt-get install -y \ + unzip openjdk-17-jdk rsync maven jq \ + && apt-get clean # copy source code COPY library_generation /src From 381cd3961c829063f8e99249cceaaed82a3e2903 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 26 Sep 2024 15:25:07 -0400 Subject: [PATCH 11/50] add buildx --- .../cloudbuild-library-generation-integration-tests.yaml | 1 + .../library_generation/library_generation.Dockerfile | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 7499054c96..c5e01421a9 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -20,6 +20,7 @@ steps: - id: library-generation-image-build name: gcr.io/cloud-builders/docker args: [ + "buildx", "build", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 849de0c9de..c8f5d8dfd1 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -25,8 +25,7 @@ COPY . . ENV DOCKER_GAPIC_GENERATOR_VERSION="2.46.2-SNAPSHOT" # {x-version-update-end} -RUN --mount=type=secret,id=credentials \ - mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip +RUN mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip RUN cp "/root/.m2/repository/com/google/api/gapic-generator-java/${DOCKER_GAPIC_GENERATOR_VERSION}/gapic-generator-java-${DOCKER_GAPIC_GENERATOR_VERSION}.jar" \ "./gapic-generator-java.jar" @@ -43,8 +42,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN --mount=type=secret,id=credentials \ - apt-get update && apt-get install -y \ +RUN apt-get update && apt-get install -y \ unzip openjdk-17-jdk rsync maven jq \ && apt-get clean From 73f6e7dd682dd6dfb7c2478a7dba464dbe7cfb82 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Fri, 27 Sep 2024 16:57:20 +0000 Subject: [PATCH 12/50] change dockerfile --- .../library_generation.Dockerfile | 5 - library_generation/requirements.in | 3 +- library_generation/requirements.txt | 507 +++++++++--------- 3 files changed, 257 insertions(+), 258 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index c8f5d8dfd1..aa87a00917 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -73,12 +73,7 @@ ENV DOCKER_GRPC_VERSION="${GRPC_VERSION}" COPY --from=ggj-build "/sdk-platform-java/gapic-generator-java.jar" "${HOME}/.library_generation/gapic-generator-java.jar" RUN chmod 755 "${HOME}/.library_generation/gapic-generator-java.jar" -# use python 3.11 (the base image has several python versions; here we define the default one) -RUN rm $(which python3) -RUN ln -s $(which python3.11) /usr/local/bin/python -RUN ln -s $(which python3.11) /usr/local/bin/python3 RUN python -m pip install --upgrade pip - # install main scripts as a python package WORKDIR /src RUN python -m pip install -r requirements.txt diff --git a/library_generation/requirements.in b/library_generation/requirements.in index 0d95852e61..73128d324a 100644 --- a/library_generation/requirements.in +++ b/library_generation/requirements.in @@ -22,8 +22,9 @@ nox==2024.4.15 requests==2.32.3 setuptools==65.5.1 jinja2==3.1.4 +requests-mock==1.12.1 # used in owlbot unit tests # typing-extensions is a transitive dependency. If we run `pip-compile ... --generate-hashes` it will produce # a list where typing extensions is pinned to >=4.0.1. This will produce an error saying "all requirements # must have their versions pinned with ==". The following line pins the dependency to a specific version via == typing-extensions==4.0.1 -requests-mock # used in owlbot unit tests +tomli==1.1.0 diff --git a/library_generation/requirements.txt b/library_generation/requirements.txt index fd987f45db..994977e77e 100644 --- a/library_generation/requirements.txt +++ b/library_generation/requirements.txt @@ -20,29 +20,29 @@ attrs==23.2.0 \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via -r library_generation/requirements.in -black==24.8.0 \ - --hash=sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6 \ - --hash=sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e \ - --hash=sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f \ - --hash=sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018 \ - --hash=sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e \ - --hash=sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd \ - --hash=sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4 \ - --hash=sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed \ - --hash=sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2 \ - --hash=sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42 \ - --hash=sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af \ - --hash=sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb \ - --hash=sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368 \ - --hash=sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb \ - --hash=sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af \ - --hash=sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed \ - --hash=sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47 \ - --hash=sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2 \ - --hash=sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a \ - --hash=sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c \ - --hash=sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920 \ - --hash=sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1 +black==24.4.2 \ + --hash=sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474 \ + --hash=sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1 \ + --hash=sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0 \ + --hash=sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8 \ + --hash=sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96 \ + --hash=sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1 \ + --hash=sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04 \ + --hash=sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021 \ + --hash=sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94 \ + --hash=sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d \ + --hash=sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c \ + --hash=sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7 \ + --hash=sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c \ + --hash=sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc \ + --hash=sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7 \ + --hash=sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d \ + --hash=sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c \ + --hash=sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741 \ + --hash=sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce \ + --hash=sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb \ + --hash=sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063 \ + --hash=sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e # via -r library_generation/requirements.in certifi==2024.8.30 \ --hash=sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8 \ @@ -178,145 +178,149 @@ jinja2==3.1.4 \ --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \ --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d # via -r library_generation/requirements.in -lxml==5.3.0 \ - --hash=sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e \ - --hash=sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229 \ - --hash=sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3 \ - --hash=sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5 \ - --hash=sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70 \ - --hash=sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15 \ - --hash=sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002 \ - --hash=sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd \ - --hash=sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22 \ - --hash=sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf \ - --hash=sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22 \ - --hash=sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832 \ - --hash=sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727 \ - --hash=sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e \ - --hash=sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30 \ - --hash=sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f \ - --hash=sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f \ - --hash=sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51 \ - --hash=sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4 \ - --hash=sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de \ - --hash=sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875 \ - --hash=sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42 \ - --hash=sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e \ - --hash=sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6 \ - --hash=sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391 \ - --hash=sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc \ - --hash=sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b \ - --hash=sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237 \ - --hash=sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4 \ - --hash=sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86 \ - --hash=sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f \ - --hash=sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a \ - --hash=sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8 \ - --hash=sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f \ - --hash=sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903 \ - --hash=sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03 \ - --hash=sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e \ - --hash=sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99 \ - --hash=sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7 \ - --hash=sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab \ - --hash=sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d \ - --hash=sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22 \ - --hash=sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492 \ - --hash=sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b \ - --hash=sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3 \ - --hash=sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be \ - --hash=sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469 \ - --hash=sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f \ - --hash=sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a \ - --hash=sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c \ - --hash=sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a \ - --hash=sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4 \ - --hash=sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94 \ - --hash=sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442 \ - --hash=sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b \ - --hash=sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84 \ - --hash=sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c \ - --hash=sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9 \ - --hash=sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1 \ - --hash=sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be \ - --hash=sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367 \ - --hash=sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e \ - --hash=sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21 \ - --hash=sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa \ - --hash=sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16 \ - --hash=sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d \ - --hash=sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe \ - --hash=sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83 \ - --hash=sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba \ - --hash=sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040 \ - --hash=sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763 \ - --hash=sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8 \ - --hash=sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff \ - --hash=sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2 \ - --hash=sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a \ - --hash=sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b \ - --hash=sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce \ - --hash=sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c \ - --hash=sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577 \ - --hash=sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8 \ - --hash=sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71 \ - --hash=sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512 \ - --hash=sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540 \ - --hash=sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f \ - --hash=sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2 \ - --hash=sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a \ - --hash=sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce \ - --hash=sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e \ - --hash=sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2 \ - --hash=sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27 \ - --hash=sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1 \ - --hash=sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d \ - --hash=sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1 \ - --hash=sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330 \ - --hash=sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920 \ - --hash=sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99 \ - --hash=sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff \ - --hash=sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18 \ - --hash=sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff \ - --hash=sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c \ - --hash=sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179 \ - --hash=sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080 \ - --hash=sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19 \ - --hash=sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d \ - --hash=sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70 \ - --hash=sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32 \ - --hash=sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a \ - --hash=sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2 \ - --hash=sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79 \ - --hash=sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3 \ - --hash=sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5 \ - --hash=sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f \ - --hash=sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d \ - --hash=sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3 \ - --hash=sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b \ - --hash=sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753 \ - --hash=sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9 \ - --hash=sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957 \ - --hash=sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033 \ - --hash=sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb \ - --hash=sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656 \ - --hash=sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab \ - --hash=sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b \ - --hash=sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d \ - --hash=sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd \ - --hash=sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859 \ - --hash=sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11 \ - --hash=sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c \ - --hash=sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a \ - --hash=sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005 \ - --hash=sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654 \ - --hash=sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80 \ - --hash=sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e \ - --hash=sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec \ - --hash=sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7 \ - --hash=sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965 \ - --hash=sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945 \ - --hash=sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8 +lxml==5.2.2 \ + --hash=sha256:02437fb7308386867c8b7b0e5bc4cd4b04548b1c5d089ffb8e7b31009b961dc3 \ + --hash=sha256:02f6a8eb6512fdc2fd4ca10a49c341c4e109aa6e9448cc4859af5b949622715a \ + --hash=sha256:05f8757b03208c3f50097761be2dea0aba02e94f0dc7023ed73a7bb14ff11eb0 \ + --hash=sha256:06668e39e1f3c065349c51ac27ae430719d7806c026fec462e5693b08b95696b \ + --hash=sha256:07542787f86112d46d07d4f3c4e7c760282011b354d012dc4141cc12a68cef5f \ + --hash=sha256:08ea0f606808354eb8f2dfaac095963cb25d9d28e27edcc375d7b30ab01abbf6 \ + --hash=sha256:0969e92af09c5687d769731e3f39ed62427cc72176cebb54b7a9d52cc4fa3b73 \ + --hash=sha256:0a028b61a2e357ace98b1615fc03f76eb517cc028993964fe08ad514b1e8892d \ + --hash=sha256:0b3f5016e00ae7630a4b83d0868fca1e3d494c78a75b1c7252606a3a1c5fc2ad \ + --hash=sha256:13e69be35391ce72712184f69000cda04fc89689429179bc4c0ae5f0b7a8c21b \ + --hash=sha256:16a8326e51fcdffc886294c1e70b11ddccec836516a343f9ed0f82aac043c24a \ + --hash=sha256:19b4e485cd07b7d83e3fe3b72132e7df70bfac22b14fe4bf7a23822c3a35bff5 \ + --hash=sha256:1a2569a1f15ae6c8c64108a2cd2b4a858fc1e13d25846be0666fc144715e32ab \ + --hash=sha256:1a7aca7964ac4bb07680d5c9d63b9d7028cace3e2d43175cb50bba8c5ad33316 \ + --hash=sha256:1b590b39ef90c6b22ec0be925b211298e810b4856909c8ca60d27ffbca6c12e6 \ + --hash=sha256:1d8a701774dfc42a2f0b8ccdfe7dbc140500d1049e0632a611985d943fcf12df \ + --hash=sha256:1e275ea572389e41e8b039ac076a46cb87ee6b8542df3fff26f5baab43713bca \ + --hash=sha256:2304d3c93f2258ccf2cf7a6ba8c761d76ef84948d87bf9664e14d203da2cd264 \ + --hash=sha256:23441e2b5339bc54dc949e9e675fa35efe858108404ef9aa92f0456929ef6fe8 \ + --hash=sha256:23cfafd56887eaed93d07bc4547abd5e09d837a002b791e9767765492a75883f \ + --hash=sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b \ + --hash=sha256:2eb2227ce1ff998faf0cd7fe85bbf086aa41dfc5af3b1d80867ecfe75fb68df3 \ + --hash=sha256:2fb0ba3e8566548d6c8e7dd82a8229ff47bd8fb8c2da237607ac8e5a1b8312e5 \ + --hash=sha256:303f540ad2dddd35b92415b74b900c749ec2010e703ab3bfd6660979d01fd4ed \ + --hash=sha256:339ee4a4704bc724757cd5dd9dc8cf4d00980f5d3e6e06d5847c1b594ace68ab \ + --hash=sha256:33ce9e786753743159799fdf8e92a5da351158c4bfb6f2db0bf31e7892a1feb5 \ + --hash=sha256:343ab62e9ca78094f2306aefed67dcfad61c4683f87eee48ff2fd74902447726 \ + --hash=sha256:34e17913c431f5ae01d8658dbf792fdc457073dcdfbb31dc0cc6ab256e664a8d \ + --hash=sha256:364d03207f3e603922d0d3932ef363d55bbf48e3647395765f9bfcbdf6d23632 \ + --hash=sha256:38b67afb0a06b8575948641c1d6d68e41b83a3abeae2ca9eed2ac59892b36706 \ + --hash=sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8 \ + --hash=sha256:3b019d4ee84b683342af793b56bb35034bd749e4cbdd3d33f7d1107790f8c472 \ + --hash=sha256:3b6a30a9ab040b3f545b697cb3adbf3696c05a3a68aad172e3fd7ca73ab3c835 \ + --hash=sha256:3d1e35572a56941b32c239774d7e9ad724074d37f90c7a7d499ab98761bd80cf \ + --hash=sha256:3d98de734abee23e61f6b8c2e08a88453ada7d6486dc7cdc82922a03968928db \ + --hash=sha256:453d037e09a5176d92ec0fd282e934ed26d806331a8b70ab431a81e2fbabf56d \ + --hash=sha256:45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545 \ + --hash=sha256:4820c02195d6dfb7b8508ff276752f6b2ff8b64ae5d13ebe02e7667e035000b9 \ + --hash=sha256:49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be \ + --hash=sha256:4aefd911793b5d2d7a921233a54c90329bf3d4a6817dc465f12ffdfe4fc7b8fe \ + --hash=sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905 \ + --hash=sha256:4c30a2f83677876465f44c018830f608fa3c6a8a466eb223535035fbc16f3438 \ + --hash=sha256:50127c186f191b8917ea2fb8b206fbebe87fd414a6084d15568c27d0a21d60db \ + --hash=sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776 \ + --hash=sha256:519895c99c815a1a24a926d5b60627ce5ea48e9f639a5cd328bda0515ea0f10c \ + --hash=sha256:54401c77a63cc7d6dc4b4e173bb484f28a5607f3df71484709fe037c92d4f0ed \ + --hash=sha256:546cf886f6242dff9ec206331209db9c8e1643ae642dea5fdbecae2453cb50fd \ + --hash=sha256:55ce6b6d803890bd3cc89975fca9de1dff39729b43b73cb15ddd933b8bc20484 \ + --hash=sha256:56793b7a1a091a7c286b5f4aa1fe4ae5d1446fe742d00cdf2ffb1077865db10d \ + --hash=sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6 \ + --hash=sha256:5b8c041b6265e08eac8a724b74b655404070b636a8dd6d7a13c3adc07882ef30 \ + --hash=sha256:5e097646944b66207023bc3c634827de858aebc226d5d4d6d16f0b77566ea182 \ + --hash=sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61 \ + --hash=sha256:610b5c77428a50269f38a534057444c249976433f40f53e3b47e68349cca1425 \ + --hash=sha256:625e3ef310e7fa3a761d48ca7ea1f9d8718a32b1542e727d584d82f4453d5eeb \ + --hash=sha256:657a972f46bbefdbba2d4f14413c0d079f9ae243bd68193cb5061b9732fa54c1 \ + --hash=sha256:69ab77a1373f1e7563e0fb5a29a8440367dec051da6c7405333699d07444f511 \ + --hash=sha256:6a520b4f9974b0a0a6ed73c2154de57cdfd0c8800f4f15ab2b73238ffed0b36e \ + --hash=sha256:6d68ce8e7b2075390e8ac1e1d3a99e8b6372c694bbe612632606d1d546794207 \ + --hash=sha256:6dcc3d17eac1df7859ae01202e9bb11ffa8c98949dcbeb1069c8b9a75917e01b \ + --hash=sha256:6dfdc2bfe69e9adf0df4915949c22a25b39d175d599bf98e7ddf620a13678585 \ + --hash=sha256:739e36ef7412b2bd940f75b278749106e6d025e40027c0b94a17ef7968d55d56 \ + --hash=sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391 \ + --hash=sha256:74da9f97daec6928567b48c90ea2c82a106b2d500f397eeb8941e47d30b1ca85 \ + --hash=sha256:74e4f025ef3db1c6da4460dd27c118d8cd136d0391da4e387a15e48e5c975147 \ + --hash=sha256:75a9632f1d4f698b2e6e2e1ada40e71f369b15d69baddb8968dcc8e683839b18 \ + --hash=sha256:76acba4c66c47d27c8365e7c10b3d8016a7da83d3191d053a58382311a8bf4e1 \ + --hash=sha256:79d1fb9252e7e2cfe4de6e9a6610c7cbb99b9708e2c3e29057f487de5a9eaefa \ + --hash=sha256:7ce7ad8abebe737ad6143d9d3bf94b88b93365ea30a5b81f6877ec9c0dee0a48 \ + --hash=sha256:7ed07b3062b055d7a7f9d6557a251cc655eed0b3152b76de619516621c56f5d3 \ + --hash=sha256:7ff762670cada8e05b32bf1e4dc50b140790909caa8303cfddc4d702b71ea184 \ + --hash=sha256:8268cbcd48c5375f46e000adb1390572c98879eb4f77910c6053d25cc3ac2c67 \ + --hash=sha256:875a3f90d7eb5c5d77e529080d95140eacb3c6d13ad5b616ee8095447b1d22e7 \ + --hash=sha256:89feb82ca055af0fe797a2323ec9043b26bc371365847dbe83c7fd2e2f181c34 \ + --hash=sha256:8a7e24cb69ee5f32e003f50e016d5fde438010c1022c96738b04fc2423e61706 \ + --hash=sha256:8ab6a358d1286498d80fe67bd3d69fcbc7d1359b45b41e74c4a26964ca99c3f8 \ + --hash=sha256:8b8df03a9e995b6211dafa63b32f9d405881518ff1ddd775db4e7b98fb545e1c \ + --hash=sha256:8cf85a6e40ff1f37fe0f25719aadf443686b1ac7652593dc53c7ef9b8492b115 \ + --hash=sha256:8e8d351ff44c1638cb6e980623d517abd9f580d2e53bfcd18d8941c052a5a009 \ + --hash=sha256:9164361769b6ca7769079f4d426a41df6164879f7f3568be9086e15baca61466 \ + --hash=sha256:96e85aa09274955bb6bd483eaf5b12abadade01010478154b0ec70284c1b1526 \ + --hash=sha256:981a06a3076997adf7c743dcd0d7a0415582661e2517c7d961493572e909aa1d \ + --hash=sha256:9cd5323344d8ebb9fb5e96da5de5ad4ebab993bbf51674259dbe9d7a18049525 \ + --hash=sha256:9d6c6ea6a11ca0ff9cd0390b885984ed31157c168565702959c25e2191674a14 \ + --hash=sha256:a02d3c48f9bb1e10c7788d92c0c7db6f2002d024ab6e74d6f45ae33e3d0288a3 \ + --hash=sha256:a233bb68625a85126ac9f1fc66d24337d6e8a0f9207b688eec2e7c880f012ec0 \ + --hash=sha256:a2f6a1bc2460e643785a2cde17293bd7a8f990884b822f7bca47bee0a82fc66b \ + --hash=sha256:a6d17e0370d2516d5bb9062c7b4cb731cff921fc875644c3d751ad857ba9c5b1 \ + --hash=sha256:a6d2092797b388342c1bc932077ad232f914351932353e2e8706851c870bca1f \ + --hash=sha256:ab67ed772c584b7ef2379797bf14b82df9aa5f7438c5b9a09624dd834c1c1aaf \ + --hash=sha256:ac6540c9fff6e3813d29d0403ee7a81897f1d8ecc09a8ff84d2eea70ede1cdbf \ + --hash=sha256:ae4073a60ab98529ab8a72ebf429f2a8cc612619a8c04e08bed27450d52103c0 \ + --hash=sha256:ae791f6bd43305aade8c0e22f816b34f3b72b6c820477aab4d18473a37e8090b \ + --hash=sha256:aef5474d913d3b05e613906ba4090433c515e13ea49c837aca18bde190853dff \ + --hash=sha256:b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88 \ + --hash=sha256:b128092c927eaf485928cec0c28f6b8bead277e28acf56800e972aa2c2abd7a2 \ + --hash=sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40 \ + --hash=sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716 \ + --hash=sha256:b47633251727c8fe279f34025844b3b3a3e40cd1b198356d003aa146258d13a2 \ + --hash=sha256:b537bd04d7ccd7c6350cdaaaad911f6312cbd61e6e6045542f781c7f8b2e99d2 \ + --hash=sha256:b5e4ef22ff25bfd4ede5f8fb30f7b24446345f3e79d9b7455aef2836437bc38a \ + --hash=sha256:b74b9ea10063efb77a965a8d5f4182806fbf59ed068b3c3fd6f30d2ac7bee734 \ + --hash=sha256:bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87 \ + --hash=sha256:bbc4b80af581e18568ff07f6395c02114d05f4865c2812a1f02f2eaecf0bfd48 \ + --hash=sha256:bcc98f911f10278d1daf14b87d65325851a1d29153caaf146877ec37031d5f36 \ + --hash=sha256:be49ad33819d7dcc28a309b86d4ed98e1a65f3075c6acd3cd4fe32103235222b \ + --hash=sha256:bec4bd9133420c5c52d562469c754f27c5c9e36ee06abc169612c959bd7dbb07 \ + --hash=sha256:c2faf60c583af0d135e853c86ac2735ce178f0e338a3c7f9ae8f622fd2eb788c \ + --hash=sha256:c689d0d5381f56de7bd6966a4541bff6e08bf8d3871bbd89a0c6ab18aa699573 \ + --hash=sha256:c7079d5eb1c1315a858bbf180000757db8ad904a89476653232db835c3114001 \ + --hash=sha256:cb3942960f0beb9f46e2a71a3aca220d1ca32feb5a398656be934320804c0df9 \ + --hash=sha256:cd9e78285da6c9ba2d5c769628f43ef66d96ac3085e59b10ad4f3707980710d3 \ + --hash=sha256:cf2a978c795b54c539f47964ec05e35c05bd045db5ca1e8366988c7f2fe6b3ce \ + --hash=sha256:d14a0d029a4e176795cef99c056d58067c06195e0c7e2dbb293bf95c08f772a3 \ + --hash=sha256:d237ba6664b8e60fd90b8549a149a74fcc675272e0e95539a00522e4ca688b04 \ + --hash=sha256:d26a618ae1766279f2660aca0081b2220aca6bd1aa06b2cf73f07383faf48927 \ + --hash=sha256:d28cb356f119a437cc58a13f8135ab8a4c8ece18159eb9194b0d269ec4e28083 \ + --hash=sha256:d4ed0c7cbecde7194cd3228c044e86bf73e30a23505af852857c09c24e77ec5d \ + --hash=sha256:d83e2d94b69bf31ead2fa45f0acdef0757fa0458a129734f59f67f3d2eb7ef32 \ + --hash=sha256:d8bbcd21769594dbba9c37d3c819e2d5847656ca99c747ddb31ac1701d0c0ed9 \ + --hash=sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f \ + --hash=sha256:dc911208b18842a3a57266d8e51fc3cfaccee90a5351b92079beed912a7914c2 \ + --hash=sha256:dfa7c241073d8f2b8e8dbc7803c434f57dbb83ae2a3d7892dd068d99e96efe2c \ + --hash=sha256:e282aedd63c639c07c3857097fc0e236f984ceb4089a8b284da1c526491e3f3d \ + --hash=sha256:e290d79a4107d7d794634ce3e985b9ae4f920380a813717adf61804904dc4393 \ + --hash=sha256:e3d9d13603410b72787579769469af730c38f2f25505573a5888a94b62b920f8 \ + --hash=sha256:e481bba1e11ba585fb06db666bfc23dbe181dbafc7b25776156120bf12e0d5a6 \ + --hash=sha256:e49b052b768bb74f58c7dda4e0bdf7b79d43a9204ca584ffe1fb48a6f3c84c66 \ + --hash=sha256:eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5 \ + --hash=sha256:ec87c44f619380878bd49ca109669c9f221d9ae6883a5bcb3616785fa8f94c97 \ + --hash=sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196 \ + --hash=sha256:f11ae142f3a322d44513de1018b50f474f8f736bc3cd91d969f464b5bfef8836 \ + --hash=sha256:f2a09f6184f17a80897172863a655467da2b11151ec98ba8d7af89f17bf63dae \ + --hash=sha256:f5b65529bb2f21ac7861a0e94fdbf5dc0daab41497d18223b46ee8515e5ad297 \ + --hash=sha256:f60fdd125d85bf9c279ffb8e94c78c51b3b6a37711464e1f5f31078b45002421 \ + --hash=sha256:f61efaf4bed1cc0860e567d2ecb2363974d414f7f1f124b1df368bbf183453a6 \ + --hash=sha256:f90e552ecbad426eab352e7b2933091f2be77115bb16f09f78404861c8322981 \ + --hash=sha256:f956196ef61369f1685d14dad80611488d8dc1ef00be57c0c5a03064005b0f30 \ + --hash=sha256:fb91819461b1b56d06fa4bcf86617fac795f6a99d12239fb0c68dbeba41a0a30 \ + --hash=sha256:fbc9d316552f9ef7bba39f4edfad4a734d3d6f93341232a9dddadec4f15d425f \ + --hash=sha256:ff69a9a0b4b17d78170c73abe2ab12084bdf1691550c5629ad1fe7849433f324 \ + --hash=sha256:ffb2be176fed4457e445fe540617f0252a72a8bc56208fd65a690fdb1f57660b # via -r library_generation/requirements.in markupsafe==2.1.5 \ --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ @@ -415,60 +419,58 @@ platformdirs==4.3.6 \ # via # black # virtualenv -PyYAML==6.0.2 \ - --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ - --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ - --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ - --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ - --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ - --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ - --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ - --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ - --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ - --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ - --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ - --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ - --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ - --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ - --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ - --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ - --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ - --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ - --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ - --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ - --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ - --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ - --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ - --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ - --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ - --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ - --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ - --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ - --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ - --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ - --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ - --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ - --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ - --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ - --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ - --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ - --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ - --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ - --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ - --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ - --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ - --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ - --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ - --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ - --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ - --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ - --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ - --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ - --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ - --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ - --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ - --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ - --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 +pyyaml==6.0.1 \ + --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ + --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ + --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ + --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ + --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ + --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ + --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ + --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ + --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ + --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ + --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ + --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ + --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ + --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ + --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ + --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ + --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ + --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ + --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ + --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ + --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ + --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ + --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ + --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ + --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ + --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ + --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ + --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ + --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ + --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ + --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ + --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ + --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ + --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ + --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ + --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ + --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ + --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ + --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ + --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ + --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ + --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ + --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ + --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ + --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ + --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ + --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ + --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ + --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ + --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f # via -r library_generation/requirements.in requests==2.32.3 \ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ @@ -486,6 +488,10 @@ smmap==5.0.1 \ # via # -r library_generation/requirements.in # gitdb +tomli==1.1.0 \ + --hash=sha256:33d7984738f8bb699c9b0a816eb646a8178a69eaa792d258486776a5d21b8ca5 \ + --hash=sha256:f4a182048010e89cbec0ae4686b21f550a7f2903f665e34a6de58ec15424f919 + # via -r library_generation/requirements.in typing==3.7.4.3 \ --hash=sha256:1187fb9c82fd670d10aa07bbb6cfcfe4bdda42d6fab8d5134f04e8c4d0b71cc9 \ --hash=sha256:283d868f5071ab9ad873e5e52268d611e851c870a2ba354193026f2dfb29d8b5 @@ -502,42 +508,39 @@ virtualenv==20.26.5 \ --hash=sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6 \ --hash=sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4 # via nox -watchdog==4.0.2 \ - --hash=sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4 \ - --hash=sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19 \ - --hash=sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a \ - --hash=sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa \ - --hash=sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a \ - --hash=sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a \ - --hash=sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1 \ - --hash=sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc \ - --hash=sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9 \ - --hash=sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930 \ - --hash=sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73 \ - --hash=sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b \ - --hash=sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83 \ - --hash=sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7 \ - --hash=sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef \ - --hash=sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1 \ - --hash=sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040 \ - --hash=sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b \ - --hash=sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270 \ - --hash=sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c \ - --hash=sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d \ - --hash=sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8 \ - --hash=sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508 \ - --hash=sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b \ - --hash=sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503 \ - --hash=sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757 \ - --hash=sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b \ - --hash=sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29 \ - --hash=sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c \ - --hash=sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22 \ - --hash=sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578 \ - --hash=sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e \ - --hash=sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee \ - --hash=sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7 \ - --hash=sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3 +watchdog==4.0.1 \ + --hash=sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7 \ + --hash=sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767 \ + --hash=sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175 \ + --hash=sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459 \ + --hash=sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5 \ + --hash=sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429 \ + --hash=sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6 \ + --hash=sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d \ + --hash=sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7 \ + --hash=sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28 \ + --hash=sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235 \ + --hash=sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57 \ + --hash=sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a \ + --hash=sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5 \ + --hash=sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709 \ + --hash=sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee \ + --hash=sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84 \ + --hash=sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd \ + --hash=sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba \ + --hash=sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db \ + --hash=sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682 \ + --hash=sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35 \ + --hash=sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d \ + --hash=sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645 \ + --hash=sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253 \ + --hash=sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193 \ + --hash=sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b \ + --hash=sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44 \ + --hash=sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b \ + --hash=sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625 \ + --hash=sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e \ + --hash=sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5 # via -r library_generation/requirements.in # WARNING: The following packages were not pinned, but pip requires them to be From ffb5b46c0ee04192fd50bf3c257f315421b8a16b Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Fri, 27 Sep 2024 17:05:12 +0000 Subject: [PATCH 13/50] use network --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index c5e01421a9..887be66ac1 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -20,8 +20,8 @@ steps: - id: library-generation-image-build name: gcr.io/cloud-builders/docker args: [ - "buildx", "build", + "--network", "cloudbuild", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] env: From b1eb2f8b92087129990035ede195f6277d0c47af Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Fri, 27 Sep 2024 17:07:20 +0000 Subject: [PATCH 14/50] remove network --- .../cloudbuild-library-generation-integration-tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 887be66ac1..7499054c96 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -21,7 +21,6 @@ steps: name: gcr.io/cloud-builders/docker args: [ "build", - "--network", "cloudbuild", "-t", "${_IMAGE_NAME}", "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] env: From 9c1cc9a2e50fc77da5d5e53366e57da1d9d1da5a Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Sat, 28 Sep 2024 16:56:20 +0000 Subject: [PATCH 15/50] use buildx --- ...build-library-generation-integration-tests.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 7499054c96..8bd3bb6c1a 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -19,12 +19,14 @@ steps: # Library generation build - id: library-generation-image-build name: gcr.io/cloud-builders/docker - args: [ - "build", - "-t", "${_IMAGE_NAME}", - "--file", ".cloudbuild/library_generation/library_generation.Dockerfile", "."] - env: - - 'DOCKER_BUILDKIT=1' + entrypoint: bash + args: + - -c + - | + docker buildx build \ + -f .cloudbuild/library_generation/library_generation.Dockerfile \ + -t "${_IMAGE_NAME}" \ + -o type=image waitFor: ["-"] # Dependency installation - id: library-generation-python-libs From 7c4b3ca141acb93e3cb063c953c8d075d2ffccfb Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Sat, 28 Sep 2024 17:01:08 +0000 Subject: [PATCH 16/50] change cmd --- .../cloudbuild-library-generation-integration-tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 8bd3bb6c1a..7fe0a13747 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -26,7 +26,8 @@ steps: docker buildx build \ -f .cloudbuild/library_generation/library_generation.Dockerfile \ -t "${_IMAGE_NAME}" \ - -o type=image + -o type=image \ + . waitFor: ["-"] # Dependency installation - id: library-generation-python-libs From 87d1781039198f40093c287840f4da0b1215cb84 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 10:15:14 -0400 Subject: [PATCH 17/50] change seq --- ...d-library-generation-integration-tests.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 7fe0a13747..d3a02a8f4f 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -20,14 +20,14 @@ steps: - id: library-generation-image-build name: gcr.io/cloud-builders/docker entrypoint: bash - args: - - -c - - | - docker buildx build \ - -f .cloudbuild/library_generation/library_generation.Dockerfile \ - -t "${_IMAGE_NAME}" \ - -o type=image \ - . + args: [ + "-c", + "docker", "buildx", "build", + "-f", ".cloudbuild/library_generation/library_generation.Dockerfile", + "-t", "${_IMAGE_NAME}", + "-o", "type=image", + "." + ] waitFor: ["-"] # Dependency installation - id: library-generation-python-libs @@ -38,7 +38,7 @@ steps: - id: library-generation-python-compile name: python args: [ "python", "-m", "pip", "install", "library_generation" ] - waitFor: ["library-generation-image-build"] + waitFor: ["library-generation-python-libs"] # Python integration tests execution - id: run-integration-tests name: python From 9a61e32ff5510aa9b4ad6c9c86b5f7b636165d56 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 10:21:56 -0400 Subject: [PATCH 18/50] setup venv --- ...d-library-generation-integration-tests.yaml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index d3a02a8f4f..defb83c41c 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -29,22 +29,34 @@ steps: "." ] waitFor: ["-"] + - id: setup-virtual-env + name: python + args: ["python", "-m", "venv", ".venv"] + waitFor: ["-"] + - id: init-virtualenv + name: sh + args: ["source", ".venv/bin/activate"] + waitFor: ["setup-virtual-env"] # Dependency installation - id: library-generation-python-libs name: python args: [ "python", "-m", "pip", "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] - waitFor: ["library-generation-image-build"] + waitFor: ["init-virtualenv"] # Python scripts compilation - id: library-generation-python-compile name: python args: [ "python", "-m", "pip", "install", "library_generation" ] - waitFor: ["library-generation-python-libs"] + waitFor: ["init-virtualenv"] # Python integration tests execution - id: run-integration-tests name: python args: [ "python", "-m", "unittest", "library_generation/test/integration_tests.py" ] - waitFor: ["library-generation-python-compile", "library-generation-python-libs"] + waitFor: [ + "library-generation-image-build", + "library-generation-python-compile", + "library-generation-python-libs" + ] options: # Builds ran by service accounts we need to either a) specify a logs bucket, From 8161a12a18fc7d960bd1c443b7455a07e5b3ff7e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 10:40:46 -0400 Subject: [PATCH 19/50] use bash --- ...build-library-generation-integration-tests.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index defb83c41c..7442c32e72 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -31,27 +31,27 @@ steps: waitFor: ["-"] - id: setup-virtual-env name: python - args: ["python", "-m", "venv", ".venv"] + args: [ "-m", "venv", ".venv" ] waitFor: ["-"] - id: init-virtualenv - name: sh - args: ["source", ".venv/bin/activate"] + name: bash + script: | + source .venv/bin/activate waitFor: ["setup-virtual-env"] # Dependency installation - id: library-generation-python-libs name: python - args: [ "python", "-m", "pip", "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] + args: [ "-m", "pip", "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] waitFor: ["init-virtualenv"] # Python scripts compilation - id: library-generation-python-compile name: python - args: [ "python", "-m", "pip", "install", "library_generation" ] + args: [ "-m", "pip", "install", "library_generation" ] waitFor: ["init-virtualenv"] # Python integration tests execution - id: run-integration-tests name: python - args: [ "python", "-m", "unittest", - "library_generation/test/integration_tests.py" ] + args: [ "-m", "unittest", "library_generation/test/integration_tests.py" ] waitFor: [ "library-generation-image-build", "library-generation-python-compile", From 35b0cad520f512c7f08221073776d04109560d1a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 10:44:59 -0400 Subject: [PATCH 20/50] change entrypoint --- .../cloudbuild-library-generation-integration-tests.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 7442c32e72..1efe4e757b 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -31,6 +31,7 @@ steps: waitFor: ["-"] - id: setup-virtual-env name: python + entrypoint: python args: [ "-m", "venv", ".venv" ] waitFor: ["-"] - id: init-virtualenv @@ -41,16 +42,19 @@ steps: # Dependency installation - id: library-generation-python-libs name: python - args: [ "-m", "pip", "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] + entrypoint: pip + args: [ "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] waitFor: ["init-virtualenv"] # Python scripts compilation - id: library-generation-python-compile name: python - args: [ "-m", "pip", "install", "library_generation" ] + entrypoint: pip + args: [ "install", "library_generation" ] waitFor: ["init-virtualenv"] # Python integration tests execution - id: run-integration-tests name: python + entrypoint: python args: [ "-m", "unittest", "library_generation/test/integration_tests.py" ] waitFor: [ "library-generation-image-build", From 5a86c9eb63b62c781cc217c731f70c38fc57b7e3 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:06:39 -0400 Subject: [PATCH 21/50] combine steps --- ...-library-generation-integration-tests.yaml | 61 +++++++------------ 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 1efe4e757b..899cf4edc4 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -20,47 +20,28 @@ steps: - id: library-generation-image-build name: gcr.io/cloud-builders/docker entrypoint: bash - args: [ - "-c", - "docker", "buildx", "build", - "-f", ".cloudbuild/library_generation/library_generation.Dockerfile", - "-t", "${_IMAGE_NAME}", - "-o", "type=image", - "." - ] + args: + - -c + - | + docker buildx build \ + -f .cloudbuild/library_generation/library_generation.Dockerfile \ + -t "${_IMAGE_NAME}" \ + -o type=image \ + . waitFor: ["-"] - - id: setup-virtual-env - name: python - entrypoint: python - args: [ "-m", "venv", ".venv" ] - waitFor: ["-"] - - id: init-virtualenv - name: bash - script: | - source .venv/bin/activate - waitFor: ["setup-virtual-env"] - # Dependency installation - - id: library-generation-python-libs - name: python - entrypoint: pip - args: [ "install", "--require-hashes", "-r", "library_generation/requirements.txt" ] - waitFor: ["init-virtualenv"] - # Python scripts compilation - - id: library-generation-python-compile - name: python - entrypoint: pip - args: [ "install", "library_generation" ] - waitFor: ["init-virtualenv"] - # Python integration tests execution - - id: run-integration-tests - name: python - entrypoint: python - args: [ "-m", "unittest", "library_generation/test/integration_tests.py" ] - waitFor: [ - "library-generation-image-build", - "library-generation-python-compile", - "library-generation-python-libs" - ] + - id: run-integration-test + name: python3.12 + entrypoint: bash + args: + - -c + - | + python -m venv .venv + source .venv/bin/activate + pip install --upgrade pip + pip install --require-hashes -r library_generation/requirements.txt + pip install library_generation + python -m unittest library_generation/test/integration_tests.py + waitFor: ["library-generation-image-build"] options: # Builds ran by service accounts we need to either a) specify a logs bucket, From d7f63f0438bfc7df77941b3dd38622215bedfb05 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:16:21 -0400 Subject: [PATCH 22/50] use python --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 899cf4edc4..07783f68bd 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -30,7 +30,7 @@ steps: . waitFor: ["-"] - id: run-integration-test - name: python3.12 + name: python entrypoint: bash args: - -c From 74bdb23b1c5f04e2ed39f92a1fd8800011746e8d Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:17:47 -0400 Subject: [PATCH 23/50] use python3.12 --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 07783f68bd..22ce154acf 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -30,7 +30,7 @@ steps: . waitFor: ["-"] - id: run-integration-test - name: python + name: python:3.12 entrypoint: bash args: - -c From 246206a93f7231110c11896a5b50d99d501ff8e6 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:31:32 -0400 Subject: [PATCH 24/50] change pkg path --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 22ce154acf..c26772aef9 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -39,7 +39,7 @@ steps: source .venv/bin/activate pip install --upgrade pip pip install --require-hashes -r library_generation/requirements.txt - pip install library_generation + pip install ./library_generation python -m unittest library_generation/test/integration_tests.py waitFor: ["library-generation-image-build"] From f078192c0920cf51c89cfb378457e62828eb74be Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:50:50 -0400 Subject: [PATCH 25/50] update setuptools --- library_generation/requirements.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library_generation/requirements.in b/library_generation/requirements.in index 73128d324a..c1dcb1b9c7 100644 --- a/library_generation/requirements.in +++ b/library_generation/requirements.in @@ -20,7 +20,7 @@ colorlog==6.8.2 watchdog==4.0.1 nox==2024.4.15 requests==2.32.3 -setuptools==65.5.1 +setuptools==75.1.0 jinja2==3.1.4 requests-mock==1.12.1 # used in owlbot unit tests # typing-extensions is a transitive dependency. If we run `pip-compile ... --generate-hashes` it will produce From 76bbee596a6e21b1af27e531468250e79b0958e7 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 11:59:10 -0400 Subject: [PATCH 26/50] update pkg hash --- library_generation/requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library_generation/requirements.txt b/library_generation/requirements.txt index 994977e77e..3110789782 100644 --- a/library_generation/requirements.txt +++ b/library_generation/requirements.txt @@ -504,9 +504,9 @@ urllib3==2.2.3 \ --hash=sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac \ --hash=sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9 # via requests -virtualenv==20.26.5 \ - --hash=sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6 \ - --hash=sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4 +virtualenv==20.26.6 \ + --hash=sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48 \ + --hash=sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2 # via nox watchdog==4.0.1 \ --hash=sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7 \ From 4c86994e561389760ef7a2b07de9c2d08ecb9eb5 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 12:51:16 -0400 Subject: [PATCH 27/50] install with hash --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index aa87a00917..b14b076f34 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -76,7 +76,7 @@ RUN chmod 755 "${HOME}/.library_generation/gapic-generator-java.jar" RUN python -m pip install --upgrade pip # install main scripts as a python package WORKDIR /src -RUN python -m pip install -r requirements.txt +RUN python -m pip install --require-hashes -r requirements.txt RUN python -m pip install . # Install nvm with node and npm From a9461c8375f25b8044dd6efb730b6780b402299c Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 30 Sep 2024 13:47:30 -0400 Subject: [PATCH 28/50] change test path --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index c26772aef9..5921c563f4 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -40,7 +40,7 @@ steps: pip install --upgrade pip pip install --require-hashes -r library_generation/requirements.txt pip install ./library_generation - python -m unittest library_generation/test/integration_tests.py + python -m unittest ./library_generation/test/integration_tests.py waitFor: ["library-generation-image-build"] options: From fb97542b54c5283353a0731ae9d2f3b93e6f251f Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:01:57 +0000 Subject: [PATCH 29/50] change base image --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index b14b076f34..7262812783 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -30,7 +30,7 @@ RUN cp "/root/.m2/repository/com/google/api/gapic-generator-java/${DOCKER_GAPIC_ "./gapic-generator-java.jar" # build from the root of this repo: -FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/python@sha256:e31986c72ec7f2a4e1c4d7a4e6034b5db537293b01df9192934ec028f762279e +FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/python@sha256:24680ddf8422899b24756d62b31eb5de782fbb42e9c2bb1c70f1f55fcf891721 SHELL [ "/bin/bash", "-c" ] From 06b38bfaaced343238c7cbf2d89151ac3a470f2c Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:05:33 +0000 Subject: [PATCH 30/50] rm bash cmd --- .cloudbuild/library_generation/library_generation.Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 7262812783..5235213aec 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -32,9 +32,6 @@ RUN cp "/root/.m2/repository/com/google/api/gapic-generator-java/${DOCKER_GAPIC_ # build from the root of this repo: FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/python@sha256:24680ddf8422899b24756d62b31eb5de782fbb42e9c2bb1c70f1f55fcf891721 -SHELL [ "/bin/bash", "-c" ] - - ARG OWLBOT_CLI_COMMITTISH=ac84fa5c423a0069bbce3d2d869c9730c8fdf550 ARG PROTOC_VERSION=25.5 ARG GRPC_VERSION=1.68.0 From a8cce8395974c3215a853b311e2039c7ce809548 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:13:46 +0000 Subject: [PATCH 31/50] usa apk --- .cloudbuild/library_generation/library_generation.Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 5235213aec..8ce72af270 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -39,9 +39,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apt-get update && apt-get install -y \ - unzip openjdk-17-jdk rsync maven jq \ - && apt-get clean +RUN apk update && apk add unzip openjdk-17-jdk rsync maven jq # copy source code COPY library_generation /src From daddf5ddcf4213afa1c411c579fd67420f7ecb93 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:18:43 +0000 Subject: [PATCH 32/50] rm jdk --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 8ce72af270..7708a61b58 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -39,7 +39,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apk update && apk add unzip openjdk-17-jdk rsync maven jq +RUN apk update && apk add unzip rsync maven jq # copy source code COPY library_generation /src From b998062596652933796fb9a4a08571f682ae78c9 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:20:26 +0000 Subject: [PATCH 33/50] install curl --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 7708a61b58..9e62a95c0f 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -39,7 +39,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apk update && apk add unzip rsync maven jq +RUN apk update && apk add curl unzip rsync maven jq # copy source code COPY library_generation /src From 1b113da37bd2ff742371a364d56505ef3fb998a6 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:28:42 +0000 Subject: [PATCH 34/50] install bash and npm --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 9e62a95c0f..98c0eb2927 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -39,7 +39,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apk update && apk add curl unzip rsync maven jq +RUN apk update && apk add bash curl jq maven npm rsync unzip # copy source code COPY library_generation /src From 872c24ac6380c9aedea74a8daaea40139fddb0c0 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:33:54 +0000 Subject: [PATCH 35/50] install git --- .cloudbuild/library_generation/library_generation.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 98c0eb2927..20d57aa3fd 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -39,7 +39,7 @@ ENV HOME=/home ENV OS_ARCHITECTURE="linux-x86_64" # install OS tools -RUN apk update && apk add bash curl jq maven npm rsync unzip +RUN apk update && apk add bash curl git jq maven npm rsync unzip # copy source code COPY library_generation /src From ad8529753b913de66d5e4a958d0f2c24a34427e1 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 20:49:01 +0000 Subject: [PATCH 36/50] use stardard lib --- library_generation/test/integration_tests.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index 7166d1b2a4..541b912a99 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -21,8 +21,8 @@ import shutil import subprocess import unittest -from distutils.dir_util import copy_tree -from distutils.file_util import copy_file +from shutil import copytree +from shutil import copyfile from pathlib import Path from library_generation.model.generation_config import GenerationConfig from library_generation.model.generation_config import from_yaml @@ -269,14 +269,14 @@ def __prepare_golden_files( ): for library_name in library_names: if config.is_monorepo(): - copy_tree(f"{repo_dest}/{library_name}", f"{golden_dir}/{library_name}") - copy_tree( + copytree(f"{repo_dest}/{library_name}", f"{golden_dir}/{library_name}") + copytree( f"{repo_dest}/gapic-libraries-bom", f"{golden_dir}/gapic-libraries-bom", ) - copy_file(f"{repo_dest}/pom.xml", golden_dir) + copyfile(f"{repo_dest}/pom.xml", golden_dir) else: - copy_tree(f"{repo_dest}", f"{golden_dir}/{library_name}") + copytree(f"{repo_dest}", f"{golden_dir}/{library_name}") @classmethod def __run_entry_point_in_docker_container( From 27d39048b8d195c493e78d80bf8b9c71d46a6c62 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 21:12:20 +0000 Subject: [PATCH 37/50] install maven --- .../cloudbuild-library-generation-integration-tests.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 5921c563f4..6cbbf8298e 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -35,6 +35,8 @@ steps: args: - -c - | + # copy generator JAR + apt-get update && apt-get install -y maven python -m venv .venv source .venv/bin/activate pip install --upgrade pip From 502b4cc7aa1bbc8d2de5c9dd95d57f47e288ae88 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 21:32:03 +0000 Subject: [PATCH 38/50] change func --- library_generation/test/integration_tests.py | 27 +++++++++----------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index 541b912a99..8c1a6aba18 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -18,11 +18,12 @@ from filecmp import dircmp from git import Repo import os -import shutil import subprocess import unittest from shutil import copytree -from shutil import copyfile +from shutil import rmtree +from shutil import copy +from shutil import move from pathlib import Path from library_generation.model.generation_config import GenerationConfig from library_generation.model.generation_config import from_yaml @@ -187,7 +188,7 @@ def test_entry_point_running_in_container(self): ) print(" PR description comparison succeed.") self.__remove_generated_files() - shutil.rmtree(api_definitions_path) + rmtree(api_definitions_path) @classmethod def __copy_api_definition(cls, committish: str) -> str: @@ -196,13 +197,9 @@ def __copy_api_definition(cls, committish: str) -> str: ) api_temp_dir = tempfile.mkdtemp() print(f"Copying api definition to {api_temp_dir}...") - shutil.copytree( - f"{repo_dest}/google", f"{api_temp_dir}/google", dirs_exist_ok=True - ) - shutil.copytree( - f"{repo_dest}/grafeas", f"{api_temp_dir}/grafeas", dirs_exist_ok=True - ) - shutil.rmtree(repo_dest) + copytree(f"{repo_dest}/google", f"{api_temp_dir}/google", dirs_exist_ok=True) + copytree(f"{repo_dest}/grafeas", f"{api_temp_dir}/grafeas", dirs_exist_ok=True) + rmtree(repo_dest) return api_temp_dir @classmethod @@ -238,17 +235,17 @@ def __download_generator_jar(cls, coordinates_file: str) -> None: destination_jar_path = os.path.join( config_dir, WELL_KNOWN_GENERATOR_JAR_FILENAME ) - shutil.move(source_jar_path, destination_jar_path) + move(source_jar_path, destination_jar_path) @classmethod def __remove_generated_files(cls): - shutil.rmtree(f"{output_dir}", ignore_errors=True) + rmtree(f"{output_dir}", ignore_errors=True) if os.path.isdir(f"{golden_dir}"): - shutil.rmtree(f"{golden_dir}") + rmtree(f"{golden_dir}") @classmethod def __pull_repo_to(cls, dest: Path, repo: str, committish: str) -> str: - shutil.rmtree(dest, ignore_errors=True) + rmtree(dest, ignore_errors=True) repo_url = f"{repo_prefix}/{repo}" print(f"Cloning repository {repo_url}") repo = Repo.clone_from(repo_url, dest) @@ -274,7 +271,7 @@ def __prepare_golden_files( f"{repo_dest}/gapic-libraries-bom", f"{golden_dir}/gapic-libraries-bom", ) - copyfile(f"{repo_dest}/pom.xml", golden_dir) + copy(f"{repo_dest}/pom.xml", golden_dir) else: copytree(f"{repo_dest}", f"{golden_dir}/{library_name}") From 9c363c69cd4b36e31e57082a3996686625476e2f Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 21:49:25 +0000 Subject: [PATCH 39/50] add param --- library_generation/test/integration_tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index 8c1a6aba18..e0e47b4d1d 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -270,6 +270,7 @@ def __prepare_golden_files( copytree( f"{repo_dest}/gapic-libraries-bom", f"{golden_dir}/gapic-libraries-bom", + dirs_exist_ok=True, ) copy(f"{repo_dest}/pom.xml", golden_dir) else: From ad94d5483e580eccb2b6ae6b3667bd654155a154 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 22:07:42 +0000 Subject: [PATCH 40/50] install docker --- .../cloudbuild-library-generation-integration-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 6cbbf8298e..ec4b2905c6 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -36,7 +36,7 @@ steps: - -c - | # copy generator JAR - apt-get update && apt-get install -y maven + apt-get update && apt-get install -y docker-ce docker-ce-cli maven python -m venv .venv source .venv/bin/activate pip install --upgrade pip From 5d20be949921810fdc62a98121bc50a05fab2991 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 22:18:55 +0000 Subject: [PATCH 41/50] install docker using script --- .../cloudbuild-library-generation-integration-tests.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index ec4b2905c6..f7c776de73 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -36,7 +36,10 @@ steps: - -c - | # copy generator JAR - apt-get update && apt-get install -y docker-ce docker-ce-cli maven + apt-get update && apt-get install -y maven + # install docker engine + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh python -m venv .venv source .venv/bin/activate pip install --upgrade pip From fe5dc03d2f0d4d1247abc76ae9e2b2f19eee15ff Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 22:27:43 +0000 Subject: [PATCH 42/50] install docker using script --- .../cloudbuild-library-generation-integration-tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index f7c776de73..2b20333815 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -39,7 +39,8 @@ steps: apt-get update && apt-get install -y maven # install docker engine curl -fsSL https://get.docker.com -o get-docker.sh - sudo sh get-docker.sh + chmod +x get-docker.sh + sh get-docker.sh python -m venv .venv source .venv/bin/activate pip install --upgrade pip From b912f917ddcf41a62988c0486a455b8380a65864 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 22:49:57 +0000 Subject: [PATCH 43/50] debug --- library_generation/generate_repo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library_generation/generate_repo.py b/library_generation/generate_repo.py index cb44fadcbe..7610af2540 100755 --- a/library_generation/generate_repo.py +++ b/library_generation/generate_repo.py @@ -12,7 +12,6 @@ # 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 shutil import library_generation.utils.utilities as util @@ -49,6 +48,7 @@ def generate_from_yaml( gen_config=config, library_config=target_libraries, repo_path=repository_path ) # copy api definition to output folder. + print(f"Copy from {api_definitions_path} to {repo_config.output_folder}") shutil.copytree(api_definitions_path, repo_config.output_folder, dirs_exist_ok=True) for library_path, library in repo_config.get_libraries().items(): From 21cfc2cbc7658d24be1079a89d5935c8cc384d78 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 22:59:28 +0000 Subject: [PATCH 44/50] parallal --- ...-library-generation-integration-tests.yaml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 2b20333815..fa20533f44 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -29,12 +29,10 @@ steps: -o type=image \ . waitFor: ["-"] - - id: run-integration-test - name: python:3.12 - entrypoint: bash - args: - - -c - - | + - id: install-deps + name: bash + script: + | # copy generator JAR apt-get update && apt-get install -y maven # install docker engine @@ -46,8 +44,15 @@ steps: pip install --upgrade pip pip install --require-hashes -r library_generation/requirements.txt pip install ./library_generation + waitFor: ["-"] + - id: run-integration-test + name: python:3.12 + entrypoint: bash + args: + - -c + - | python -m unittest ./library_generation/test/integration_tests.py - waitFor: ["library-generation-image-build"] + waitFor: ["library-generation-image-build", "install-deps"] options: # Builds ran by service accounts we need to either a) specify a logs bucket, From 10fada78c21ba7518da2266e12ccb90eacaca7f4 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 23:01:06 +0000 Subject: [PATCH 45/50] use python --- .../cloudbuild-library-generation-integration-tests.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index fa20533f44..3aed98d50e 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -30,9 +30,11 @@ steps: . waitFor: ["-"] - id: install-deps - name: bash - script: - | + name: python:3.12 + entrypoint: bash + args: + - -c + - | # copy generator JAR apt-get update && apt-get install -y maven # install docker engine From 3a666120a874bb4199414b98f698ee8958fa2ade Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 23:09:18 +0000 Subject: [PATCH 46/50] debug --- library_generation/generate_repo.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library_generation/generate_repo.py b/library_generation/generate_repo.py index 7610af2540..39bcb9e164 100755 --- a/library_generation/generate_repo.py +++ b/library_generation/generate_repo.py @@ -12,6 +12,7 @@ # 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 shutil import library_generation.utils.utilities as util @@ -48,8 +49,10 @@ def generate_from_yaml( gen_config=config, library_config=target_libraries, repo_path=repository_path ) # copy api definition to output folder. + print(os.listdir(api_definitions_path)) print(f"Copy from {api_definitions_path} to {repo_config.output_folder}") shutil.copytree(api_definitions_path, repo_config.output_folder, dirs_exist_ok=True) + print(os.listdir(repo_config.output_folder)) for library_path, library in repo_config.get_libraries().items(): print(f"generating library {library.get_library_name()}") From 87ef217405cccd3e963334cbb54b173b54619936 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 23:10:27 +0000 Subject: [PATCH 47/50] restore step --- ...oudbuild-library-generation-integration-tests.yaml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml index 3aed98d50e..2b20333815 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-integration-tests.yaml @@ -29,7 +29,7 @@ steps: -o type=image \ . waitFor: ["-"] - - id: install-deps + - id: run-integration-test name: python:3.12 entrypoint: bash args: @@ -46,15 +46,8 @@ steps: pip install --upgrade pip pip install --require-hashes -r library_generation/requirements.txt pip install ./library_generation - waitFor: ["-"] - - id: run-integration-test - name: python:3.12 - entrypoint: bash - args: - - -c - - | python -m unittest ./library_generation/test/integration_tests.py - waitFor: ["library-generation-image-build", "install-deps"] + waitFor: ["library-generation-image-build"] options: # Builds ran by service accounts we need to either a) specify a logs bucket, From 5a68c18781459d2771741e612ef6c047f5e421df Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 23:29:08 +0000 Subject: [PATCH 48/50] debug --- library_generation/test/integration_tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index e0e47b4d1d..f395bc57c1 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -196,9 +196,11 @@ def __copy_api_definition(cls, committish: str) -> str: dest=tempfile.mkdtemp(), repo="googleapis", committish=committish ) api_temp_dir = tempfile.mkdtemp() + print(os.listdir(f"{repo_dest}/google")) print(f"Copying api definition to {api_temp_dir}...") copytree(f"{repo_dest}/google", f"{api_temp_dir}/google", dirs_exist_ok=True) copytree(f"{repo_dest}/grafeas", f"{api_temp_dir}/grafeas", dirs_exist_ok=True) + print(os.listdir(f"{api_temp_dir}/google")) rmtree(repo_dest) return api_temp_dir From 322a703cfa31cb5f855071d977e00609f9aaa63f Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Mon, 30 Sep 2024 23:53:12 +0000 Subject: [PATCH 49/50] debug --- library_generation/cli/entry_point.py | 2 ++ library_generation/test/integration_tests.py | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library_generation/cli/entry_point.py b/library_generation/cli/entry_point.py index e5055d8030..caecdd5a30 100644 --- a/library_generation/cli/entry_point.py +++ b/library_generation/cli/entry_point.py @@ -146,6 +146,8 @@ def __generate_repo_and_pr_description_impl( current_generation_config_path = os.path.abspath(current_generation_config_path) repository_path = os.path.abspath(repository_path) api_definitions_path = os.path.abspath(api_definitions_path) + print(f"baseline: {os.listdir(current_generation_config_path)}") + print(f"api-definition: {os.listdir(api_definitions_path)}") if not baseline_generation_config_path: # Execute full generation based on current_generation_config if # baseline_generation_config is not specified. diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index f395bc57c1..e0e47b4d1d 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -196,11 +196,9 @@ def __copy_api_definition(cls, committish: str) -> str: dest=tempfile.mkdtemp(), repo="googleapis", committish=committish ) api_temp_dir = tempfile.mkdtemp() - print(os.listdir(f"{repo_dest}/google")) print(f"Copying api definition to {api_temp_dir}...") copytree(f"{repo_dest}/google", f"{api_temp_dir}/google", dirs_exist_ok=True) copytree(f"{repo_dest}/grafeas", f"{api_temp_dir}/grafeas", dirs_exist_ok=True) - print(os.listdir(f"{api_temp_dir}/google")) rmtree(repo_dest) return api_temp_dir From 42b57748dcb6ef70c5dc510258b31b6b236ecba2 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Tue, 1 Oct 2024 00:13:58 +0000 Subject: [PATCH 50/50] restore IT --- .../workflows/verify_library_generation.yaml | 34 +++++++++++++++++++ library_generation/cli/entry_point.py | 2 -- library_generation/generate_repo.py | 3 -- library_generation/test/integration_tests.py | 13 +++++++ 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/.github/workflows/verify_library_generation.yaml b/.github/workflows/verify_library_generation.yaml index bdb6a005f7..8f7906f795 100644 --- a/.github/workflows/verify_library_generation.yaml +++ b/.github/workflows/verify_library_generation.yaml @@ -38,6 +38,40 @@ jobs: head_repo_url: ${{ github.event.pull_request.head.repo.html_url }} head_repo_name: ${{ github.event.pull_request.head.repo.full_name }} base_repo: ${{ github.repository }} + library-generation-integration-tests: + runs-on: ubuntu-22.04 + needs: should-run-library-generation-tests + if: needs.should-run-library-generation-tests.outputs.should_run == 'true' + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.11 + - name: install pyenv + shell: bash + run: | + set -ex + curl https://pyenv.run | bash + # setup environment + export PYENV_ROOT="$HOME/.pyenv" + export PATH="$PYENV_ROOT/bin:$PATH" + echo "PYENV_ROOT=${PYENV_ROOT}" >> $GITHUB_ENV + echo "PATH=${PATH}" >> $GITHUB_ENV + + set +ex + - name: install python dependencies + shell: bash + run: | + set -ex + pushd library_generation + pip install --require-hashes -r requirements.txt + pip install . + popd + - name: Run integration tests + shell: bash + run: | + set -x + python -m unittest library_generation/test/integration_tests.py library-generation-unit-tests: runs-on: ubuntu-22.04 needs: should-run-library-generation-tests diff --git a/library_generation/cli/entry_point.py b/library_generation/cli/entry_point.py index caecdd5a30..e5055d8030 100644 --- a/library_generation/cli/entry_point.py +++ b/library_generation/cli/entry_point.py @@ -146,8 +146,6 @@ def __generate_repo_and_pr_description_impl( current_generation_config_path = os.path.abspath(current_generation_config_path) repository_path = os.path.abspath(repository_path) api_definitions_path = os.path.abspath(api_definitions_path) - print(f"baseline: {os.listdir(current_generation_config_path)}") - print(f"api-definition: {os.listdir(api_definitions_path)}") if not baseline_generation_config_path: # Execute full generation based on current_generation_config if # baseline_generation_config is not specified. diff --git a/library_generation/generate_repo.py b/library_generation/generate_repo.py index 39bcb9e164..cb44fadcbe 100755 --- a/library_generation/generate_repo.py +++ b/library_generation/generate_repo.py @@ -49,10 +49,7 @@ def generate_from_yaml( gen_config=config, library_config=target_libraries, repo_path=repository_path ) # copy api definition to output folder. - print(os.listdir(api_definitions_path)) - print(f"Copy from {api_definitions_path} to {repo_config.output_folder}") shutil.copytree(api_definitions_path, repo_config.output_folder, dirs_exist_ok=True) - print(os.listdir(repo_config.output_folder)) for library_path, library in repo_config.get_libraries().items(): print(f"generating library {library.get_library_name()}") diff --git a/library_generation/test/integration_tests.py b/library_generation/test/integration_tests.py index e0e47b4d1d..10ffdad6ed 100644 --- a/library_generation/test/integration_tests.py +++ b/library_generation/test/integration_tests.py @@ -35,6 +35,9 @@ golden_dir = os.path.join(config_dir, "golden") generator_jar_coordinates_file = os.path.join(config_dir, "test_generator_coordinates") repo_root_dir = os.path.join(script_dir, "..", "..") +build_file = os.path.join( + repo_root_dir, ".cloudbuild", "library_generation", "library_generation.Dockerfile" +) image_tag = "test-image:latest" repo_prefix = "https://github.com/googleapis" output_dir = shell_call("get_output_folder") @@ -61,6 +64,7 @@ class IntegrationTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.__download_generator_jar(coordinates_file=generator_jar_coordinates_file) + cls.__build_image(docker_file=build_file, cwd=repo_root_dir) @classmethod def setUp(cls) -> None: @@ -202,6 +206,15 @@ def __copy_api_definition(cls, committish: str) -> str: rmtree(repo_dest) return api_temp_dir + @classmethod + def __build_image(cls, docker_file: str, cwd: str): + # we build the docker image without removing intermediate containers, so + # we can re-test more quickly + subprocess.check_call( + ["docker", "build", "-f", docker_file, "-t", image_tag, "."], + cwd=cwd, + ) + @classmethod def __download_generator_jar(cls, coordinates_file: str) -> None: """