Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 2.5.0 · 2026-07-29 13:13 UTC

googleapis / python-vision

This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-vision

Apache-2.0★ 158 estrellas⑂ 80 forksdesde dic 2019archivadoVer en GitHub ↗

googleapis/python-vision tiene un índice de salud de 19 sobre 100, lo que lo sitúa en la banda Crítico. Su puntuación más alta es Sustainability & Governance (86/100) y la más baja, Engineering Quality (21/100). El repositorio está archivado, por lo que no cabe esperar más mantenimiento.

19
global / 100
Crítico

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

19
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 52 se calibra a 53 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

Google APIsOrganización
6641 seguidores900 repositorios públicosdesde ene 2016

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

25En riesgo · 21% del índice global
Cómo se puntúa
0/36Recencia de push — último push hace 1001 días
0/36Cadencia de commits — 0/52 semanas con commits
0/18Volumen de commits — 0 commits en el último año
0/10OpenSSF Scorecard: Maintained — project is archived
Datos de entrada utilizados
commits_last_year0
human_commit_share0,27
days_since_last_push1001
active_weeks_last_year0
Cómo se puntúa
27/27Publica versiones — 40 versiones publicadas
0/36Recencia de las versiones — última versión hace 1013 días
27/27Cadencia de publicación — una versión cada ~41,6 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count40
latest_release_tagv3.4.5
releases_from_tagsno
days_since_latest_release1013
mean_days_between_releases41,6
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

70Bueno · 17% del índice global
Cómo se puntúa
35.6/60Estrellas — 158 estrellas
15.8/25Forks — 80 forks
4.7/15Observadores — 8 observadores
Datos de entrada utilizados
forks80
stars158
watchers8
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributing
has_issue_templateno
has_code_of_conduct
readme_badge_services
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

86Excelente · 23% del índice global
Cómo se puntúa
43.2/54Factor bus — la mitad de los commits recae en 4 contribuyente(s)
18/22.5Distribución de commits — el principal contribuyente firma el 20% de los commits
13.5/13.5Amplitud de contribuyentes — 40 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 10 contributing companies or organizations
Datos de entrada utilizados
bus_factor4
contributors_sampled40
top_contributor_share0,198
Cómo se puntúa
42/42Resolución de issues — 100% de issues cerradas
23/30Aceptación de PR — 303/395 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
merged_prs303
open_issues0
closed_issues162
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio1
closed_unmerged_prs92
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
25/25Alcance del propietario — 6641 seguidores de googleapis
25/25Trayectoria — 900 repos públicos, cuenta de ~10 años
Datos de entrada utilizados
followers6641
owner_typeOrganization
is_verified
owner_logingoogleapis
public_repos900
account_age_days3843

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

21En riesgo · 19% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
0/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 30 merged PRs checked by a CI test -- score normalized to 0
Datos de entrada utilizados
has_cino
has_testsno
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

50Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

66Bueno · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
6/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 30 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 10 contributing companies or organizations
0/10Dangerous-Workflow — sin datos
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project is archived
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate6,6
Excluidos de la puntuación (sin datos o no aplicable): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

22En riesgo · 4% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 27 de 27 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
0/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
8/8Mantenimiento automatizado — 1 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_testsno
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,01
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.

Datos clave

158estrellas de GitHub
40contribuidores
0commits en los últimos 12 meses
1001días desde el último push
40versiones publicadas
4factor bus
0issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

  • Language breakdown unavailable
  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

Historial de estrellas y forks 0 ★ / 80 ⇿
0Estrellas
80Forks
40Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

0204060808042020-022022-062024-11
Mayor 3Menor 13Parche 24

Cada punto abarca 5 días.

OpenSSF Scorecard 6.6 / 10
6.6agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-29 13:13 UTC

