Registro público
Informe de salud del softwareesquema 0.15.0 · métricas 1.13.0 · 2026-07-19 11:00 UTC

rero / rero-ils

Integrated Library System flavour of Invenio by RERO+.

PythonAGPL-3.0★ 87 estrellas⑂ 30 forksdesde ago 2017Ver en GitHub ↗

rero/rero-ils tiene un índice de salud de 75 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (94/100) y la más baja, Security (55/100). Se actualizó por última vez hace 2 días. 3 personas concentran la mayor parte del trabajo reciente.

75
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

75
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas 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.

Titularidad

RERO+Organización
12 seguidores41 repositorios públicosdesde jul 2009

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?

94Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 2 días
32.5/36Cadencia de commits — 47/52 semanas con commits
18/18Volumen de commits — 142 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year142
human_commit_share
days_since_last_push2
active_weeks_last_year47
Cómo se puntúa
27/27Publica versiones — 91 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
19.8/27Cadencia de publicación — una versión cada ~68,2 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count91
latest_release_tagv1.29.0
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases68,2
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?

59Moderado · 18% del índice global
Cómo se puntúa
31.4/60Estrellas — 87 estrellas
12.2/25Forks — 30 forks
5/15Observadores — 9 observadores
Datos de entrada utilizados
forks30
stars87
watchers9
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (AGPL-3.0)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
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?

77Bueno · 24% del índice global
Cómo se puntúa
36/54Factor bus — la mitad de los commits recae en 3 contribuyente(s)
17.2/22.5Distribución de commits — el principal contribuyente firma el 24% de los commits
13.5/13.5Amplitud de contribuyentes — 25 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Datos de entrada utilizados
bus_factor3
contributors_sampled25
top_contributor_share0,236
Cómo se puntúa
45.1/46.8Resolución de issues — 96% de issues cerradas
33.7/38.3Aceptación de PR — 2373/2695 PR decididos fusionados
12/15OpenSSF Scorecard: Code-Review — Found 24/27 approved changesets -- score normalized to 8
Datos de entrada utilizados
merged_prs2373
open_issues51
closed_issues1406
issue_closed_ratio0,965
closed_unmerged_prs322
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
8/25Alcance del propietario — 12 seguidores de rero
23.8/25Trayectoria — 41 repos públicos, cuenta de ~17 años
Datos de entrada utilizados
followers12
owner_typeOrganization
is_verified
owner_loginrero
public_repos41
account_age_days6212

Calidad de Ingeniería

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

84Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 25 out of 25 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — http://ils.test.rero.ch
10/10Descripción del repositorio
10/10Topics — 5 topics
10/10Wiki
Datos de entrada utilizados
topicsils, library-management-system, invenio, reroplus, rero
has_wiki
homepagehttp://ils.test.rero.ch
has_readme
has_docs_dir
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?

55Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
3/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 25 out of 25 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
6/7.5Code-Review — Found 24/27 approved changesets -- score normalized to 8
2.5/2.5Contributors — project has 4 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 28 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5,5
Excluidos de la puntuación (sin datos o no aplicable): packaging, signed_releases. 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? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

62Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
0/40Historial de commits legible — sin datos
Datos de entrada utilizados
has_llms_txtno
legible_history_share
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes6710
Excluidos de la puntuación (sin datos o no aplicable): Historial de commits legible. Los pesos restantes se han renormalizado.
Cómo se puntúa
18/18Arranque con un solo comando — doc/Makefile, doc/circulation/Makefile
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — Dockerfile, lockfile
0/10Práctica demostrada con agentes — sin datos
5/8Mantenimiento automatizado — automatización de dependencias configurada, no observada en los commits muestreados
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json, uv.lock
has_dockerfile
typed_languageno
bootstrap_filesdoc/Makefile, doc/circulation/Makefile
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share
toolchain_manifests
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): Práctica demostrada con agentes. Los pesos restantes se han renormalizado.
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
54.7/55Tamaños de archivo manejables — 6/1134 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes181.482
source_files_sampled1134
oversized_source_files6
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

87estrellas de GitHub
25contribuidores
142commits en los últimos 12 meses
2días desde el último push
91versiones publicadas
3factor bus
51issues abiertas
PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Could not fetch pypi package 'rero-ils' from its registry

Más detalle

OpenSSF Scorecard 5.5 / 10
5.5agregado

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-19 11:00 UTC