10Binary-Artifactsno binaries found in the repo
8Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 30 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 10 contributing companies or organizations
n/dDangerous-Workflowno workflows found
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject is archived
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 11445,
      "has_wiki": true,
      "homepage": null,
      "languages": {},
      "pushed_at": "2023-10-31T15:43:31Z",
      "created_at": "2019-12-10T00:10:28Z",
      "owner_type": "Organization",
      "updated_at": "2026-06-13T14:15:48Z",
      "description": "This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-vision",
      "is_archived": true,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": null,
      "significant_languages": []
    },
    "owner": {
      "blog": "https://googleapis.github.io",
      "name": "Google APIs",
      "type": "Organization",
      "login": "googleapis",
      "company": null,
      "location": null,
      "followers": 6641,
      "avatar_url": "https://avatars.githubusercontent.com/u/16785467?v=4",
      "created_at": "2016-01-19T20:40:50Z",
      "is_verified": null,
      "public_repos": 900,
      "account_age_days": 3843
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.4.5",
          "kind": "patch",
          "published_at": "2023-10-19T20:57:06Z"
        },
        {
          "tag": "v3.4.4",
          "kind": "patch",
          "published_at": "2023-07-05T15:10:23Z"
        },
        {
          "tag": "v3.4.3",
          "kind": "patch",
          "published_at": "2023-06-20T15:23:40Z"
        },
        {
          "tag": "v3.4.2",
          "kind": "patch",
          "published_at": "2023-05-31T20:38:05Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2023-03-27T15:48:42Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2023-02-28T23:42:33Z"
        },
        {
          "tag": "v3.3.1",
          "kind": "patch",
          "published_at": "2023-01-23T15:36:28Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2023-01-10T17:51:36Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2022-12-15T22:28:37Z"
        },
        {
          "tag": "v3.1.4",
          "kind": "patch",
          "published_at": "2022-10-10T16:06:18Z"
        },
        {
          "tag": "v3.1.3",
          "kind": "patch",
          "published_at": "2022-09-29T20:03:24Z"
        },
        {
          "tag": "v3.1.2",
          "kind": "patch",
          "published_at": "2022-09-15T14:10:38Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2022-08-15T14:26:23Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2022-08-09T11:47:14Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2022-07-18T16:04:44Z"
        },
        {
          "tag": "v2.8.0",
          "kind": "minor",
          "published_at": "2022-07-14T21:51:50Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2022-06-09T16:25:09Z"
        },
        {
          "tag": "v2.7.3",
          "kind": "patch",
          "published_at": "2022-06-06T22:15:44Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2022-04-04T16:55:04Z"
        },
        {
          "tag": "v2.7.2",
          "kind": "patch",
          "published_at": "2022-03-28T17:51:51Z"
        },
        {
          "tag": "v2.7.1",
          "kind": "patch",
          "published_at": "2022-03-07T16:37:05Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2022-02-28T23:13:25Z"
        },
        {
          "tag": "v2.6.3",
          "kind": "patch",
          "published_at": "2021-12-13T10:32:59Z"
        },
        {
          "tag": "v2.6.2",
          "kind": "patch",
          "published_at": "2021-11-02T20:03:06Z"
        },
        {
          "tag": "v2.6.1",
          "kind": "patch",
          "published_at": "2021-10-26T15:49:33Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2021-10-25T11:22:05Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2021-10-12T17:18:22Z"
        },
        {
          "tag": "v2.4.4",
          "kind": "patch",
          "published_at": "2021-09-30T15:48:09Z"
        },
        {
          "tag": "v2.4.3",
          "kind": "patch",
          "published_at": "2021-09-27T14:21:12Z"
        },
        {
          "tag": "v2.4.2",
          "kind": "patch",
          "published_at": "2021-07-29T15:32:48Z"
        },
        {
          "tag": "v2.4.1",
          "kind": "patch",
          "published_at": "2021-07-21T22:33:09Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2021-07-12T23:33:16Z"
        },
        {
          "tag": "v2.3.2",
          "kind": "patch",
          "published_at": "2021-06-16T13:17:59Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2021-04-13T22:02:46Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2021-03-31T23:17:49Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2021-02-11T21:32:35Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2021-01-26T16:37:55Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2020-09-29T20:01:55Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2020-02-28T15:01:44Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2020-02-04T19:21:24Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "b252088ada11a671d8265deeec9f1ebb7f54418e",
          "body": "… files (#562)",
          "is_bot": false,
          "headline": "build: update README to indicate that source has moved and delete all…",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2023-10-31T15:43:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a0aef4290128c90007d3ab44ad7a28ecd5cc8c5",
          "body": "* chore: Update gapic-generator-python to v1.11.7\r\n\r\nPiperOrigin-RevId: 573230664\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/93beed334607e70709cc60e6145be65fdc8ec386\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/f4a4edaa8057639fcf6adf9179872280d1a8f651\r\nCop\n[…]\nt/README.md\r\n\r\n* update index.rst; remove unused files\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore: Update gapic-generator-python to v1.11.9 (#559)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-10-20T14:00:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3fe412f01708b52c05323e7145bc1794146fdca",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.5 (#553)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-10-19T20:56:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "329f4d9f084bc0ee1c1c4c332625da81b31f0bac",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/d52e638b37b091054c869bfa6f5a9fedaba9e0dd\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:4f9b3b106ad0beafc2c8a415e3f62c1a0cc23cabea115dbe841b848f581cfe99\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: rename rst files to avoid conflict with service names (#561)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-10-18T20:56:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1abc15552c620ba00b390fafec7cee7b5476598e",
          "body": "…558)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/0c7b0333f44b2b7075447f43a121a12d15a7b76a\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:08e34975760f002746b1d8c86fdc90660be45945ee6d9db914d1508acdf9a547\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: [autoapprove] Update `black` and `isort` to latest versions (#…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-10-09T14:52:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f26d286f50020c44800435175eecdd3f9c2a7acb",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/dede53ff326079b457cfb1aae5bbdc82cbb51dc3\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:fac304457974bb530cc5396abd4ab25d26a469cd3bc97cbfb18c8d4324c584eb\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: [autoapprove] bump cryptography from 41.0.3 to 41.0.4 (#556)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-10-07T01:50:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "747296fd25f53bc7bfd64f7b10825431516c0b9f",
          "body": "* docs: Minor formatting\r\nchore: Update gapic-generator-python to v1.11.5\r\nbuild: Update rules_python to 0.24.0\r\n\r\nPiperOrigin-RevId: 563436317\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/42fd37b18d706f6f51f52f209973b3b2c28f509a\r\n\r\nSource-Link: https://github.com/googleapis/googl\n[…]\nOwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "docs: Minor formatting (#552)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-09-13T22:37:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "771c38b67da404b1014f0ec5b65e98469942eca8",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/352b9d4c068ce7c05908172af128b294073bf53c\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3e3800bb100af5d7f9e810d48212b37812c1856d20ffeafb99ebe66461b61fc7\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build: [autoapprove] bump cryptography from 41.0.2 to 41.0.3 (#550)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-08-02T15:28:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "077b72a5b96d517bffaa7f1216fc9672aed77e68",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/0ddbff8012e47cde4462fe3f9feab01fbc4cdfd6\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:bced5ca77c4dda0fd2f5d845d4035fc3c5d3d6b81f245246a36aee114970082b\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: [autoapprove] Pin flake8 version (#548)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-08-01T20:16:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd2acd2cd424b66f518cc49df929b48f5b8ecc8e",
          "body": "…#547)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/395d53adeeacfca00b73abf197f65f3c17c8f1e9\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:6c1cbc75c74b8bdd71dada2fa1677e9d6d78a889e9a70ee75b93d1d0543f96e1\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): [autoapprove] bump certifi from 2022.12.7 to 2023.7.22 (…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-07-26T11:03:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b59c48dde9bc8bc5bac557565cf0758db791574b",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/eaef28efd179e6eeb9f4e9bf697530d074a6f3b9\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f8ca7655fa8a449cadcabcbce4054f593dcbae7aeeab34aa3fcc8b5cf7a93c9e\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): [autoapprove] bump pygments from 2.13.0 to 2.15.0 (#545)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-07-21T13:33:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e5c91704e4f2e176d560a02d2a7fbf0de72dd75",
          "body": "…543)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/d6103f4a3540ba60f633a9e25c37ec5fe7e6286d\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:39f0f3f2be02ef036e297e376fe3b6256775576da8a6ccb1d5eeb80f4c8bf8fb\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): [autoapprove] bump cryptography from 41.0.0 to 41.0.2 (#…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-07-17T15:55:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08ee6d9322a77f2ca928dfb0f67744a0da629c17",
          "body": "* chore: Update gapic-generator-python to v1.11.2\r\n\r\nPiperOrigin-RevId: 546510849\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/736073ad9a9763a170eceaaa54519bcc0ea55a5e\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/deb64e8ec19d141e31089fe932b3a997ad541c4d\r\nCop\n[…]\nOwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Update gapic-generator-python to v1.11.2 (#541)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-07-10T13:47:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b190534ab18a82f85f6a97e3f7f4194f5daf6c7b",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.4 (#540)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-07-05T15:09:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69e507f84a21b988a5fb44628652ec9d7811917f",
          "body": "* fix: Add async context manager return types\r\n\r\nchore: Mock return_value should not populate oneof message fields\r\n\r\nchore: Support snippet generation for services that only support REST transport\r\n\r\nchore: Update gapic-generator-python to v1.11.0\r\nPiperOrigin-RevId: 545430278\r\n\r\nSource-Link: https\n[…]\nOwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix: Add async context manager return types (#539)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-07-04T17:15:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0fef00a7f046ab374fb4c924b11c02bb7983d93",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/cb960373d12d20f8dc38beee2bf884d49627165e\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2d816f26f728ac8b24248741e7d4c461c09764ef9f7be3684d557c9632e46dbd\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: store artifacts in placer (#538)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-06-29T16:28:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b0ff8aa0357b2d28a08655def773c935e00cf73",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/909573ce9da2819eeb835909c795d29aea5c724e\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ddf4551385d566771dc713090feb7b4c1164fb8a698fe52bbe7670b24236565b\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: remove pinned Sphinx version [autoapprove] (#537)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-06-27T15:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ed30260420a240700d10b32b4cb611d01ed31c7",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.3 (#536)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-06-20T15:23:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b56231035e353d3a3db208d1eff35eb6aae37bbc",
          "body": "Removing ambiguous message.",
          "is_bot": false,
          "headline": "docs: Update README.rst (#535)",
          "author_name": "Ivan Cheung",
          "author_login": "ivanmkc",
          "committed_at": "2023-06-19T16:40:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "856e977f69574a6e3d420d571fafb1f6e8728133",
          "body": "…p/templates/python_library/.kokoro (#534)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/d0f51a0c2a9a6bcca86911eabea9e484baadf64b\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:240b5bcc2bafd450912d2da2be15e62bc6de2cf839823ae4bf94d4f392b451dc\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump cryptography from 39.0.1 to 41.0.0 in /synthtool/gc…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-06-03T22:09:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfa14cc69a62c16f02659257e05424ac6fbd1c5c",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.2 (#532)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-05-31T17:41:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6692feb6c0f6e41a4da5ec4a9e9ac3ff7505e181",
          "body": "* feat: remove workaround\r\n\r\n* regenerate client with workarounds removed\r\n\r\n---------\r\n\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "fix: remove workarounds in image_annotator (#529)",
          "author_name": "Yu-Han Liu",
          "author_login": "dizcology",
          "committed_at": "2023-05-25T17:11:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9572733c62ebee1784eb351eb08c155ce01347c",
          "body": "…mplates/python_library/.kokoro (#531)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/30bd01b4ab78bf1b2a425816e15b3e7e090993dd\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:9bc5fa3b62b091f60614c08a7fb4fd1d3e1678e326f34dd66ce1eefb5dc3267b\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump requests from 2.28.1 to 2.31.0 in /synthtool/gcp/te…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-05-25T16:24:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0b58985bfc9fe859186a87e25335ebb4ea35c39",
          "body": "* chore(deps): bump requests from 2.28.1 to 2.31.0 in /.kokoro\r\n\r\nBumps [requests](https://github.com/psf/requests) from 2.28.1 to 2.31.0.\r\n- [Release notes](https://github.com/psf/requests/releases)\r\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\r\n- [Commits](https://github.com\n[…]\nd-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump requests from 2.28.1 to 2.31.0 in /.kokoro (#530)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2023-05-23T13:53:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8566a421b6f461e7c5203ca0f2efd45a7bf19901",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.1 (#528)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-03-27T15:48:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d589fe1e7e8106aae896cea1ee0737cdcddbc0fd",
          "body": "* docs: Fix formatting of request arg in docstring\r\n\r\nchore: Update gapic-generator-python to v1.9.1\r\nPiperOrigin-RevId: 518604533\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/8a085aeddfa010af5bcef090827aac5255383d7e\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/com\n[…]\nOwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "docs: Fix formatting of request arg in docstring (#527)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-03-23T13:40:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43bb1cd699f0b86df9c50ac205e6541b0b5b6a90",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/92006bb3cdc84677aa93c7f5235424ec2b157146\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:2e247c7bf5154df7f98cce087a20ca7605e236340c7d6d1a14447e5c06791bd6\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Update nox in .kokoro/requirements.in [autoapprove] (#526)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-03-16T12:23:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d41630a8ae060ad97f1c446a7ac45210fad36981",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.4.0 (#522)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-02-28T23:42:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faf6d6b7d564fb18c21438d58a8122d085db8908",
          "body": "…ic enums (#520)\n\n* feat: enable \"rest\" transport in Python for services supporting numeric enums\r\n\r\nPiperOrigin-RevId: 508143576\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/7a702a989db3b413f39ff8994ca53fb38b6928c2\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/comm\n[…]\no-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "feat: enable \"rest\" transport in Python for services supporting numer…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-02-28T12:10:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b80982334e5a1201eadd6effd9084e7ce6f349a1",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/5f2a6089f73abf06238fe4310f6a14d6f6d1eed3\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:8555f0e37e6261408f792bfd6635102d2da5ad73f8f09bcb24f25e6afb5fac97\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): upgrade gcp-releasetool in .kokoro [autoapprove] (#521)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-02-28T10:33:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc9b034ea44eae28e0239f13a5b4a51355cfe0c2",
          "body": "…p/templates/python_library/.kokoro (#519)\n\nSource-Link: https://togithub.com/googleapis/synthtool/commit/bb171351c3946d3c3c32e60f5f18cee8c464ec51\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f62c53736eccb0c4934a3ea9316e0d57696bb49c1a7c86c726e9bb8a2f87dadf",
          "is_bot": true,
          "headline": "build(deps): bump cryptography from 38.0.3 to 39.0.1 in /synthtool/gc…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-02-08T15:24:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0942f54d9f9739fae85bd268d148be4f0888d44c",
          "body": "* chore: Update gapic-generator-python to v1.8.4\r\n\r\nPiperOrigin-RevId: 507808936\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/64cf8492b21778ce62c66ecee81b468a293bfd4c\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/53c48cac153d3b37f3d2c2dec4830cfd91ec4153\r\nCopy\n[…]\nOwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Update gapic-generator-python to v1.8.4 (#517)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-02-07T20:09:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "826baff94e3039ed809ea49d3b6f2cf40f9f064c",
          "body": "Source-Link: https://togithub.com/googleapis/synthtool/commit/26c7505b2f76981ec1707b851e1595c8c06e90fc\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f946c75373c2b0040e8e318c5e85d0cf46bc6e61d0a01f3ef94d8de974ac6790",
          "is_bot": true,
          "headline": "chore: fix prerelease_deps nox session [autoapprove] (#516)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-01-30T16:52:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "908188720025883986da4a29c79e6fec5cb787db",
          "body": "* chore: Update gapic-generator-python to v1.8.2\r\n\r\nPiperOrigin-RevId: 504289125\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/38a48a44a44279e9cf9f2f864b588958a2d87491\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/b2dc22663dbe47a972c8d8c2f8a4df013dafdcbc\r\nCopy\n[…]\nUpdates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Update gapic-generator-python to v1.8.2 (#515)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-01-25T16:53:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6e2cc3a7a41c6b30fe59ed1e1b42db67cee9e17",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.3.1 (#514)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-01-23T15:36:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e9cde4697b5da630347c67cffa37c2561a75f88",
          "body": "* docs: Add documentation for enums\r\n\r\nfix: Add context manager return types\r\n\r\nchore: Update gapic-generator-python to v1.8.1\r\nPiperOrigin-RevId: 503210727\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/a391fd1dac18dfdfa00c18c8404f2c3a6ff8e98e\r\n\r\nSource-Link: https://github.com/goo\n[…]\nUpdates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "docs: Add documentation for enums (#513)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-01-23T15:13:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f7d983c3bfc8c986471b054d1cffcce9e35db21d",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.3.0 (#512)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2023-01-10T17:51:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b3d758ad574744dfb5a89d715c679c09290e074",
          "body": "* feat: Add support for python 3.11\r\n\r\nchore: Update gapic-generator-python to v1.8.0\r\nPiperOrigin-RevId: 500768693\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/190b612e3d0ff8f025875a669e5d68a1446d43c1\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/7bf29a414b9\n[…]\nUpdates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "feat: Add support for python 3.11 (#511)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-01-10T04:26:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0de13a7c8e2a2bb95d0564483696a2c609aa00bd",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/7197a001ffb6d8ce7b0b9b11c280f0c536c1033a\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:c43f1d918bcf817d337aa29ff833439494a158a0831508fda4ec75dc4c0d0320\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): add support for python 3.11 (#510)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2023-01-06T17:10:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed9548afdca70b95b5f87b825c770c4569441aa6",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.2.0 (#509)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-12-15T22:28:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e5a37b788ccc10688b6f23a46040880827b2b3e",
          "body": "* chore: update to gapic-generator-python 1.5.0\r\n\r\nfeat: add support for `google.cloud.<api>.__version__`\r\nPiperOrigin-RevId: 484665853\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/8eb249a19db926c2fbc4ecf1dc09c0e521a88b22\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-ge\n[…]\nbots/blob/main/packages/owl-bot/README.md\r\n\r\n* add gapic_version.py\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "fix(deps): Require google-api-core >=1.34.0, >=2.11.0 (#498)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-12-15T22:08:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "244f9e7c433ffe7ffa3aa84e2562809362f47f32",
          "body": "…cp/templates/python_library/.kokoro (#507)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/b4fe62efb5114b6738ad4b13d6f654f2bf4b7cc0\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump certifi from 2022.9.24 to 2022.12.7 in /synthtool/g…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-12-09T16:36:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41ec39805c12c0e965bef35e6fe4ab2a316358c1",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/25083af347468dd5f90f69627420f7d452b6c50e\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e6cbd61f1838d9ff6a31436dfc13717f372a7482a82fc1863ca954ec47bff8c8\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore(python): update release script dependencies (#504)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-11-19T16:14:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a94a9fc15f491fc5a8f8ad7cd61c74628bf89a",
          "body": "* chore: Remove snippets from repository\r\n\r\nSnippets moved to: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/vision/snippets\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: Remove snippets from repository (#505)",
          "author_name": "Drew Brown",
          "author_login": "arbrown",
          "committed_at": "2022-11-17T20:34:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e2ddeb7b76885449579275a71608f737d67985a",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency pillow to v9.3.0 (#499)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-10-31T15:04:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd760eacbffd15a983ce64a8486fa18d55126f55",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency pytest to v7.2.0 (#497)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-10-26T10:48:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90609ead2526b149bd37f71350a769231248c2c4",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency google-cloud-vision to v3.1.4 (#496)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-10-10T18:17:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fe6b3dd9dd585f9f4941f482e4e1ab4ad22faad",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.1.4 (#495)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-10-10T16:06:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "391673a5828745df271085383d97137a507d80de",
          "body": "* fix(deps): allow protobuf 3.19.5\r\n\r\n* explicitly exclude protobuf 4.21.0",
          "is_bot": false,
          "headline": "fix(deps): allow protobuf 3.19.5 (#494)",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2022-10-07T20:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6351ebac9697b40648a6dc74d4e465dc6f09cd54",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency backoff to v2.2.1 (#493)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-10-06T13:35:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe5c8f37af8fae27f4bb00329e0a2ce6ddac5204",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency google-cloud-vision to v3.1.3 (#492)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-10-03T17:05:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85f418fb40ced5af3571bedb8e02f961f4f9abeb",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.1.3 (#491)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-09-29T20:03:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8569102adfc140ec3da48d0c9410ab81212e27c4",
          "body": "* chore: exclude requirements.txt file from renovate-bot\r\n\r\nSource-Link: https://github.com/googleapis/synthtool/commit/f58d3135a2fab20e225d98741dbc06d57459b816\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:7a40313731a7cb1454eef6b33d3446ebb121836738dc3ab3d2d3ded52\n[…]\n\n* update constraints files\r\n\r\n* fix(deps): require protobuf 3.20.2\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "fix(deps): require protobuf >= 3.20.2 (#490)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-29T19:13:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "00b94a05d1c969d2ed96ab903d182b1a0cf9947a",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency google-cloud-vision to v3.1.2 (#488)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-09-16T15:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8406353bd18793ea401284eded91f1cd3c9ea9c6",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.1.2 (#486)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-09-15T14:10:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd9c2b995b3fecd975247f5d1ac5b4d7c31eac96",
          "body": "* docs: update comments for image annotator OCR models\r\n\r\nPiperOrigin-RevId: 474070246\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/346e2f2a106ed0ff8863b11a3b1ec32cd40b9cf1\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/50b34515fa89525989021be4b6989d49059d8d26\n[…]\nUpdates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "docs: update comments for image annotator OCR models (#485)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-13T21:44:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "deff7fc817ff72288b83f13dab745c1394041b4d",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/50db768f450a50d7c1fd62513c113c9bb96fd434\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e09366bdf0fd9c8976592988390b24d53583dd9f002d476934da43725adbb978",
          "is_bot": true,
          "headline": "chore: detect samples tests in nested directories (#484)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-13T16:30:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2688475d425a7fb01e5828643606868995c02d2c",
          "body": "- [ ] Regenerate this pull request now.\n\nPiperOrigin-RevId: 473833416\n\nSource-Link: https://github.com/googleapis/googleapis/commit/565a5508869557a3228b871101e4e4ebd8f93d11\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/1ee1a06c6de3ca8b843572c1fde0548f84236989\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMWVlMWEwNmM2ZGUzY2E4Yjg0MzU3MmMxZmRlMDU0OGY4NDIzNjk4OSJ9",
          "is_bot": true,
          "headline": "chore: use gapic generator python 1.4.1 (#483)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-13T14:42:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf1c851164a043a5512dbab76ec839529fec42fd",
          "body": "- [ ] Regenerate this pull request now.\n\nPiperOrigin-RevId: 472772457\n\nSource-Link: https://github.com/googleapis/googleapis/commit/855b74d203deeb0f7a0215f9454cdde62a1f9b86\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/b64b1e7da3e138f15ca361552ef0545e54891b4f\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjY0YjFlN2RhM2UxMzhmMTVjYTM2MTU1MmVmMDU0NWU1NDg5MWI0ZiJ9",
          "is_bot": true,
          "headline": "chore: use gapic-generator-python 1.3.1 (#482)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-08T13:58:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "248bcba365c0ca0ecea232024812ec7610e99583",
          "body": "- [ ] Regenerate this pull request now.\n\nPiperOrigin-RevId: 472561635\n\nSource-Link: https://github.com/googleapis/googleapis/commit/332ecf599f8e747d8d1213b77ae7db26eff12814\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/4313d682880fd9d7247291164d4e9d3d5bd9f177\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDMxM2Q2ODI4ODBmZDlkNzI0NzI5MTE2NGQ0ZTlkM2Q1YmQ5ZjE3NyJ9",
          "is_bot": true,
          "headline": "chore: Bump gapic-generator-python version to 1.3.0 (#481)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-07T14:18:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ef22a299b9c91eea6c7808d0f3b2a41b693dbea",
          "body": "* chore(deps): update all dependencies\r\n\r\n* revert\r\n\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "chore(deps): update dependency pytest to v7.1.3 (#480)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-09-06T15:50:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eca0bb1e0ae406f5e4203a48fbec310e74e37839",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/56da63e80c384a871356d1ea6640802017f213b4\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:993a058718e84a82fda04c3177e58f0a43281a996c7c395e0a56ccc4d6d210d7",
          "is_bot": true,
          "headline": "chore(python): exclude setup.py in renovate config (#479)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-02T18:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07c79b6d8ca65e40b52c3851dc8a04cc11937dae",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/703554a14c7479542335b62fa69279f93a9e38ec\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:94961fdc5c9ca6d13530a6a414a49d2f607203168215d074cdb0a1df9ec31c0b",
          "is_bot": true,
          "headline": "chore(python): update .kokoro/requirements.txt (#476)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-02T00:38:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14e4044becdd6ae3193caa6bd223b29105101bde",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/fdba3ed145bdb2f4f3eff434d4284b1d03b80d34\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:1f0dbd02745fb7cf255563dab5968345989308544e52b7f460deadd5e78e63b0",
          "is_bot": true,
          "headline": "ci(python): fix path to requirements.txt in release script (#475)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-09-01T19:20:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "526f977b62f84c7709c9c2d5927269ea475bbc34",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/c4dd5953003d13b239f872d329c3146586bb417e\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ce3c1686bc81145c81dd269bd12c4025c6b275b22d14641358827334fddb1d72\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): exclude `grpcio==1.49.0rc1` in tests (#474)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-08-29T19:28:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c23919e07cf4bbae68d7a12bddc9d092a198948b",
          "body": "…[autoapprove]  (#473)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/69fabaee9eca28af7ecaa02c86895e606fbbebd6\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:562802bfac02e012a6ac34eda282f81d06e77326b82a32d7bbb1369ff552b387\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: remove 'pip install' statements from python_library templates …",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-08-24T18:06:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "177f373f3d83caf9c344f6a1b551734f30f5a942",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency google-cloud-vision to v3.1.1 (#471)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-08-16T14:26:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c48d773d44070f6d2a48dd0349bd30eba575808c",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.1.1 (#469)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-08-15T14:26:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36eaa25a6de65d4ec57f6c15475102659478656b",
          "body": "fix(deps): require proto-plus >= 1.22.0",
          "is_bot": false,
          "headline": "fix(deps): allow protobuf < 5.0.0 (#468)",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2022-08-11T18:52:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f702e9bf222b9c621864063b07431e13fb18fef",
          "body": "…#467)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/8e55b327bae44b6640c7ab4be91df85fc4d6fe8a\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:c6c965a4bf40c19011b11f87dbc801a66d3a23fbc6704102be064ef31c51f1c3\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update actions/setup-python action to v4 [autoapprove] (…",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-08-10T00:37:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8cfb859969ddcf07293a22a8e26b2803282376e",
          "body": "* chore(deps): update all dependencies\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n* revert\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "chore(deps): update all dependencies (#466)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-08-09T15:13:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14f1cf45a8051df947b5c0fa6f22293ac7ff05a6",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore(main): release 3.1.0 (#465)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-08-09T11:47:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39ce28fba2eca6c5e48187932566f3bd320109e8",
          "body": "* chore(deps): update all dependencies\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n* revert\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "chore(deps): update all dependencies (#463)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-08-05T20:01:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0886a2d444c2ec9067eb36286d258f569b02954b",
          "body": "* feat: Add TextDetectionParams.advanced_ocr_options\r\n\r\nAdvanced OCR options allow users to customize behavior for a specific OCR engine\r\nversion.\r\n\r\nPiperOrigin-RevId: 465402148\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/ad64930eaf928b006c55914d8319b84670eeaf67\r\n\r\nSource-Link: \n[…]\nUpdates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "feat: Add TextDetectionParams.advanced_ocr_options (#464)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-08-05T19:26:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0915348188826f2361414aac391f4cce42853fd2",
          "body": "* chore(deps): update all dependencies\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n* revert\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "chore(deps): update all dependencies (#461)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-08-02T14:20:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c936ef23a468ef82facdc469fe7e8eefc1ae5449",
          "body": "* chore(bazel): update protobuf to v3.21.3\r\n\r\nchore(bazel): update gax-java to 2.18.4\r\n\r\nPiperOrigin-RevId: 463115700\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/52130a9c3c289e6bc4ab1784bdde6081abdf3dd9\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/6a4d9d9bb\n[…]\noogleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore(bazel): update protobuf to v3.21.3 (#460)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-07-26T02:17:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ded319023aeb8d9894dd0b54c8f9f0f4f1738fe6",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/1b9ad7694e44ddb4d9844df55ff7af77b51a4435\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:9db98b055a7f8bd82351238ccaacfd3cda58cdf73012ab58b8da146368330021\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): fix prerelease session [autoapprove] (#459)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-07-26T01:53:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09e969fa30514d8a6bb95b576c1a2ae2c1e11d54",
          "body": ":robot: I have created a release *beep* *boop*\n---\n\n\n## [3.0.0](https://github.com/googleapis/python-vision/compare/v2.8.0...v3.0.0) (2022-07-18)\n\n\n### ⚠ BREAKING CHANGES\n\n* **v1p3beta1:** Product search related messages and enums changed in an incompatible way\n* **v1p3beta1:** NormalizedBoundingPol\n[…]\nd7469e263a2e005f54c9))\n\n---\nThis PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).",
          "is_bot": true,
          "headline": "chore(main): release 3.0.0 (#456)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-07-18T16:04:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "807684dab49ea521fd46d7469e263a2e005f54c9",
          "body": "- [ ] Regenerate this pull request now.\r\n\r\nPiperOrigin-RevId: 459858846\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/21ef8485aa4129268baa07c686fd6b60ba8f6f22\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/26af3a384be4077c5f0100521a263fd9bd8fc7e7\r\nCopy-Tag: eyJ\n[…]\ns://github.com/googleapis/googleapis-gen/commit/2957b3d78fc24354b30896907de135413b8e7a49\r\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjk1N2IzZDc4ZmMyNDM1NGIzMDg5NjkwN2RlMTM1NDEzYjhlN2E0OSJ9",
          "is_bot": true,
          "headline": "fix!: removed fields from SafeSearchAnnotation message (#356)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-07-18T13:28:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "61a699408777db720c5b0f152980643cfae8740e",
          "body": "* chore(deps): update all dependencies\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n* revert\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "chore(deps): update all dependencies (#444)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-07-16T13:39:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "474d597f794006d9acb64d289bb1da3971cf5634",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 2.8.0 (#454)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-07-14T21:51:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d8fe5f5bf4d61b759766e5bf11a50937710e9a5",
          "body": "fix(deps): require google-api-core>=1.32.0,>=2.8.0",
          "is_bot": false,
          "headline": "feat: add audience parameter (#455)",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2022-07-14T21:32:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "401bd73afd6c2e5e2c776249fe647858384c0433",
          "body": "* chore(python): drop python 3.6\r\n\r\nSource-Link: https://github.com/googleapis/synthtool/commit/4f89b13af10d086458f9b379e56a614f9d6dab7b\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c\r\n\r\n* add api_des\n[…]\nkages/owl-bot/README.md\r\n\r\n* exclude templated readme\r\n\r\n* fix typo\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "fix: require python 3.7+ (#452)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-07-10T09:57:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e30e6ec476941557c843a33fbfda9fd3e231dd2",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/d2871d98e1e767d4ad49a557ff979236d64361a1\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:b2dc5f80edcf5d4486c39068c9fa11f7f851d9568eea4dcba130f994ea9b5e97\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): add missing import for prerelease testing (#450)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-06-13T09:57:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9045f60813af4736d8cf1d5370fb1e86751ee6fd",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/050953d60f71b4ed4be563e032f03c192c50332f\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:65e656411895bff71cffcae97246966460160028f253c2e45b7a25d805a5b142\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: add prerelease nox session (#449)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-06-12T14:28:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0eb78f060d8aa2b09d2700e2361712f03b464316",
          "body": "Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(main): release 2.7.3 (#440)",
          "author_name": "release-please[bot]",
          "author_login": "release-please[bot]",
          "committed_at": "2022-06-06T22:15:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17dd21b32570655c68e6a578af07701bf7e3207a",
          "body": null,
          "is_bot": false,
          "headline": "chore: test minimum dependencies in python 3.7 (#443)",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2022-06-06T15:19:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3bd56de3138830a931413d065ccc850b2e90a06",
          "body": "Co-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": false,
          "headline": "docs: fix changelog header to consistent size (#439)",
          "author_name": "Dan Lee",
          "author_login": "dandhlee",
          "committed_at": "2022-06-03T00:40:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "927e8331c0825fbabb382942b3e0c1efd8bd7c11",
          "body": null,
          "is_bot": false,
          "headline": "fix(deps): require protobuf <4.0.0dev (#438)",
          "author_name": "Anthonios Partheniou",
          "author_login": "parthea",
          "committed_at": "2022-06-02T02:31:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efdf70b5fc392955aea93597669df3a5cfd4a04f",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency pillow to v9.1.1 (#359)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-05-18T13:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d68694bd155e2530bcafcb281502de903fc2dc6",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/453a5d9c9a55d1969240a37d36cec626d20a9024\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:81ed5ecdfc7cac5b699ba4537376f3563f6f04122c4ec9e735d3b3dc1d43dd32",
          "is_bot": true,
          "headline": "chore(python): auto approve template changes (#355)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-05-05T23:08:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e21539a60a763cd8c01ed8ceeb45bce5a223f486",
          "body": "…(#354)\n\nSource-Link: https://github.com/googleapis/synthtool/commit/6b4d5a6407d740beb4158b302194a62a4108a8a6\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f792ee1320e03eda2d13a5281a2989f7ed8a9e50b73ef6da97fac7e1e850b149\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: [autoapprove] update readme_gen.py to include autoescape True …",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-05-05T17:01:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ff58f9105885752bcaad5290ce2d91688377336",
          "body": "* chore: use gapic-generator-python 0.65.2\r\n\r\nPiperOrigin-RevId: 444333013\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/f91b6cf82e929280f6562f6110957c654bd9e2e6\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/16eb36095c294e712c74a1bf23550817b42174e5\r\nCopy-Tag: \n[…]\noogleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore: use gapic-generator-python 0.65.2 (#352)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-04-28T12:08:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54cbfd1b714f8b582ba654aad2d1877436ec3f75",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency backoff to v2.0.1 (#353)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-04-27T17:32:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7198756c4c85a392f35f85a67f9b16723b6ef01b",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency backoff to v2 (#351)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-04-26T18:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b166907c9d29cb0dbb3cc339c7f7d0366270b12a",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency pytest to v7.1.2 (#350)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-04-25T15:10:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e30a0aec4bd52cbdd17fa3cca67d969581983ba4",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/f15cc72fb401b4861cedebb10af74afe428fb1f8\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:bc5eed3804aec2f05fad42aacf973821d9500c174015341f721a984a0825b6fd",
          "is_bot": true,
          "headline": "chore(python): use ubuntu 22.04 in docs image (#349)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-04-21T16:20:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f7f24d325c536636daae9d5bf33e3b162b46529",
          "body": "Source-Link: https://github.com/googleapis/synthtool/commit/1b71c10e20de7ed3f97f692f99a0e3399b67049f\r\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:00c9d764fd1cd56265f12a5ef4b99a0c9e87cf261018099141e2ca5158890416\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(python): add nox session to sort python imports (#347)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-04-21T00:59:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f33c1666fd3bd2801ec0c4f5c006ae6a1b301a9",
          "body": "* chore: use gapic-generator-python 0.65.1\r\n\r\nPiperOrigin-RevId: 441524537\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/2a273915b3f70fe86c9d2a75470a0b83e48d0abf\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/ab6756a48c89b5bcb9fb73443cb8e55d574f4643\r\nCopy-Tag: \n[…]\noogleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\nCo-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>\r\nCo-authored-by: Anthonios Partheniou <partheniou@google.com>",
          "is_bot": true,
          "headline": "chore: use gapic-generator-python 0.65.1 (#346)",
          "author_name": "gcf-owl-bot[bot]",
          "author_login": "gcf-owl-bot[bot]",
          "committed_at": "2022-04-14T21:41:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64c80d7489962b164de7c0eb348fcb2fa86ced39",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): update dependency google-cloud-storage to v2.3.0 (#345)",
          "author_name": "WhiteSource Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2022-04-13T23:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 40,
      "commits_last_year": 0,
      "latest_release_at": "2023-10-19T20:57:06Z",
      "latest_release_tag": "v3.4.5",
      "releases_from_tags": false,
      "days_since_last_push": 1001,
      "active_weeks_last_year": 0,
      "days_since_latest_release": 1013,
      "mean_days_between_releases": 41.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 80,
      "stars": 158,
      "watchers": 8,
      "fork_history": {
        "days": [
          {
            "date": "2020-02-03",
            "count": 1
          },
          {
            "date": "2020-03-25",
            "count": 1
          },
          {
            "date": "2020-03-28",
            "count": 1
          },
          {
            "date": "2020-04-11",
            "count": 1
          },
          {
            "date": "2020-05-05",
            "count": 1
          },
          {
            "date": "2020-05-19",
            "count": 1
          },
          {
            "date": "2020-09-14",
            "count": 1
          },
          {
            "date": "2020-09-17",
            "count": 1
          },
          {
            "date": "2020-10-01",
            "count": 2
          },
          {
            "date": "2020-10-02",
            "count": 1
          },
          {
            "date": "2020-10-03",
            "count": 1
          },
          {
            "date": "2020-10-08",
            "count": 1
          },
          {
            "date": "2020-10-11",
            "count": 1
          },
          {
            "date": "2020-10-17",
            "count": 1
          },
          {
            "date": "2020-10-20",
            "count": 1
          },
          {
            "date": "2020-10-25",
            "count": 1
          },
          {
            "date": "2020-10-28",
            "count": 1
          },
          {
            "date": "2020-11-08",
            "count": 1
          },
          {
            "date": "2020-11-09",
            "count": 1
          },
          {
            "date": "2020-12-04",
            "count": 1
          },
          {
            "date": "2020-12-07",
            "count": 1
          },
          {
            "date": "2020-12-10",
            "count": 2
          },
          {
            "date": "2020-12-30",
            "count": 1
          },
          {
            "date": "2021-01-19",
            "count": 1
          },
          {
            "date": "2021-02-08",
            "count": 1
          },
          {
            "date": "2021-02-16",
            "count": 1
          },
          {
            "date": "2021-02-18",
            "count": 2
          },
          {
            "date": "2021-02-19",
            "count": 1
          },
          {
            "date": "2021-02-23",
            "count": 1
          },
          {
            "date": "2021-02-28",
            "count": 1
          },
          {
            "date": "2021-03-02",
            "count": 1
          },
          {
            "date": "2021-03-09",
            "count": 1
          },
          {
            "date": "2021-03-18",
            "count": 1
          },
          {
            "date": "2021-03-24",
            "count": 1
          },
          {
            "date": "2021-04-01",
            "count": 1
          },
          {
            "date": "2021-04-06",
            "count": 1
          },
          {
            "date": "2021-04-09",
            "count": 1
          },
          {
            "date": "2021-04-14",
            "count": 1
          },
          {
            "date": "2021-05-09",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-06-08",
            "count": 1
          },
          {
            "date": "2021-06-09",
            "count": 1
          },
          {
            "date": "2021-06-21",
            "count": 2
          },
          {
            "date": "2021-06-29",
            "count": 1
          },
          {
            "date": "2021-07-07",
            "count": 1
          },
          {
            "date": "2021-08-17",
            "count": 2
          },
          {
            "date": "2021-08-26",
            "count": 1
          },
          {
            "date": "2021-09-23",
            "count": 1
          },
          {
            "date": "2021-09-30",
            "count": 1
          },
          {
            "date": "2021-10-01",
            "count": 1
          },
          {
            "date": "2021-10-06",
            "count": 1
          },
          {
            "date": "2021-10-09",
            "count": 1
          },
          {
            "date": "2021-10-26",
            "count": 1
          },
          {
            "date": "2021-11-08",
            "count": 2
          },
          {
            "date": "2021-12-13",
            "count": 1
          },
          {
            "date": "2022-01-01",
            "count": 1
          },
          {
            "date": "2022-01-29",
            "count": 2
          },
          {
            "date": "2022-02-10",
            "count": 1
          },
          {
            "date": "2022-02-26",
            "count": 1
          },
          {
            "date": "2022-03-08",
            "count": 1
          },
          {
            "date": "2022-03-11",
            "count": 2
          },
          {
            "date": "2022-03-25",
            "count": 1
          },
          {
            "date": "2022-05-11",
            "count": 2
          },
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2022-07-13",
            "count": 1
          },
          {
            "date": "2022-09-07",
            "count": 1
          },
          {
            "date": "2022-09-23",
            "count": 1
          },
          {
            "date": "2022-10-14",
            "count": 1
          },
          {
            "date": "2022-11-04",
            "count": 1
          },
          {
            "date": "2024-09-11",
            "count": 1
          },
          {
            "date": "2024-11-11",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 80,
        "total_forks": 80
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": null,
      "source_files_sampled": 0,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 303,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 162,
        "closed_unmerged_prs": 92
      },
      "bus_factor": 4,
      "bot_contributors": 4,
      "top_contributors": [
        {
          "type": "User",
          "login": "renovate-bot",
          "commits": 77,
          "avatar_url": "https://avatars.githubusercontent.com/u/25180681?v=4"
        },
        {
          "type": "User",
          "login": "dhermes",
          "commits": 65,
          "avatar_url": "https://avatars.githubusercontent.com/u/520669?v=4"
        },
        {
          "type": "User",
          "login": "yoshi-automation",
          "commits": 50,
          "avatar_url": "https://avatars.githubusercontent.com/u/44816363?v=4"
        },
        {
          "type": "User",
          "login": "daspecster",
          "commits": 43,
          "avatar_url": "https://avatars.githubusercontent.com/u/192456?v=4"
        },
        {
          "type": "User",
          "login": "busunkim96",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/8822365?v=4"
        },
        {
          "type": "User",
          "login": "lukesneeringer",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/4346?v=4"
        },
        {
          "type": "User",
          "login": "crwilcox",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/638797?v=4"
        },
        {
          "type": "User",
          "login": "parthea",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/5184014?v=4"
        },
        {
          "type": "User",
          "login": "tseaver",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/242750?v=4"
        },
        {
          "type": "User",
          "login": "brendanlundy",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/8686241?v=4"
        }
      ],
      "contributors_sampled": 40,
      "top_contributor_share": 0.198
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": false,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 8,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 10 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project is archived",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "b252088ada11a671d8265deeec9f1ebb7f54418e",
        "ran_at": "2026-07-29T13:13:16Z",
        "aggregate_score": 6.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": "2023-10-31T15:43:30Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/googleapis/python-vision",
    "host": "github.com",
    "name": "python-vision",
    "owner": "googleapis"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "critical",
      "name": "Overall health",
      "note": "The weighted overall 52 is calibrated to 53 on the published index scale (record calibration 2026-08-02). Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 19.",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 52,
            "calibrated": 53,
            "calibration": "2026-08-02"
          }
        },
        {
          "code": "abandonment_overall_adjustment",
          "params": {
            "cap": 19,
            "pct": 40
          }
        }
      ],
      "value": 19,
      "inputs": {
        "security": 66,
        "vitality": 25,
        "community": 70,
        "governance": 86,
        "calibration": "2026-08-02",
        "engineering": 21,
        "ai_readiness": 22,
        "abandonment_cap": 19,
        "abandonment_state": "declared",
        "weighted_overall_raw": 52,
        "abandonment_multiplier": 40,
        "weighted_overall_before_abandonment": 53,
        "overall_after_abandonment_multiplier": 21
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 25,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "critical",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "commits_last_year": 0,
              "human_commit_share": 0.27,
              "days_since_last_push": 1001,
              "active_weeks_last_year": 0
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1001 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1001
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "0/52 weeks with commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "0 commits in the last year",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "moderate",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "releases_count": 40,
              "latest_release_tag": "v3.4.5",
              "releases_from_tags": false,
              "days_since_latest_release": 1013,
              "mean_days_between_releases": 41.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "40 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 40
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1013 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1013
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~41.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 41.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "weak",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "cap": 19,
              "state": "declared",
              "guards": [],
              "signals": [],
              "red_flag": true,
              "multiplier_pct": 40,
              "declared_reason": "archived",
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "the repository is archived on GitHub",
                "points": 40,
                "status": "partial",
                "details": [
                  {
                    "code": "abandonment_archived",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 70,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "forks": 80,
              "stars": 158,
              "watchers": 8,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "158 stars",
                "points": 35.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 158
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "80 forks",
                "points": 15.8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 80
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "8 watchers",
                "points": 4.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "excellent",
        "name": "Sustainability & Governance",
        "value": 86,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "bus_factor": 4,
              "contributors_sampled": 40,
              "top_contributor_share": 0.198
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "4 contributor(s) cover half of all commits",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 20% of commits",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 20
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "40 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 40
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "merged_prs": 303,
              "open_issues": 0,
              "closed_issues": 162,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 92,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 42,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "303/395 decided PRs merged",
                "points": 23,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 303,
                      "decided": 395
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "excellent",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "followers": 6641,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "googleapis",
              "public_repos": 900,
              "account_age_days": 3843
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "6,641 followers of googleapis",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 6641,
                      "login": "googleapis"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "900 public repos, account ~10 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 900
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 21,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "has_ci": false,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 66,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 6.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 30 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 22,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "27 of 27 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 27,
                      "sampled": 27
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 9,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.01
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [],
      "labels": [],
      "scores": {
        "library": 2
      },
      "primary": null,
      "evidence": [
        {
          "tier": "description",
          "label": "library",
          "source": "description:library",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "none",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": false
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [
    "Language breakdown unavailable",
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T13:13:46.089702Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/googleapis/python-vision.svg",
  "full_name": "googleapis/python-vision",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.5.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.