10Binary-Artifactsno binaries found in the repo
4Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests25 out of 25 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
8Code-ReviewFound 24/27 approved changesets -- score normalized to 8
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities28 existing vulnerabilities detected
Dependencias directas 63
RegistroPaqueteRestricción de versiónManifiesto
PyPIinvenio-oaiharvester>=1.0.0a4pyproject.toml
PyPIinvenio-circulation>=4.0.0pyproject.toml
PyPIinvenio-search>=3.0.0pyproject.toml
PyPIinvenio-app>=3.0.0pyproject.toml
PyPIinvenio-base>=2.0.0pyproject.toml
PyPIinvenio-celery>=2.0.2pyproject.toml
PyPIinvenio-config>=1.0.3pyproject.toml
PyPIinvenio-i18n>=3.4.2pyproject.toml
PyPIinvenio-db>=2.0.0pyproject.toml
PyPIinvenio-admin>=1.6.0pyproject.toml
PyPIinvenio-assets>=4.0.0pyproject.toml
PyPIinvenio-formatter>=3.0.0pyproject.toml
PyPIinvenio-logging>=4.0.0pyproject.toml
PyPIinvenio-mail>=2.0.0pyproject.toml
PyPIinvenio-rest>=3.0.0pyproject.toml
PyPIinvenio-theme>=4.0.0pyproject.toml
PyPIinvenio-access>=4.0.0pyproject.toml
PyPIinvenio-accounts>=6.0.0pyproject.toml
PyPIinvenio-oauth2server>=3.0.0pyproject.toml
PyPIinvenio-oauthclient>=5.0.0pyproject.toml
PyPIinvenio-indexer>=4.0.0pyproject.toml
PyPIinvenio-jsonschemas>=2.0.0pyproject.toml
PyPIinvenio-oaiserver>=4.0.0pyproject.toml
PyPIinvenio-pidstore>=3.0.0pyproject.toml
PyPIinvenio-records-rest>=3.0.0pyproject.toml
PyPIinvenio-records-ui>=2.0.0pyproject.toml
PyPIinvenio-records>=4.0.0pyproject.toml
PyPIinvenio-search-ui>=4.0.0pyproject.toml
PyPIinvenio-records-permissions>=0.13.0pyproject.toml
PyPIpython-dotenv>=0.13.0pyproject.toml
PyPIsentry-sdkpyproject.toml
PyPIdojson>=1.4.0pyproject.toml
PyPIrero-invenio-base>=1.1.1pyproject.toml
PyPIrero-invenio-files>=1.0.0pyproject.toml
PyPIrero-invenio-thumbnails>=2.0.0pyproject.toml
PyPIflask-wiki>=1.0.0pyproject.toml
PyPIPyYAML>=5.3.1pyproject.toml
PyPIdateparser>=1.1.1pyproject.toml
PyPIisbnlib>=3.9.1pyproject.toml
PyPIrequests>=2.23.0pyproject.toml
PyPIpolibpyproject.toml
PyPIxmltodictpyproject.toml
PyPIciso8601pyproject.toml
PyPIlazyreader>=1.0.0pyproject.toml
PyPIjinja2>2.11.2pyproject.toml
PyPIjsonmerge>=1.8.0pyproject.toml
PyPInum2words>=0.5.10pyproject.toml
PyPIiso639>=0.1.4pyproject.toml
PyPIdcxml>=0.1.2pyproject.toml
PyPIDeepDiff>=5.5.0pyproject.toml
PyPIjsonresolverpyproject.toml
PyPIclick>=8.3.3pyproject.toml
PyPIurllib3<2.0.0pyproject.toml
PyPIdnspython>=2.4.2pyproject.toml
PyPIbabel>=2.16.0pyproject.toml
PyPIlevenshtein>=0.26.0pyproject.toml
PyPIunidecode>=1.3.8pyproject.toml
PyPIpoethepoetpyproject.toml
PyPIsqlalchemy-celery-beat>=0.8.3pyproject.toml
PyPIbootstrap-flask>=2.5.0pyproject.toml
PyPIflask-admin>=1.6.1pyproject.toml
PyPIinvenio-sip2>=0.6.25pyproject.toml
PyPImarkdown-captions>=2.1.2pyproject.toml
Todas las dependencias 519

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 63 paquetes directos y 456 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
PyPIbabel2.18.0directa
PyPIbootstrap-flask2.5.0directa
PyPIciso86012.3.3directa
PyPIclick8.4.2directa
PyPIdateparser1.2.0directa
PyPIdcxml0.1.3directa
PyPIdeepdiff9.1.0directa
PyPIdnspython2.8.0directa
PyPIdojson1.7.1directa
PyPIflask-admin1.6.1directa
PyPIflask-wiki2.0.0directa
PyPIinvenio-access7.0.0directa
PyPIinvenio-accounts9.0.0directa
PyPIinvenio-admin1.6.0directa
PyPIinvenio-app3.1.1directa
PyPIinvenio-assets4.2.3directa
PyPIinvenio-base2.4.0directa
PyPIinvenio-celery2.2.0directa
PyPIinvenio-circulation4.0.0directa
PyPIinvenio-config1.1.0directa
PyPIinvenio-db2.5.1directa
PyPIinvenio-formatter5.0.1directa
PyPIinvenio-i18n4.0.1directa
PyPIinvenio-indexer6.0.0directa
PyPIinvenio-jsonschemas2.1.0directa
PyPIinvenio-logging4.2.0directa
PyPIinvenio-mail2.3.0directa
PyPIinvenio-oaiharvester1.0.0a4directa
PyPIinvenio-oaiserver6.0.0directa
PyPIinvenio-oauth2server6.0.0directa
PyPIinvenio-oauthclient9.1.0directa
PyPIinvenio-pidstore4.0.0directa
PyPIinvenio-records6.0.0directa
PyPIinvenio-records-permissions4.0.0directa
PyPIinvenio-records-rest6.0.1directa
PyPIinvenio-records-ui5.0.0directa
PyPIinvenio-rest4.0.0directa
PyPIinvenio-search3.1.2directa
PyPIinvenio-search-ui5.0.1directa
PyPIinvenio-sip21.0.0directa
PyPIinvenio-theme5.0.2directa
PyPIisbnlib3.10.14directa
PyPIiso6390.1.4directa
PyPIjinja23.1.6directa
PyPIjsonmerge1.9.2directa
PyPIjsonresolver0.5.1directa
PyPIlazyreader1.0.1directa
PyPIlevenshtein0.27.3directa
PyPImarkdown-captions2.1.2directa
PyPInum2words0.5.14directa
PyPIpoethepoet0.48.0directa
PyPIpolib1.2.0directa
PyPIpython-dotenv1.2.2directa
PyPIpyyaml6.0.3directa
PyPIrequests2.34.2directa
PyPIrero-invenio-base1.1.2directa
PyPIrero-invenio-files2.0.1directa
PyPIrero-invenio-thumbnails2.0.1directa
PyPIsentry-sdk2.65.0directa
PyPIsqlalchemy-celery-beat0.8.4directa
PyPIunidecode1.4.0directa
PyPIurllib31.26.20directa
PyPIxmltodict0.12.0directa
npm@cypress/listr-verbose-renderer0.4.1indirecta
npm@cypress/request2.88.10indirecta
npm@cypress/xvfb1.2.4indirecta
npm@samverschueren/stream-to-observable0.3.1indirecta
npm@types/sinonjs__fake-timers6.0.2indirecta
npm@types/sizzle2.3.2indirecta
npmansi-escapes3.2.0indirecta
npmansi-regex2.1.1indirecta
npmansi-regex3.0.0indirecta
npmansi-regex5.0.1indirecta
npmansi-styles2.2.1indirecta
npmansi-styles3.2.1indirecta
npmansi-styles4.3.0indirecta
npmany-observable0.3.0indirecta
npmarch2.2.0indirecta
npmasn10.2.6indirecta
npmassert-plus1.0.0indirecta
npmasync3.2.0indirecta
npmasynckit0.4.0indirecta
npmat-least-node1.0.0indirecta
npmaws-sign20.7.0indirecta
npmaws41.11.0indirecta
npmbalanced-match1.0.0indirecta
npmbcrypt-pbkdf1.0.2indirecta
npmblob-util2.0.2indirecta
npmbluebird3.7.2indirecta
npmbrace-expansion1.1.11indirecta
npmbuffer-crc320.2.13indirecta
npmbuffer-from1.1.1indirecta
npmcachedir2.3.0indirecta
npmcaseless0.12.0indirecta
npmchalk1.1.3indirecta
npmchalk2.4.2indirecta
npmchalk4.1.0indirecta
npmcheck-more-types2.24.0indirecta
npmci-info2.0.0indirecta
npmcli-cursor1.0.2indirecta
npmcli-cursor2.1.0indirecta
npmcli-table30.6.0indirecta
npmcli-truncate0.2.1indirecta
npmcode-point-at1.1.0indirecta
npmcolor-convert1.9.3indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.3indirecta
npmcolor-name1.1.4indirecta
npmcolors1.4.0indirecta
npmcombined-stream1.0.8indirecta
npmcommander5.1.0indirecta
npmcommon-tags1.8.0indirecta
npmconcat-map0.0.1indirecta
npmconcat-stream1.6.2indirecta
npmcore-util-is1.0.2indirecta
npmcross-spawn7.0.3indirecta
npmcypress6.1.0indirecta
npmdashdash1.14.1indirecta
npmdate-fns1.30.1indirecta
npmdebug2.6.9indirecta
npmdebug3.2.7indirecta
npmdebug4.3.1indirecta
npmdelayed-stream1.0.0indirecta
npmecc-jsbn0.1.2indirecta
npmelegant-spinner1.0.1indirecta
npmemoji-regex8.0.0indirecta
npmend-of-stream1.4.4indirecta
npmescape-string-regexp1.0.5indirecta
npmeventemitter26.4.3indirecta
npmexeca4.1.0indirecta
npmexecutable4.1.1indirecta
npmexit-hook1.1.1indirecta
npmextend3.0.2indirecta
npmextract-zip1.7.0indirecta
npmextsprintf1.3.0indirecta
npmfd-slicer1.1.0indirecta
npmfigures1.7.0indirecta
npmfigures2.0.0indirecta
npmforever-agent0.6.1indirecta
npmform-data2.3.3indirecta
npmfs-extra9.0.1indirecta
npmfs.realpath1.0.0indirecta
npmget-stream5.2.0indirecta
npmgetos3.2.1indirecta
npmgetpass0.1.7indirecta
npmglob7.1.6indirecta
npmglobal-dirs2.0.1indirecta
npmgraceful-fs4.2.4indirecta
npmhas-ansi2.0.0indirecta
npmhas-flag3.0.0indirecta
npmhas-flag4.0.0indirecta
npmhttp-signature1.3.6indirecta
npmhuman-signals1.1.1indirecta
npmindent-string3.2.0indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmini1.3.8indirecta
npmis-ci2.0.0indirecta
npmis-fullwidth-code-point1.0.0indirecta
npmis-fullwidth-code-point2.0.0indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-installed-globally0.3.2indirecta
npmis-observable1.1.0indirecta
npmis-path-inside3.0.2indirecta
npmis-promise2.2.2indirecta
npmis-stream1.1.0indirecta
npmis-stream2.0.0indirecta
npmis-typedarray1.0.0indirecta
npmisarray1.0.0indirecta
npmisexe2.0.0indirecta
npmisstream0.1.2indirecta
npmjsbn0.1.1indirecta
npmjson-schema0.4.0indirecta
npmjson-stringify-safe5.0.1indirecta
npmjsonfile6.1.0indirecta
npmjsprim2.0.2indirecta
npmlazy-ass1.6.0indirecta
npmlistr0.14.3indirecta
npmlistr-silent-renderer1.1.1indirecta
npmlistr-update-renderer0.5.0indirecta
npmlistr-verbose-renderer0.5.0indirecta
npmlodash4.17.21indirecta
npmlodash.once4.1.1indirecta
npmlog-symbols1.0.2indirecta
npmlog-symbols4.0.0indirecta
npmlog-update2.3.0indirecta
npmmerge-stream2.0.0indirecta
npmmime-db1.51.0indirecta
npmmime-types2.1.34indirecta
npmmimic-fn1.2.0indirecta
npmmimic-fn2.1.0indirecta
npmminimatch3.0.4indirecta
npmminimist1.2.5indirecta
npmmkdirp0.5.5indirecta
npmmoment2.29.1indirecta
npmms2.0.0indirecta
npmms2.1.2indirecta
npmms2.1.3indirecta
npmnpm-run-path4.0.1indirecta
npmnumber-is-nan1.0.1indirecta
npmobject-assign4.1.1indirecta
npmonce1.4.0indirecta
npmonetime1.1.0indirecta
npmonetime2.0.1indirecta
npmonetime5.1.2indirecta
npmospath1.2.2indirecta
npmp-map2.1.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpend1.2.0indirecta
npmperformance-now2.1.0indirecta
npmpify2.3.0indirecta
npmpretty-bytes5.4.1indirecta
npmprocess-nextick-args2.0.1indirecta
npmpsl1.8.0indirecta
npmpump3.0.0indirecta
npmpunycode1.3.2indirecta
npmpunycode2.1.1indirecta
npmqs6.5.3indirecta
npmquerystring0.2.0indirecta
npmramda0.26.1indirecta
npmreadable-stream2.3.7indirecta
npmrequest-progress3.0.0indirecta
npmrestore-cursor1.0.1indirecta
npmrestore-cursor2.0.0indirecta
npmrimraf3.0.2indirecta
npmrxjs6.6.3indirecta
npmsafe-buffer5.1.2indirecta
npmsafe-buffer5.2.1indirecta
npmsafer-buffer2.1.2indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsignal-exit3.0.3indirecta
npmslice-ansi0.0.4indirecta
npmsshpk1.17.0indirecta
npmstring-width1.0.2indirecta
npmstring-width2.1.1indirecta
npmstring-width4.2.0indirecta
npmstring_decoder1.1.1indirecta
npmstrip-ansi3.0.1indirecta
npmstrip-ansi4.0.0indirecta
npmstrip-ansi6.0.0indirecta
npmstrip-final-newline2.0.0indirecta
npmsupports-color2.0.0indirecta
npmsupports-color5.5.0indirecta
npmsupports-color7.2.0indirecta
npmsymbol-observable1.2.0indirecta
npmthrottleit1.0.0indirecta
npmtmp0.2.1indirecta
npmtough-cookie2.5.0indirecta
npmtslib1.14.1indirecta
npmtunnel-agent0.6.0indirecta
npmtweetnacl0.14.5indirecta
npmtypedarray0.0.6indirecta
npmuniversalify1.0.0indirecta
npmuniversalify2.0.0indirecta
npmuntildify4.0.0indirecta
npmurl0.11.0indirecta
npmutil-deprecate1.0.2indirecta
npmuuid8.3.2indirecta
npmverror1.10.0indirecta
npmwhich2.0.2indirecta
npmwrap-ansi3.0.1indirecta
npmwrappy1.0.2indirecta
npmyauzl2.10.0indirecta
PyPIalembic1.18.5indirecta
PyPIamqp5.3.1indirecta
PyPIannotated-doc0.0.4indirecta
PyPIannotated-types0.7.0indirecta
PyPIarrow1.4.0indirecta
PyPIasttokens3.0.2indirecta
PyPIattrs26.1.0indirecta
PyPIbabel-edtf1.2.1indirecta
PyPIbase32-lib1.0.2indirecta
PyPIbeautifulsoup44.15.0indirecta
PyPIbilliard4.2.4indirecta
PyPIbleach6.4.0indirecta
PyPIblinker1.9.0indirecta
PyPIboolean-py5.0indirecta
PyPIbuild1.5.1indirecta
PyPIcachebox5.2.3indirecta
PyPIcachecontrol0.14.4indirecta
PyPIcached-property2.0.1indirecta
PyPIcachelib0.14.0indirecta
PyPIcelery5.4.0indirecta
PyPIcertifi2026.6.17indirecta
PyPIcffi2.1.0indirecta
PyPIcharset-normalizer3.4.9indirecta
PyPIcheck-manifest0.51indirecta
PyPIclick-default-group1.2.4indirecta
PyPIclick-didyoumean0.3.1indirecta
PyPIclick-option-group0.5.9indirecta
PyPIclick-plugins1.1.1.2indirecta
PyPIclick-repl0.3.0indirecta
PyPIcolorama0.4.6indirecta
PyPIcounter-robots2025.11indirecta
PyPIcoverage7.15.1indirecta
PyPIcoveralls4.1.0indirecta
PyPIcryptography49.0.0indirecta
PyPIcyclonedx-python-lib11.11.0indirecta
PyPIdecorator5.3.1indirecta
PyPIdefusedxml0.7.1indirecta
PyPIdeprecated1.3.1indirecta
PyPIdictdiffer0.9.0indirecta
PyPIdocker-services-cli0.12.2indirecta
PyPIdocopt0.6.2indirecta
PyPIdotty-dict1.3.1indirecta
PyPIedtf5.0.1indirecta
PyPIelasticsearch7.13.4indirecta
PyPIelasticsearch-dsl7.4.1indirecta
PyPIemail-validator2.3.0indirecta
PyPIephem4.2.1indirecta
PyPIexecuting2.2.1indirecta
PyPIfastjsonschema2.21.2indirecta
PyPIfilelock3.29.7indirecta
PyPIflask3.1.3indirecta
PyPIflask-alembic3.1.1indirecta
PyPIflask-babel4.0.0indirecta
PyPIflask-caching2.4.1indirecta
PyPIflask-celeryext0.5.0indirecta
PyPIflask-collect-invenio1.4.0indirecta
PyPIflask-cors6.0.5indirecta
PyPIflask-debugtoolbar0.16.0indirecta
PyPIflask-kvsession-invenio1.0.1indirecta
PyPIflask-limiter4.1.1indirecta
PyPIflask-login0.6.3indirecta
PyPIflask-mail0.9.1indirecta
PyPIflask-menu2.0.0indirecta
PyPIflask-oauthlib-invenio2.0.0indirecta
PyPIflask-principal0.4.0indirecta
PyPIflask-resources1.3.1indirecta
PyPIflask-security-invenio4.2.3indirecta
PyPIflask-shell-ipython0.5.3indirecta
PyPIflask-sqlalchemy3.1.1indirecta
PyPIflask-talisman0.8.1indirecta
PyPIflask-webpackext2.1.1indirecta
PyPIflask-wtf1.3.0indirecta
PyPIfonttools4.63.0indirecta
PyPIfpdf22.8.7indirecta
PyPIfreezegun1.5.5indirecta
PyPIftfy6.3.1indirecta
PyPIfuture1.0.0indirecta
PyPIgeojson3.3.0indirecta
PyPIgitdb4.0.12indirecta
PyPIgithub3-py4.0.1indirecta
PyPIgitpython3.1.51indirecta
PyPIgreenlet3.5.3indirecta
PyPIh110.16.0indirecta
PyPIidna3.18indirecta
PyPIidutils1.6.1indirecta
PyPIimportlib-metadata9.0.0indirecta
PyPIimportlib-resources6.5.2indirecta
PyPIinfinity1.5indirecta
PyPIiniconfig2.3.0indirecta
PyPIintervals0.9.2indirecta
PyPIinvenio-cache3.0.0indirecta
PyPIinvenio-files-rest6.0.1indirecta
PyPIinvenio-previewer6.0.2indirecta
PyPIinvenio-queues1.0.3indirecta
PyPIinvenio-records-resources11.0.0indirecta
PyPIinvenio-stats7.0.0indirecta
PyPIipython9.15.0indirecta
PyPIipython-pygments-lexers1.1.1indirecta
PyPIisbnlib23.11.19indirecta
PyPIisort8.0.1indirecta
PyPIitsdangerous2.2.0indirecta
PyPIjedi0.20.0indirecta
PyPIjsmin3.0.1indirecta
PyPIjsonpatch1.33indirecta
PyPIjsonpickle4.1.2indirecta
PyPIjsonpointer3.1.1indirecta
PyPIjsonref1.1.0indirecta
PyPIjsonschema4.26.0indirecta
PyPIjsonschema-specifications2025.9.1indirecta
PyPIjupyter-client8.9.1indirecta
PyPIjupyter-core5.9.1indirecta
PyPIjupyterlab-pygments0.3.0indirecta
PyPIkombu5.6.2indirecta
PyPIlibpass1.9.3indirecta
PyPIlicense-expression30.4.4indirecta
PyPIlimits5.8.0indirecta
PyPIluqum1.0.0indirecta
PyPIlxml6.1.1indirecta
PyPIlxml-html-clean0.4.5indirecta
PyPImako1.3.12indirecta
PyPImarkdown3.10.2indirecta
PyPImarkdown-it-py4.2.0indirecta
PyPImarkupsafe3.0.3indirecta
PyPImarshmallow3.26.2indirecta
PyPImarshmallow-oneofschema3.2.0indirecta
PyPImarshmallow-utils0.15.1indirecta
PyPImatplotlib-inline0.2.2indirecta
PyPImaxminddb3.1.1indirecta
PyPImaxminddb-geolite22018.703indirecta
PyPImdurl0.1.2indirecta
PyPImistune3.3.3indirecta
PyPImsgpack1.2.1indirecta
PyPInbclient0.11.0indirecta
PyPInbconvert7.17.1indirecta
PyPInbformat5.10.4indirecta
PyPIoauthlib3.3.1indirecta
PyPIordered-set4.1.0indirecta
PyPIorderly-set5.5.0indirecta
PyPIoutcome1.3.0.post0indirecta
PyPIpackageurl-python0.17.6indirecta
PyPIpackaging26.2indirecta
PyPIpandocfilters1.5.1indirecta
PyPIparso0.8.7indirecta
PyPIpastel0.2.1indirecta
PyPIpexpect4.9.0indirecta
PyPIpillow12.3.0indirecta
PyPIpip26.1.2indirecta
PyPIpip-api0.0.34indirecta
PyPIpip-audit2.10.1indirecta
PyPIpip-requirements-parser32.0.1indirecta
PyPIplatformdirs4.10.0indirecta
PyPIpluggy1.6.0indirecta
PyPIply3.11indirecta
PyPIprompt-toolkit3.0.52indirecta
PyPIpsutil7.2.2indirecta
PyPIpsycopg2-binary2.9.12indirecta
PyPIptyprocess0.7.0indirecta
PyPIpure-eval0.2.3indirecta
PyPIpy-serializable2.1.0indirecta
PyPIpycodestyle2.14.0indirecta
PyPIpycountry26.2.16indirecta
PyPIpycparser3.0indirecta
PyPIpydantic2.13.4indirecta
PyPIpydantic-core2.46.4indirecta
PyPIpydocstyle6.3.0indirecta
PyPIpygments2.20.0indirecta
PyPIpyjwt2.13.0indirecta
PyPIpymupdf1.28.0indirecta
PyPIpynpm0.3.1indirecta
PyPIpyparsing3.3.2indirecta
PyPIpyproject-hooks1.2.0indirecta
PyPIpysocks1.7.1indirecta
PyPIpytest8.4.2indirecta
PyPIpytest-cov7.1.0indirecta
PyPIpytest-flask1.3.0indirecta
PyPIpytest-github-actions-annotate-failures0.4.2indirecta
PyPIpytest-invenio4.0.2indirecta
PyPIpytest-isort4.0.0indirecta
PyPIpytest-pycodestyle2.5.0indirecta
PyPIpytest-pydocstyle2.4.0indirecta
PyPIpytest-ruff0.5indirecta
PyPIpython-dateutil2.9.0.post0indirecta
PyPIpython-geoip1.2indirecta
PyPIpython-gitlab8.4.0indirecta
PyPIpython-semantic-release10.6.1indirecta
PyPIpytz2024.1indirecta
PyPIpywebpack2.3.0indirecta
PyPIpyzmq27.1.0indirecta
PyPIrapidfuzz3.14.5indirecta
PyPIredis8.0.1indirecta
PyPIreferencing0.37.0indirecta
PyPIregex2026.7.10indirecta
PyPIrequests-oauthlib2.0.0indirecta
PyPIrequests-toolbelt1.0.0indirecta
PyPIrero-ils1.29.0indirecta
PyPIrich14.3.4indirecta
PyPIrich-click1.9.8indirecta
PyPIrpds-py2026.6.3indirecta
PyPIruff0.15.21indirecta
PyPIselenium4.32.0indirecta
PyPIsetuptools83.0.0indirecta
PyPIshellingham1.5.4indirecta
PyPIsickle0.7.0indirecta
PyPIsimplejson4.1.1indirecta
PyPIsimplekv0.14.1indirecta
PyPIsix1.17.0indirecta
PyPIsmmap5.0.3indirecta
PyPIsniffio1.3.1indirecta
PyPIsnowballstemmer2.2.0indirecta
PyPIsortedcontainers2.4.0indirecta
PyPIsoupsieve2.8.4indirecta
PyPIspeaklater1.3indirecta
PyPIsqlalchemy2.0.51indirecta
PyPIsqlalchemy-continuum1.5.2indirecta
PyPIsqlalchemy-utils0.41.2indirecta
PyPIstack-data0.6.3indirecta
PyPItenacity9.1.4indirecta
PyPItinycss21.5.1indirecta
PyPItomli2.4.1indirecta
PyPItomli-w1.2.0indirecta
PyPItomlkit0.13.3indirecta
PyPItornado6.5.7indirecta
PyPItraitlets5.15.1indirecta
PyPItrio0.33.0indirecta
PyPItrio-websocket0.12.2indirecta
PyPItyper0.26.8indirecta
PyPItyping-extensions4.16.0indirecta
PyPItyping-inspection0.4.2indirecta
PyPItzdata2026.3indirecta
PyPItzlocal5.4.4indirecta
PyPIua-parser1.0.2indirecta
PyPIua-parser-builtins202606indirecta
PyPIuritemplate4.2.0indirecta
PyPIuritools6.1.2indirecta
PyPIuwsgi2.0.31indirecta
PyPIuwsgitop0.12indirecta
PyPIvalidators0.35.0indirecta
PyPIvine5.1.0indirecta
PyPIwand0.6.13indirecta
PyPIwatchdog6.0.0indirecta
PyPIwcwidth0.8.2indirecta
PyPIwebargs8.7.1indirecta
PyPIwebencodings0.5.1indirecta
PyPIwebsocket-client1.9.0indirecta
PyPIwerkzeug3.1.8indirecta
PyPIwhoosh-reloaded2.7.5indirecta
PyPIwrapt2.2.2indirecta
PyPIwsproto1.3.2indirecta
PyPIwtforms3.1.2indirecta
PyPIwtforms-alchemy0.19.1indirecta
PyPIwtforms-components0.11.0indirecta
PyPIzipp4.1.0indirecta
PyPIzipstream-ng1.9.2indirecta
PyPIzxcvbn4.5.0indirecta
Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "ils",
        "library-management-system",
        "invenio",
        "reroplus",
        "rero"
      ],
      "is_fork": false,
      "size_kb": 91495,
      "has_wiki": true,
      "homepage": "http://ils.test.rero.ch",
      "languages": {
        "CSS": 3477,
        "HTML": 97518,
        "SCSS": 14811,
        "Shell": 51548,
        "Python": 4807783,
        "Mermaid": 4480,
        "Dockerfile": 1345,
        "JavaScript": 82459
      },
      "pushed_at": "2026-07-16T11:47:55Z",
      "created_at": "2017-08-08T12:14:43Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-16T11:48:12Z",
      "description": "Integrated Library System flavour of Invenio by RERO+.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "AGPL-3.0",
      "default_branch": "staging",
      "license_spdx_raw": "AGPL-3.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "http://www.rero.ch/",
      "name": "RERO+",
      "type": "Organization",
      "login": "rero",
      "company": null,
      "location": "Martigny, Switzerland",
      "followers": 12,
      "avatar_url": "https://avatars.githubusercontent.com/u/105555?v=4",
      "created_at": "2009-07-16T08:42:49Z",
      "is_verified": null,
      "public_repos": 41,
      "account_age_days": 6212
    },
    "license": {
      "state": "standard",
      "spdx_id": "AGPL-3.0",
      "raw_spdx": "AGPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases_count": 91,
      "commits_last_year": 142,
      "latest_release_at": "2026-07-14T06:53:22Z",
      "latest_release_tag": "v1.29.0",
      "releases_from_tags": false,
      "days_since_last_push": 2,
      "active_weeks_last_year": 47,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 68.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 30,
      "stars": 87,
      "watchers": 9,
      "open_issues_and_prs": 64
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "doc/Makefile",
        "doc/circulation/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "largest_source_bytes": 181482,
      "source_files_sampled": 1134,
      "oversized_source_files": 6,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 6710
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "invenio-oaiharvester",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0a4"
        },
        {
          "name": "invenio-circulation",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-search",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-app",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-base",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "invenio-celery",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.2"
        },
        {
          "name": "invenio-config",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.3"
        },
        {
          "name": "invenio-i18n",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.4.2"
        },
        {
          "name": "invenio-db",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "invenio-admin",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.6.0"
        },
        {
          "name": "invenio-assets",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-formatter",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-logging",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-mail",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "invenio-rest",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-theme",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-access",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-accounts",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.0"
        },
        {
          "name": "invenio-oauth2server",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-oauthclient",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.0.0"
        },
        {
          "name": "invenio-indexer",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-jsonschemas",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "invenio-oaiserver",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-pidstore",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-records-rest",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.0.0"
        },
        {
          "name": "invenio-records-ui",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "invenio-records",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-search-ui",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "invenio-records-permissions",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.13.0"
        },
        {
          "name": "python-dotenv",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.13.0"
        },
        {
          "name": "sentry-sdk",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "dojson",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.4.0"
        },
        {
          "name": "rero-invenio-base",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.1.1"
        },
        {
          "name": "rero-invenio-files",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "rero-invenio-thumbnails",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "flask-wiki",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "PyYAML",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.3.1"
        },
        {
          "name": "dateparser",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.1.1"
        },
        {
          "name": "isbnlib",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.9.1"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.23.0"
        },
        {
          "name": "polib",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "xmltodict",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "ciso8601",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "lazyreader",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "jinja2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">2.11.2"
        },
        {
          "name": "jsonmerge",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.8.0"
        },
        {
          "name": "num2words",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.5.10"
        },
        {
          "name": "iso639",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.4"
        },
        {
          "name": "dcxml",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.2"
        },
        {
          "name": "DeepDiff",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.5.0"
        },
        {
          "name": "jsonresolver",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "click",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=8.3.3"
        },
        {
          "name": "urllib3",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<2.0.0"
        },
        {
          "name": "dnspython",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.4.2"
        },
        {
          "name": "babel",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.16.0"
        },
        {
          "name": "levenshtein",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.26.0"
        },
        {
          "name": "unidecode",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.3.8"
        },
        {
          "name": "poethepoet",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "sqlalchemy-celery-beat",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.8.3"
        },
        {
          "name": "bootstrap-flask",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.5.0"
        },
        {
          "name": "flask-admin",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.6.1"
        },
        {
          "name": "invenio-sip2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.6.25"
        },
        {
          "name": "markdown-captions",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.1.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "babel",
            "direct": true,
            "version": "2.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bootstrap-flask",
            "direct": true,
            "version": "2.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ciso8601",
            "direct": true,
            "version": "2.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "dateparser",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dcxml",
            "direct": true,
            "version": "0.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "deepdiff",
            "direct": true,
            "version": "9.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dnspython",
            "direct": true,
            "version": "2.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dojson",
            "direct": true,
            "version": "1.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-admin",
            "direct": true,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-wiki",
            "direct": true,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-access",
            "direct": true,
            "version": "7.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-accounts",
            "direct": true,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-admin",
            "direct": true,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-app",
            "direct": true,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-assets",
            "direct": true,
            "version": "4.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-base",
            "direct": true,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-celery",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-circulation",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-config",
            "direct": true,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-db",
            "direct": true,
            "version": "2.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-formatter",
            "direct": true,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-i18n",
            "direct": true,
            "version": "4.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-indexer",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-jsonschemas",
            "direct": true,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-logging",
            "direct": true,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-mail",
            "direct": true,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-oaiharvester",
            "direct": true,
            "version": "1.0.0a4",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-oaiserver",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-oauth2server",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-oauthclient",
            "direct": true,
            "version": "9.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-pidstore",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-records",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-records-permissions",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-records-rest",
            "direct": true,
            "version": "6.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-records-ui",
            "direct": true,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-rest",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-search",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-search-ui",
            "direct": true,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-sip2",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-theme",
            "direct": true,
            "version": "5.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "isbnlib",
            "direct": true,
            "version": "3.10.14",
            "ecosystem": "pypi"
          },
          {
            "name": "iso639",
            "direct": true,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": true,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonmerge",
            "direct": true,
            "version": "1.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonresolver",
            "direct": true,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "lazyreader",
            "direct": true,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "levenshtein",
            "direct": true,
            "version": "0.27.3",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-captions",
            "direct": true,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "num2words",
            "direct": true,
            "version": "0.5.14",
            "ecosystem": "pypi"
          },
          {
            "name": "poethepoet",
            "direct": true,
            "version": "0.48.0",
            "ecosystem": "pypi"
          },
          {
            "name": "polib",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": true,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": true,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rero-invenio-base",
            "direct": true,
            "version": "1.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rero-invenio-files",
            "direct": true,
            "version": "2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rero-invenio-thumbnails",
            "direct": true,
            "version": "2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sentry-sdk",
            "direct": true,
            "version": "2.65.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy-celery-beat",
            "direct": true,
            "version": "0.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "unidecode",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": true,
            "version": "1.26.20",
            "ecosystem": "pypi"
          },
          {
            "name": "xmltodict",
            "direct": true,
            "version": "0.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "@cypress/listr-verbose-renderer",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cypress/request",
            "direct": false,
            "version": "2.88.10",
            "ecosystem": "npm"
          },
          {
            "name": "@cypress/xvfb",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@samverschueren/stream-to-observable",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sinonjs__fake-timers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sizzle",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "any-observable",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "arch",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "asn1",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "assert-plus",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "at-least-node",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "aws-sign2",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "aws4",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-pbkdf",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "blob-util",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cachedir",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caseless",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "check-more-types",
            "direct": false,
            "version": "2.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-table3",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-truncate",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "code-point-at",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colors",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-tags",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-stream",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cypress",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dashdash",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": false,
            "version": "1.30.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ecc-jsbn",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "elegant-spinner",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter2",
            "direct": false,
            "version": "6.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "executable",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit-hook",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extract-zip",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "extsprintf",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fd-slicer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "forever-agent",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "getos",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "getpass",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "global-dirs",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-signature",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "is-ci",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-installed-globally",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-observable",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isstream",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "jsbn",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsprim",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lazy-ass",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "listr",
            "direct": false,
            "version": "0.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "listr-silent-renderer",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "listr-update-renderer",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "listr-verbose-renderer",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.once",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-update",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.51.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.34",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "moment",
            "direct": false,
            "version": "2.29.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "number-is-nan",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ospath",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "pend",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "performance-now",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-bytes",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "psl",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "querystring",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ramda",
            "direct": false,
            "version": "0.26.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "request-progress",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "6.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "sshpk",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-observable",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "throttleit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "tunnel-agent",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tweetnacl",
            "direct": false,
            "version": "0.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "untildify",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "url",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "verror",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "alembic",
            "direct": false,
            "version": "1.18.5",
            "ecosystem": "pypi"
          },
          {
            "name": "amqp",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-doc",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-types",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "arrow",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel-edtf",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "base32-lib",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "billiard",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "bleach",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "blinker",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "boolean-py",
            "direct": false,
            "version": "5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cachebox",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "cachecontrol",
            "direct": false,
            "version": "0.14.4",
            "ecosystem": "pypi"
          },
          {
            "name": "cached-property",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cachelib",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "celery",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.6.17",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "check-manifest",
            "direct": false,
            "version": "0.51",
            "ecosystem": "pypi"
          },
          {
            "name": "click-default-group",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "click-didyoumean",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click-option-group",
            "direct": false,
            "version": "0.5.9",
            "ecosystem": "pypi"
          },
          {
            "name": "click-plugins",
            "direct": false,
            "version": "1.1.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "click-repl",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "counter-robots",
            "direct": false,
            "version": "2025.11",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "coveralls",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cyclonedx-python-lib",
            "direct": false,
            "version": "11.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecated",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dictdiffer",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docker-services-cli",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "pypi"
          },
          {
            "name": "docopt",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "dotty-dict",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "edtf",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "elasticsearch",
            "direct": false,
            "version": "7.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "elasticsearch-dsl",
            "direct": false,
            "version": "7.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "email-validator",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ephem",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastjsonschema",
            "direct": false,
            "version": "2.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.29.7",
            "ecosystem": "pypi"
          },
          {
            "name": "flask",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-alembic",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-babel",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-caching",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-celeryext",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-collect-invenio",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-cors",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-debugtoolbar",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-kvsession-invenio",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-limiter",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-login",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-mail",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-menu",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-oauthlib-invenio",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-principal",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-resources",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-security-invenio",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-shell-ipython",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-sqlalchemy",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-talisman",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-webpackext",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask-wtf",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fonttools",
            "direct": false,
            "version": "4.63.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fpdf2",
            "direct": false,
            "version": "2.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "freezegun",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "ftfy",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "future",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "geojson",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gitdb",
            "direct": false,
            "version": "4.0.12",
            "ecosystem": "pypi"
          },
          {
            "name": "github3-py",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "gitpython",
            "direct": false,
            "version": "3.1.51",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "idutils",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-resources",
            "direct": false,
            "version": "6.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "infinity",
            "direct": false,
            "version": "1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "intervals",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-cache",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-files-rest",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-previewer",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-queues",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-records-resources",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invenio-stats",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-pygments-lexers",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "isbnlib2",
            "direct": false,
            "version": "3.11.19",
            "ecosystem": "pypi"
          },
          {
            "name": "isort",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "itsdangerous",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsmin",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpatch",
            "direct": false,
            "version": "1.33",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpickle",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonref",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": false,
            "version": "4.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-specifications",
            "direct": false,
            "version": "2025.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-client",
            "direct": false,
            "version": "8.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-core",
            "direct": false,
            "version": "5.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-pygments",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "kombu",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "libpass",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "pypi"
          },
          {
            "name": "license-expression",
            "direct": false,
            "version": "30.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "limits",
            "direct": false,
            "version": "5.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "luqum",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml-html-clean",
            "direct": false,
            "version": "0.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "mako",
            "direct": false,
            "version": "1.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown",
            "direct": false,
            "version": "3.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow",
            "direct": false,
            "version": "3.26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow-oneofschema",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow-utils",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "maxminddb",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "maxminddb-geolite2",
            "direct": false,
            "version": "2018.703",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mistune",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "msgpack",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nbclient",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nbconvert",
            "direct": false,
            "version": "7.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nbformat",
            "direct": false,
            "version": "5.10.4",
            "ecosystem": "pypi"
          },
          {
            "name": "oauthlib",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ordered-set",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "orderly-set",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "outcome",
            "direct": false,
            "version": "1.3.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "packageurl-python",
            "direct": false,
            "version": "0.17.6",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pandocfilters",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pastel",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": "12.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pip",
            "direct": false,
            "version": "26.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-api",
            "direct": false,
            "version": "0.0.34",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-audit",
            "direct": false,
            "version": "2.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-requirements-parser",
            "direct": false,
            "version": "32.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ply",
            "direct": false,
            "version": "3.11",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": false,
            "version": "2.9.12",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "py-serializable",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycodestyle",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycountry",
            "direct": false,
            "version": "26.2.16",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": false,
            "version": "2.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.46.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydocstyle",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymupdf",
            "direct": false,
            "version": "1.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pynpm",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-hooks",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pysocks",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-flask",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-github-actions-annotate-failures",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-invenio",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-isort",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-pycodestyle",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-pydocstyle",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-ruff",
            "direct": false,
            "version": "0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-geoip",
            "direct": false,
            "version": "1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-gitlab",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-semantic-release",
            "direct": false,
            "version": "10.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2024.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pywebpack",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyzmq",
            "direct": false,
            "version": "27.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rapidfuzz",
            "direct": false,
            "version": "3.14.5",
            "ecosystem": "pypi"
          },
          {
            "name": "redis",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "referencing",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "2026.7.10",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-oauthlib",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-toolbelt",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rero-ils",
            "direct": false,
            "version": "1.29.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "14.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "rich-click",
            "direct": false,
            "version": "1.9.8",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "2026.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.15.21",
            "ecosystem": "pypi"
          },
          {
            "name": "selenium",
            "direct": false,
            "version": "4.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "83.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "sickle",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "simplejson",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "simplekv",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "smmap",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowballstemmer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "speaklater",
            "direct": false,
            "version": "1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy-continuum",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy-utils",
            "direct": false,
            "version": "0.41.2",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tenacity",
            "direct": false,
            "version": "9.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "tinycss2",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli-w",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.13.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tornado",
            "direct": false,
            "version": "6.5.7",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "trio",
            "direct": false,
            "version": "0.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "trio-websocket",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.26.8",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspection",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2026.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tzlocal",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "ua-parser",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "ua-parser-builtins",
            "direct": false,
            "version": "202606",
            "ecosystem": "pypi"
          },
          {
            "name": "uritemplate",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uritools",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "uwsgi",
            "direct": false,
            "version": "2.0.31",
            "ecosystem": "pypi"
          },
          {
            "name": "uwsgitop",
            "direct": false,
            "version": "0.12",
            "ecosystem": "pypi"
          },
          {
            "name": "validators",
            "direct": false,
            "version": "0.35.0",
            "ecosystem": "pypi"
          },
          {
            "name": "vine",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wand",
            "direct": false,
            "version": "0.6.13",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "webargs",
            "direct": false,
            "version": "8.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "webencodings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "werkzeug",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "whoosh-reloaded",
            "direct": false,
            "version": "2.7.5",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wsproto",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wtforms",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wtforms-alchemy",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "pypi"
          },
          {
            "name": "wtforms-components",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "zipstream-ng",
            "direct": false,
            "version": "1.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "zxcvbn",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 519,
        "direct_count": 63,
        "indirect_count": 456
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 13,
        "merged_prs": 2373,
        "open_issues": 51,
        "closed_ratio": 0.965,
        "closed_issues": 1406,
        "closed_unmerged_prs": 322
      },
      "bus_factor": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "rerowep",
          "commits": 441,
          "avatar_url": "https://avatars.githubusercontent.com/u/31234355?v=4"
        },
        {
          "type": "User",
          "login": "jma",
          "commits": 374,
          "avatar_url": "https://avatars.githubusercontent.com/u/127249?v=4"
        },
        {
          "type": "User",
          "login": "zannkukai",
          "commits": 324,
          "avatar_url": "https://avatars.githubusercontent.com/u/10031585?v=4"
        },
        {
          "type": "User",
          "login": "PascalRepond",
          "commits": 257,
          "avatar_url": "https://avatars.githubusercontent.com/u/50177009?v=4"
        },
        {
          "type": "User",
          "login": "Garfield-fr",
          "commits": 250,
          "avatar_url": "https://avatars.githubusercontent.com/u/48578?v=4"
        },
        {
          "type": "User",
          "login": "lauren-d",
          "commits": 84,
          "avatar_url": "https://avatars.githubusercontent.com/u/38690496?v=4"
        },
        {
          "type": "User",
          "login": "blankoworld",
          "commits": 61,
          "avatar_url": "https://avatars.githubusercontent.com/u/147417?v=4"
        },
        {
          "type": "User",
          "login": "reropag",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/31214901?v=4"
        },
        {
          "type": "Bot",
          "login": "transifex-integration[bot]",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/in/18568?v=4"
        },
        {
          "type": "User",
          "login": "ManaDeweerdt",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/12396034?v=4"
        }
      ],
      "contributors_sampled": 25,
      "top_contributor_share": 0.236
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto_assign.yml",
        "continuous-integration-test.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "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": 4,
            "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": 10,
            "reason": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
            "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": 8,
            "reason": "Found 24/27 approved changesets -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "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": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "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": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "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": 0,
            "reason": "security policy file not 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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "28 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "2effdad58a699b7eb12e2c842b3bbf9a52db1e3b",
        "ran_at": "2026-07-19T11:00:33Z",
        "aggregate_score": 5.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/rero/rero-ils",
    "host": "github.com",
    "name": "rero-ils",
    "owner": "rero"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 75,
      "inputs": {
        "security": 55,
        "vitality": 94,
        "community": 59,
        "governance": 77,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 94,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "commits_last_year": 142,
              "human_commit_share": null,
              "days_since_last_push": 2,
              "active_weeks_last_year": 47
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "47/52 weeks with commits",
                "points": 32.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 47
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "142 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 142
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "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": 92,
            "inputs": {
              "releases_count": 91,
              "latest_release_tag": "v1.29.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 68.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "91 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~68.2 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 68.2
                    }
                  }
                ],
                "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": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "no_commit_sample",
              "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": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 59,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 49,
            "inputs": {
              "forks": 30,
              "stars": 87,
              "watchers": 9,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "87 stars",
                "points": 31.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 87
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "30 forks",
                "points": 12.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "9 watchers",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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 (AGPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "AGPL-3.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": 0,
                "status": "missed",
                "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": "good",
        "name": "Sustainability & Governance",
        "value": 77,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "bus_factor": 3,
              "contributors_sampled": 25,
              "top_contributor_share": 0.236
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "3 contributor(s) cover half of all commits",
                "points": 36,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 24% of commits",
                "points": 17.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 24
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "25 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "merged_prs": 2373,
              "open_issues": 51,
              "closed_issues": 1406,
              "issue_closed_ratio": 0.965,
              "closed_unmerged_prs": 322
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "96% of issues closed",
                "points": 45.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "2373/2695 decided PRs merged",
                "points": 33.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 2373,
                      "decided": 2695
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 24/27 approved changesets -- score normalized to 8",
                "points": 12,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "followers": 12,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "rero",
              "public_repos": 41,
              "account_age_days": 6212
            },
            "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": "12 followers of rero",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 12,
                      "login": "rero"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "41 public repos, account ~17 yr old",
                "points": 23.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 41
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 17
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ils",
                "library-management-system",
                "invenio",
                "reroplus",
                "rero"
              ],
              "has_wiki": true,
              "homepage": "http://ils.test.rero.ch",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "http://ils.test.rero.ch",
                "points": 15,
                "status": "met",
                "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": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 55,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.5
            },
            "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": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "25 out of 25 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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": "Found 24/27 approved changesets -- score normalized to 8",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "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": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "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 not detected",
                "points": 0,
                "status": "missed",
                "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": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "28 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 7
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": "Excluded from scoring (no data or not applicable): Legible commit history. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "legible_commit_history"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 75,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": null,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 6710
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "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": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): Demonstrated agent practice. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "demonstrated_agent_practice"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "doc/Makefile",
                "doc/circulation/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": null,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "doc/Makefile, doc/circulation/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "doc/Makefile, doc/circulation/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "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": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "dependency automation configured, none observed in the sampled commits",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "dependency_bot_config_only",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 181482,
              "source_files_sampled": 1134,
              "oversized_source_files": 6
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "6/1134 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1134,
                      "oversized": 6
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Could not fetch pypi package 'rero-ils' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-19T11:00:58.203641Z",
  "schema_version": "0.15.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rero/rero-ils.svg",
  "full_name": "rero/rero-ils",
  "license_state": "standard",
  "license_spdx": "AGPL-3.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 v1.13.0, esquema v0.15.0 — metodología completa · wiki de métricas.

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