Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-23 12:44 UTC

openedx / edx-enterprise

PythonAGPL-3.0★ 50 estrellas⑂ 71 forksdesde oct 2016Ver en GitHub ↗

openedx/edx-enterprise tiene un índice de salud de 81 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (96/100) y la más baja, Security (72/100). Se actualizó por última vez hoy. 11 personas concentran la mayor parte del trabajo reciente.

81
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.

81
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

Open edXOrganización
757 seguidores185 repositorios públicosdesde jun 2018

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
PyPIedx-enterprise8.7.1-1461hace 0 díasdjangoedx

Métricas por categoría

Vitalidad

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

96Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
29.1/36Cadencia de commits — 42/52 semanas con commits
18/18Volumen de commits — 187 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_year187
human_commit_share0,96
days_since_last_push0
active_weeks_last_year42
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~4 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tag8.7.1
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases4
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?

75Bueno · 18% del índice global
Cómo se puntúa
27.4/60Estrellas — 50 estrellas
15.4/25Forks — 71 forks
10.4/15Observadores — 74 observadores
Datos de entrada utilizados
forks71
stars50
watchers74
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
13.5/13.5Código de conducta
7.2/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

Sostenibilidad y Gobernanza

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

86Excelente · 24% del índice global
Cómo se puntúa
54/54Factor bus — la mitad de los commits recae en 11 contribuyente(s)
19.8/22.5Distribución de commits — el principal contribuyente firma el 12% de los commits
13.5/13.5Amplitud de contribuyentes — 99 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 21 contributing companies or organizations
Datos de entrada utilizados
bus_factor11
contributors_sampled99
top_contributor_share0,12
Cómo se puntúa
28.5/46.8Resolución de issues — 61% de issues cerradas
29.6/38.3Aceptación de PR — 1966/2542 PR decididos fusionados
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
merged_prs1966
open_issues9
closed_issues14
issue_closed_ratio0,609
closed_unmerged_prs576
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
20.7/25Alcance del propietario — 757 seguidores de openedx
25/25Trayectoria — 185 repos públicos, cuenta de ~8 años
Datos de entrada utilizados
followers757
owner_typeOrganization
is_verified
owner_loginopenedx
public_repos185
account_age_days2963
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en pypi
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 1461 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesedx-enterprise
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

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

Documentación

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

Seguridad

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

72Bueno · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
2.5/2.5CI-Tests — 23 out of 23 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
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 21 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
5/5Packaging — packaging workflow detected
1/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 46 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate6,5
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories86
affected_packages39
assessed_packages1041
unassessed_packages50
affected_by_severitycritical 3, high 20, moderate 16
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 1041 dependencias resueltas con OSV. 50 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

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.

78Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 94 de 96 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,979
agent_instruction_files.github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
agent_instruction_max_bytes7063
Cómo se puntúa
18/18Arranque con un solo comando — Makefile, docs/Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — tox.ini
0/11Verificación estática de tipos
10/10Entorno reproducible — Dockerfile, lockfile
10/10Práctica demostrada con agentes — 11 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 4 de los últimos 100 commits son actualizaciones automáticas de dependencias
2/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_languageno
bootstrap_filesMakefile, docs/Makefile
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,11
toolchain_manifests
dependency_bot_commit_share0,04
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
54.3/55Tamaños de archivo manejables — 13/1039 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes458.598
source_files_sampled1039
oversized_source_files13

Datos clave

50estrellas de GitHub
99contribuidores
187commits en los últimos 12 meses
0días desde el último push
100versiones publicadas
11factor bus
9issues abiertas
npm, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'edx-enterprise' from its registry
  • deps.dev does not index pypi:edx-enterprise@8.7.1; advisories assessed against the repository dependency graph instead

Más detalle

Historial de estrellas y forks 0 ★ / 71 ⇿
0Estrellas
71Forks
88Versiones

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

01325385063757122016-112021-082026-06
Mayor 2Menor 9Parche 77

Cada punto abarca 9 días.

OpenSSF Scorecard 6.5 / 10
6.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-23 12:43 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests23 out of 23 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 21 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
10Packagingpackaging workflow detected
2Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 2
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities46 existing vulnerabilities detected
Dependencias directas 2
RegistroPaqueteRestricción de versiónManifiesto
npm@edx/brandnpm:@edx/brand-edx.org@^1.3.0package.json
npm@openedx/paragon^21.5.7package.json
Todas las dependencias 1091

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

RegistroPaqueteVersiónRelación
npm@openedx/paragon21.13.1directa
npm@babel/runtime7.25.6indirecta
npm@babel/runtime-corejs37.25.6indirecta
npm@edx/brand-edx.org1.6.1indirecta
npm@formatjs/ecma402-abstract2.0.0indirecta
npm@formatjs/fast-memoize2.2.0indirecta
npm@formatjs/icu-messageformat-parser2.7.8indirecta
npm@formatjs/icu-skeleton-parser1.8.2indirecta
npm@formatjs/intl2.10.4indirecta
npm@formatjs/intl-displaynames6.6.8indirecta
npm@formatjs/intl-listformat7.5.7indirecta
npm@formatjs/intl-localematcher0.5.4indirecta
npm@fortawesome/fontawesome-common-types6.6.0indirecta
npm@fortawesome/fontawesome-svg-core6.6.0indirecta
npm@fortawesome/react-fontawesome0.1.19indirecta
npm@popperjs/core2.11.8indirecta
npm@restart/context2.1.4indirecta
npm@restart/hooks0.4.16indirecta
npm@types/hoist-non-react-statics3.3.5indirecta
npm@types/invariant2.2.37indirecta
npm@types/prop-types15.7.12indirecta
npm@types/react18.3.5indirecta
npm@types/react-transition-group4.4.11indirecta
npm@types/warning3.0.3indirecta
npmacorn4.0.13indirecta
npmacorn5.7.4indirecta
npmacorn-dynamic-import2.0.2indirecta
npmajv5.5.2indirecta
npmajv6.12.6indirecta
npmajv-keywords3.5.2indirecta
npmalign-text0.1.4indirecta
npmalphanum-sort1.0.2indirecta
npmansi-escapes4.3.2indirecta
npmansi-regex2.1.1indirecta
npmansi-regex3.0.1indirecta
npmansi-regex5.0.1indirecta
npmansi-styles2.2.1indirecta
npmansi-styles3.2.1indirecta
npmansi-styles4.3.0indirecta
npmanymatch2.0.0indirecta
npmanymatch3.1.3indirecta
npmargparse1.0.10indirecta
npmaria-hidden1.2.4indirecta
npmarr-diff4.0.0indirecta
npmarr-flatten1.1.0indirecta
npmarr-union3.1.0indirecta
npmarray-unique0.3.2indirecta
npmasn1.js4.10.1indirecta
npmassert1.5.1indirecta
npmassert-ok1.0.0indirecta
npmassign-symbols1.0.0indirecta
npmasync2.6.4indirecta
npmasync-each1.0.6indirecta
npmatob2.1.2indirecta
npmattr-accept2.2.2indirecta
npmautoprefixer6.7.7indirecta
npmavailable-typed-arrays1.0.7indirecta
npmbabel-code-frame6.26.0indirecta
npmbalanced-match0.4.2indirecta
npmbalanced-match1.0.2indirecta
npmbase0.11.2indirecta
npmbase64-js1.5.1indirecta
npmbig.js5.2.2indirecta
npmbinary-extensions1.13.1indirecta
npmbinary-extensions2.3.0indirecta
npmbindings1.5.0indirecta
npmbl4.1.0indirecta
npmbn.js4.12.0indirecta
npmbn.js5.2.1indirecta
npmbootstrap4.6.2indirecta
npmbrace-expansion1.1.11indirecta
npmbrace-expansion2.0.1indirecta
npmbraces2.3.2indirecta
npmbraces3.0.3indirecta
npmbrorand1.1.0indirecta
npmbrowserify-aes1.2.0indirecta
npmbrowserify-cipher1.0.1indirecta
npmbrowserify-des1.0.2indirecta
npmbrowserify-rsa4.1.0indirecta
npmbrowserify-sign4.2.3indirecta
npmbrowserify-zlib0.2.0indirecta
npmbrowserslist1.7.7indirecta
npmbuffer4.9.2indirecta
npmbuffer5.7.1indirecta
npmbuffer-xor1.0.3indirecta
npmbuiltin-status-codes3.0.0indirecta
npmcache-base1.0.1indirecta
npmcall-bind1.0.8indirecta
npmcall-bind-apply-helpers1.0.2indirecta
npmcall-bound1.0.4indirecta
npmcamelcase1.2.1indirecta
npmcamelcase4.1.0indirecta
npmcaniuse-api1.6.1indirecta
npmcaniuse-db1.0.30001657indirecta
npmcast-array1.0.1indirecta
npmcenter-align0.1.3indirecta
npmchalk1.1.3indirecta
npmchalk2.4.2indirecta
npmchalk4.1.2indirecta
npmchardet0.7.0indirecta
npmchild_process1.0.2indirecta
npmchokidar2.1.8indirecta
npmchokidar3.6.0indirecta
npmcipher-base1.0.4indirecta
npmclap1.2.3indirecta
npmclass-utils0.3.6indirecta
npmclassnames2.5.1indirecta
npmcli1.0.1indirecta
npmcli-cursor3.1.0indirecta
npmcli-spinners2.9.2indirecta
npmcli-width3.0.0indirecta
npmcliui2.1.0indirecta
npmcliui3.2.0indirecta
npmclone1.0.4indirecta
npmclone-deep4.0.1indirecta
npmco4.6.0indirecta
npmcoa1.0.4indirecta
npmcode-point-at1.1.0indirecta
npmcollection-visit1.0.0indirecta
npmcolor0.11.4indirecta
npmcolor-convert1.9.3indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.3indirecta
npmcolor-name1.1.4indirecta
npmcolor-string0.3.0indirecta
npmcolormin1.1.2indirecta
npmcolors1.1.2indirecta
npmcomponent-emitter1.3.1indirecta
npmconcat-map0.0.1indirecta
npmconsole-browserify1.1.0indirecta
npmconstants-browserify1.0.0indirecta
npmcopy-descriptor0.1.1indirecta
npmcore-js-pure3.38.1indirecta
npmcore-util-is1.0.3indirecta
npmcreate-ecdh4.0.4indirecta
npmcreate-hash1.1.3indirecta
npmcreate-hash1.2.0indirecta
npmcreate-hmac1.1.7indirecta
npmcross-spawn5.1.0indirecta
npmcrypto-browserify3.12.0indirecta
npmcss-color-names0.0.4indirecta
npmcss-loader0.28.11indirecta
npmcss-mediaquery0.1.2indirecta
npmcss-selector-tokenizer0.7.3indirecta
npmcssesc3.0.0indirecta
npmcssnano3.10.0indirecta
npmcsso2.3.2indirecta
npmcsstype3.1.3indirecta
npmd1.0.2indirecta
npmdate-now0.1.4indirecta
npmdebug2.6.9indirecta
npmdecamelize1.2.0indirecta
npmdecode-uri-component0.2.2indirecta
npmdefaults1.0.4indirecta
npmdefine-data-property1.1.4indirecta
npmdefine-properties1.2.1indirecta
npmdefine-property0.2.5indirecta
npmdefine-property1.0.0indirecta
npmdefine-property2.0.2indirecta
npmdefined1.0.1indirecta
npmdequal2.0.3indirecta
npmdes.js1.1.0indirecta
npmdetect-node-es1.1.0indirecta
npmdiffie-hellman5.0.3indirecta
npmdom-helpers5.2.1indirecta
npmdom-serializer0.2.2indirecta
npmdomain-browser1.2.0indirecta
npmdomelementtype1.3.1indirecta
npmdomelementtype2.3.0indirecta
npmdomhandler2.3.0indirecta
npmdomutils1.5.1indirecta
npmdunder-proto1.0.1indirecta
npmelectron-to-chromium1.5.14indirecta
npmelliptic6.6.1indirecta
npmemail-prop-type3.0.1indirecta
npmemail-validator2.0.4indirecta
npmemoji-regex8.0.0indirecta
npmemojis-list3.0.0indirecta
npmenhanced-resolve3.4.1indirecta
npmentities1.0.0indirecta
npmentities2.2.0indirecta
npmerrno0.1.8indirecta
npmerror-ex1.3.2indirecta
npmes-define-property1.0.1indirecta
npmes-errors1.3.0indirecta
npmes-object-atoms1.1.1indirecta
npmes5-ext0.10.64indirecta
npmes6-iterator2.0.3indirecta
npmes6-map0.1.5indirecta
npmes6-set0.1.6indirecta
npmes6-symbol3.1.4indirecta
npmes6-weak-map2.0.3indirecta
npmescape-string-regexp1.0.5indirecta
npmescope3.6.0indirecta
npmesniff2.0.1indirecta
npmesprima2.7.3indirecta
npmesrecurse4.3.0indirecta
npmestraverse4.3.0indirecta
npmestraverse5.3.0indirecta
npmesutils2.0.3indirecta
npmevent-emitter0.3.5indirecta
npmevents3.3.0indirecta
npmevp_bytestokey1.0.3indirecta
npmexeca0.7.0indirecta
npmexit0.1.2indirecta
npmexpand-brackets2.1.4indirecta
npmext1.7.0indirecta
npmextend-shallow2.0.1indirecta
npmextend-shallow3.0.2indirecta
npmexternal-editor3.1.0indirecta
npmextglob2.0.4indirecta
npmextract-text-webpack-plugin3.0.2indirecta
npmfast-deep-equal1.1.0indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfastparse1.1.2indirecta
npmfigures3.2.0indirecta
npmfile-selector0.6.0indirecta
npmfile-uri-to-path1.0.0indirecta
npmfill-range4.0.0indirecta
npmfill-range7.1.1indirecta
npmfilter-obj1.1.0indirecta
npmfind-up2.1.0indirecta
npmflatten1.0.3indirecta
npmfocus-lock1.3.5indirecta
npmfont-awesome4.7.0indirecta
npmfor-each0.3.5indirecta
npmfor-in1.0.2indirecta
npmfragment-cache0.2.1indirecta
npmfs.realpath1.0.0indirecta
npmfsevents1.2.13indirecta
npmfsevents2.3.3indirecta
npmfunction-bind1.1.2indirecta
npmget-caller-file1.0.3indirecta
npmget-intrinsic1.3.0indirecta
npmget-nonce1.0.1indirecta
npmget-proto1.0.1indirecta
npmget-stream3.0.0indirecta
npmget-value2.0.6indirecta
npmglob7.2.3indirecta
npmglob8.1.0indirecta
npmglob-parent3.1.0indirecta
npmglob-parent5.1.2indirecta
npmgopd1.2.0indirecta
npmgraceful-fs4.2.11indirecta
npmhas1.0.4indirecta
npmhas-ansi2.0.0indirecta
npmhas-flag1.0.0indirecta
npmhas-flag2.0.0indirecta
npmhas-flag3.0.0indirecta
npmhas-flag4.0.0indirecta
npmhas-property-descriptors1.0.2indirecta
npmhas-symbols1.1.0indirecta
npmhas-tostringtag1.0.2indirecta
npmhas-value0.3.1indirecta
npmhas-value1.0.0indirecta
npmhas-values0.1.4indirecta
npmhas-values1.0.0indirecta
npmhash-base2.0.2indirecta
npmhash-base3.0.4indirecta
npmhash.js1.1.7indirecta
npmhasown2.0.2indirecta
npmhmac-drbg1.0.1indirecta
npmhoist-non-react-statics3.3.2indirecta
npmhosted-git-info2.8.9indirecta
npmhtml-comment-regex1.1.2indirecta
npmhtmlparser23.8.3indirecta
npmhttps-browserify1.0.0indirecta
npmhyphenate-style-name1.1.0indirecta
npmiconv-lite0.4.24indirecta
npmicss-replace-symbols1.1.0indirecta
npmicss-utils2.1.0indirecta
npmieee7541.2.1indirecta
npmimask7.6.1indirecta
npmimmutable4.3.7indirecta
npmindexes-of1.0.1indirecta
npminflight1.0.6indirecta
npminherits2.0.3indirecta
npminherits2.0.4indirecta
npminquirer8.2.6indirecta
npminterpret1.4.0indirecta
npmintl-messageformat10.5.14indirecta
npminvariant2.2.4indirecta
npminvert-kv1.0.0indirecta
npmis-absolute-url2.1.0indirecta
npmis-accessor-descriptor1.0.1indirecta
npmis-arrayish0.2.1indirecta
npmis-binary-path1.0.1indirecta
npmis-binary-path2.1.0indirecta
npmis-buffer1.1.6indirecta
npmis-callable1.2.7indirecta
npmis-core-module2.15.1indirecta
npmis-data-descriptor1.0.1indirecta
npmis-descriptor0.1.7indirecta
npmis-descriptor1.0.3indirecta
npmis-extendable0.1.1indirecta
npmis-extendable1.0.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point1.0.0indirecta
npmis-fullwidth-code-point2.0.0indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob3.1.0indirecta
npmis-glob4.0.3indirecta
npmis-interactive1.0.0indirecta
npmis-number3.0.0indirecta
npmis-number7.0.0indirecta
npmis-plain-obj1.1.0indirecta
npmis-plain-object2.0.4indirecta
npmis-stream1.1.0indirecta
npmis-svg2.1.0indirecta
npmis-typed-array1.1.15indirecta
npmis-unicode-supported0.1.0indirecta
npmis-windows1.0.2indirecta
npmisarray0.0.1indirecta
npmisarray1.0.0indirecta
npmisarray2.0.5indirecta
npmisexe2.0.0indirecta
npmisobject2.1.0indirecta
npmisobject3.0.1indirecta
npmjasmine-ajax3.4.0indirecta
npmjasmine-jquery2.1.1indirecta
npmjquery2.2.4indirecta
npmjs-base642.6.4indirecta
npmjs-tokens3.0.2indirecta
npmjs-yaml3.7.0indirecta
npmjshint2.13.6indirecta
npmjson-loader0.5.7indirecta
npmjson-schema-traverse0.3.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson50.5.1indirecta
npmjson51.0.2indirecta
npmkind-of3.2.2indirecta
npmkind-of4.0.0indirecta
npmkind-of6.0.3indirecta
npmlazy-cache1.0.4indirecta
npmlcid1.0.0indirecta
npmload-json-file2.0.0indirecta
npmloader-runner2.4.0indirecta
npmloader-utils1.4.2indirecta
npmlocate-path2.0.0indirecta
npmlodash4.17.21indirecta
npmlodash.camelcase4.3.0indirecta
npmlodash.memoize4.1.2indirecta
npmlodash.uniq4.5.0indirecta
npmlodash.uniqby4.7.0indirecta
npmlog-symbols4.1.0indirecta
npmlongest1.0.1indirecta
npmloose-envify1.4.0indirecta
npmlru-cache4.1.5indirecta
npmmailto-link2.0.0indirecta
npmmap-cache0.2.2indirecta
npmmap-visit1.0.0indirecta
npmmatchmediaquery0.3.1indirecta
npmmath-expression-evaluator1.4.0indirecta
npmmath-intrinsics1.1.0indirecta
npmmd5.js1.3.5indirecta
npmmem1.1.0indirecta
npmmemory-fs0.4.1indirecta
npmmicromatch3.1.10indirecta
npmmiller-rabin4.0.1indirecta
npmmimic-fn1.2.0indirecta
npmmimic-fn2.1.0indirecta
npmminimalistic-assert1.0.1indirecta
npmminimalistic-crypto-utils1.0.1indirecta
npmminimatch3.0.8indirecta
npmminimatch3.1.2indirecta
npmminimatch5.1.6indirecta
npmminimist1.2.8indirecta
npmmixin-deep1.3.2indirecta
npmmkdirp0.5.6indirecta
npmms2.0.0indirecta
npmmute-stream0.0.8indirecta
npmnan2.20.0indirecta
npmnanomatch1.2.13indirecta
npmneo-async2.6.2indirecta
npmnext-tick1.1.0indirecta
npmnode-libs-browser2.2.1indirecta
npmnormalize-package-data2.5.0indirecta
npmnormalize-path2.1.1indirecta
npmnormalize-path3.0.0indirecta
npmnormalize-range0.1.2indirecta
npmnormalize-url1.9.1indirecta
npmnpm-run-path2.0.2indirecta
npmnum2fraction1.2.2indirecta
npmnumber-is-nan1.0.1indirecta
npmobject-assign4.1.1indirecta
npmobject-copy0.1.0indirecta
npmobject-filter1.0.2indirecta
npmobject-inspect1.13.4indirecta
npmobject-keys1.1.1indirecta
npmobject-visit1.0.1indirecta
npmobject.assign4.1.5indirecta
npmobject.pick1.3.0indirecta
npmonce1.4.0indirecta
npmonetime5.1.2indirecta
npmora5.4.1indirecta
npmos-browserify0.3.0indirecta
npmos-locale2.1.0indirecta
npmos-tmpdir1.0.2indirecta
npmp-finally1.0.0indirecta
npmp-limit1.3.0indirecta
npmp-locate2.0.0indirecta
npmp-try1.0.0indirecta
npmpako1.0.11indirecta
npmparse-asn15.1.7indirecta
npmparse-json2.2.0indirecta
npmpascalcase0.1.1indirecta
npmpath-browserify0.0.1indirecta
npmpath-dirname1.0.2indirecta
npmpath-exists3.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key2.0.1indirecta
npmpath-parse1.0.7indirecta
npmpath-type2.0.0indirecta
npmpbkdf23.1.3indirecta
npmpicomatch2.3.1indirecta
npmpify2.3.0indirecta
npmpify4.0.1indirecta
npmpopper.js1.16.1indirecta
npmposix-character-classes0.1.1indirecta
npmpossible-typed-array-names1.1.0indirecta
npmpostcss5.2.18indirecta
npmpostcss6.0.23indirecta
npmpostcss-calc5.3.1indirecta
npmpostcss-colormin2.2.2indirecta
npmpostcss-convert-values2.6.1indirecta
npmpostcss-discard-comments2.0.4indirecta
npmpostcss-discard-duplicates2.1.0indirecta
npmpostcss-discard-empty2.1.0indirecta
npmpostcss-discard-overridden0.1.1indirecta
npmpostcss-discard-unused2.2.3indirecta
npmpostcss-filter-plugins2.0.3indirecta
npmpostcss-merge-idents2.1.7indirecta
npmpostcss-merge-longhand2.0.2indirecta
npmpostcss-merge-rules2.1.2indirecta
npmpostcss-message-helpers2.0.0indirecta
npmpostcss-minify-font-values1.0.5indirecta
npmpostcss-minify-gradients1.0.5indirecta
npmpostcss-minify-params1.2.2indirecta
npmpostcss-minify-selectors2.1.1indirecta
npmpostcss-modules-extract-imports1.2.1indirecta
npmpostcss-modules-local-by-default1.2.0indirecta
npmpostcss-modules-scope1.1.0indirecta
npmpostcss-modules-values1.3.0indirecta
npmpostcss-normalize-charset1.1.1indirecta
npmpostcss-normalize-url3.0.8indirecta
npmpostcss-ordered-values2.2.3indirecta
npmpostcss-reduce-idents2.4.0indirecta
npmpostcss-reduce-initial1.0.1indirecta
npmpostcss-reduce-transforms1.0.4indirecta
npmpostcss-selector-parser2.2.3indirecta
npmpostcss-svgo2.1.6indirecta
npmpostcss-unique-selectors2.0.2indirecta
npmpostcss-value-parser3.3.1indirecta
npmpostcss-zindex2.2.0indirecta
npmprepend-http1.0.4indirecta
npmprocess0.11.10indirecta
npmprocess-nextick-args2.0.1indirecta
npmprop-types15.8.1indirecta
npmprop-types-extra1.1.1indirecta
npmprr1.0.1indirecta
npmpseudomap1.0.2indirecta
npmpublic-encrypt4.0.3indirecta
npmpunycode1.4.1indirecta
npmpunycode2.3.1indirecta
npmq1.5.1indirecta
npmqs6.14.1indirecta
npmquery-string4.3.4indirecta
npmquery-string7.0.1indirecta
npmquerystring-es30.2.1indirecta
npmrandombytes2.1.0indirecta
npmrandomfill1.0.4indirecta
npmreact17.0.2indirecta
npmreact-bootstrap1.6.8indirecta
npmreact-clientside-effect1.2.6indirecta
npmreact-colorful5.6.1indirecta
npmreact-dom17.0.2indirecta
npmreact-dropzone14.2.3indirecta
npmreact-fast-compare3.2.2indirecta
npmreact-focus-lock2.13.2indirecta
npmreact-focus-on3.9.3indirecta
npmreact-imask7.6.1indirecta
npmreact-intl6.6.8indirecta
npmreact-is16.13.1indirecta
npmreact-lifecycles-compat3.0.4indirecta
npmreact-loading-skeleton3.4.0indirecta
npmreact-overlays5.2.1indirecta
npmreact-popper2.3.0indirecta
npmreact-proptype-conditional-require1.0.4indirecta
npmreact-remove-scroll2.5.10indirecta
npmreact-remove-scroll-bar2.3.6indirecta
npmreact-responsive8.2.0indirecta
npmreact-style-singleton2.2.1indirecta
npmreact-table7.8.0indirecta
npmreact-transition-group4.4.5indirecta
npmread-pkg2.0.0indirecta
npmread-pkg-up2.0.0indirecta
npmreadable-stream1.1.14indirecta
npmreadable-stream2.3.8indirecta
npmreadable-stream3.6.2indirecta
npmreaddirp2.2.1indirecta
npmreaddirp3.6.0indirecta
npmreduce-css-calc1.3.0indirecta
npmreduce-function-call1.0.3indirecta
npmregenerator-runtime0.14.1indirecta
npmregex-not1.0.2indirecta
npmremove-trailing-separator1.1.0indirecta
npmrepeat-element1.1.4indirecta
npmrepeat-string1.6.1indirecta
npmrequire-directory2.1.1indirecta
npmrequire-main-filename1.0.1indirecta
npmresolve1.22.8indirecta
npmresolve-url0.2.1indirecta
npmrestore-cursor3.1.0indirecta
npmret0.1.15indirecta
npmright-align0.1.3indirecta
npmripemd1602.0.1indirecta
npmripemd1602.0.2indirecta
npmrun-async2.4.1indirecta
npmrxjs7.8.1indirecta
npmsafe-buffer5.1.2indirecta
npmsafe-buffer5.2.1indirecta
npmsafe-regex1.1.0indirecta
npmsafer-buffer2.1.2indirecta
npmsass1.78.0indirecta
npmsass-loader7.3.1indirecta
npmsax1.2.4indirecta
npmscheduler0.20.2indirecta
npmschema-utils0.3.0indirecta
npmsemver5.7.2indirecta
npmsemver6.3.1indirecta
npmset-blocking2.0.0indirecta
npmset-function-length1.2.2indirecta
npmset-value2.0.1indirecta
npmsetimmediate1.0.5indirecta
npmsha.js2.4.11indirecta
npmshallow-clone3.0.1indirecta
npmshallow-equal1.2.1indirecta
npmshebang-command1.2.0indirecta
npmshebang-regex1.0.0indirecta
npmside-channel1.1.0indirecta
npmside-channel-list1.0.0indirecta
npmside-channel-map1.0.1indirecta
npmside-channel-weakmap1.0.2indirecta
npmsignal-exit3.0.7indirecta
npmsnapdragon0.8.2indirecta
npmsnapdragon-node2.1.1indirecta
npmsnapdragon-util3.0.1indirecta
npmsort-keys1.1.2indirecta
npmsource-list-map2.0.1indirecta
npmsource-map0.5.7indirecta
npmsource-map0.6.1indirecta
npmsource-map-js1.2.0indirecta
npmsource-map-resolve0.5.3indirecta
npmsource-map-url0.4.1indirecta
npmspdx-correct3.2.0indirecta
npmspdx-exceptions2.5.0indirecta
npmspdx-expression-parse3.0.1indirecta
npmspdx-license-ids3.0.20indirecta
npmsplit-on-first1.1.0indirecta
npmsplit-string3.1.0indirecta
npmsprintf-js1.0.3indirecta
npmstatic-extend0.1.2indirecta
npmstream-browserify2.0.2indirecta
npmstream-http2.8.3indirecta
npmstrict-uri-encode1.1.0indirecta
npmstrict-uri-encode2.0.0indirecta
npmstring-width1.0.2indirecta
npmstring-width2.1.1indirecta
npmstring-width4.2.3indirecta
npmstring_decoder0.10.31indirecta
npmstring_decoder1.1.1indirecta
npmstring_decoder1.3.0indirecta
npmstrip-ansi3.0.1indirecta
npmstrip-ansi4.0.0indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-bom3.0.0indirecta
npmstrip-eof1.0.0indirecta
npmstrip-json-comments1.0.4indirecta
npmstyle-loader0.18.2indirecta
npmsupports-color2.0.0indirecta
npmsupports-color3.2.3indirecta
npmsupports-color4.5.0indirecta
npmsupports-color5.5.0indirecta
npmsupports-color7.2.0indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmsvgo0.7.2indirecta
npmtabbable5.3.3indirecta
npmtapable0.2.9indirecta
npmthrough2.3.8indirecta
npmtimers-browserify2.0.12indirecta
npmtmp0.0.33indirecta
npmto-arraybuffer1.0.1indirecta
npmto-buffer1.2.1indirecta
npmto-object-path0.3.0indirecta
npmto-regex3.0.2indirecta
npmto-regex-range2.1.1indirecta
npmto-regex-range5.0.1indirecta
npmtslib2.7.0indirecta
npmtty-browserify0.0.0indirecta
npmtype2.7.3indirecta
npmtype-fest0.21.3indirecta
npmtyped-array-buffer1.0.3indirecta
npmuglify-js2.8.29indirecta
npmuglify-to-browserify1.0.2indirecta
npmuglifyjs-webpack-plugin0.4.6indirecta
npmuncontrollable7.2.1indirecta
npmunion-value1.0.1indirecta
npmuniq1.0.1indirecta
npmuniqs2.0.0indirecta
npmunset-value1.0.0indirecta
npmupath1.2.0indirecta
npmuri-js4.4.1indirecta
npmurix0.1.0indirecta
npmurl0.11.4indirecta
npmuse3.1.1indirecta
npmuse-callback-ref1.3.2indirecta
npmuse-sidecar1.1.2indirecta
npmutil0.10.4indirecta
npmutil0.11.1indirecta
npmutil-deprecate1.0.2indirecta
npmuuid9.0.1indirecta
npmvalidate-npm-package-license3.0.4indirecta
npmvendors1.0.4indirecta
npmvm-browserify1.1.2indirecta
npmwarning4.0.3indirecta
npmwatchpack1.7.5indirecta
npmwatchpack-chokidar22.0.1indirecta
npmwcwidth1.0.1indirecta
npmwebpack3.12.0indirecta
npmwebpack-sources1.4.3indirecta
npmwhet.extend0.9.9indirecta
npmwhich1.3.1indirecta
npmwhich-module2.0.1indirecta
npmwhich-typed-array1.1.19indirecta
npmwindow-size0.1.0indirecta
npmwordwrap0.0.2indirecta
npmwrap-ansi2.1.0indirecta
npmwrap-ansi6.2.0indirecta
npmwrappy1.0.2indirecta
npmxtend4.0.2indirecta
npmy18n3.2.2indirecta
npmyallist2.1.2indirecta
npmyargs3.10.0indirecta
npmyargs8.0.2indirecta
npmyargs-parser7.0.0indirecta
PyPIaccessible-pygments0.0.5indirecta
PyPIacid-xblock0.4.1indirecta
PyPIaiohappyeyeballs2.7.1indirecta
PyPIaiohttp3.14.1indirecta
PyPIaiosignal1.4.0indirecta
PyPIalabaster1.0.0indirecta
PyPIamqp5.3.1indirecta
PyPIanalytics-python1.4.post1indirecta
PyPIaniso860110.0.1indirecta
PyPIannotated-doc0.0.4indirecta
PyPIannotated-types0.7.0indirecta
PyPIanyio4.14.1indirecta
PyPIappdirs1.4.4indirecta
PyPIasgiref3.11.1indirecta
PyPIasn1crypto1.5.1indirecta
PyPIastroid3.3.11indirecta
PyPIattrs26.1.0indirecta
PyPIbabel2.18.0indirecta
PyPIbackoff1.10.0indirecta
PyPIbcrypt5.0.0indirecta
PyPIbeautifulsoup44.15.0indirecta
PyPIbilliard4.2.4indirecta
PyPIbleachindirecta
PyPIbleach6.4.0indirecta
PyPIboto31.43.41indirecta
PyPIbotocore1.43.41indirecta
PyPIbracex3.0indirecta
PyPIbridgekeeper0.9indirecta
PyPIbuild1.5.0indirecta
PyPIcachecontrol0.14.4indirecta
PyPIcachetools7.1.4indirecta
PyPIcamel-converter5.1.0indirecta
PyPIcasbin-django-orm-adapter1.7.0indirecta
PyPIceleryindirecta
PyPIcelery5.6.3indirecta
PyPIcertifi2026.6.17indirecta
PyPIcffi2.1.0indirecta
PyPIchardet7.4.3indirecta
PyPIcharset-normalizer3.4.9indirecta
PyPIchem2.0.0indirecta
PyPIcheroot11.1.2indirecta
PyPIcherrypy18.10.0indirecta
PyPIclick8.4.2indirecta
PyPIclick-didyoumean0.3.1indirecta
PyPIclick-log0.4.0indirecta
PyPIclick-plugins1.1.1.2indirecta
PyPIclick-repl0.3.0indirecta
PyPIcode-annotationsindirecta
PyPIcode-annotations3.0.0indirecta
PyPIcodejail-includes2.0.0indirecta
PyPIcolorama0.4.6indirecta
PyPIcoverage7.15.2indirecta
PyPIcrowdsourcehinter-xblock1.0.1indirecta
PyPIcryptographyindirecta
PyPIcryptography49.0.0indirecta
PyPIcssutils2.15.0indirecta
PyPIddt1.3.1indirecta
PyPIdefusedxml0.7.1indirecta
PyPIdiff-cover10.3.0indirecta
PyPIdill0.4.1indirecta
PyPIdistlib0.4.3indirecta
PyPIdjangoindirecta
PyPIdjango5.2.16indirecta
PyPIdjango-appconf1.2.0indirecta
PyPIdjango-autocomplete-light5.0.0indirecta
PyPIdjango-cache-memoizeindirecta
PyPIdjango-cache-memoize0.2.1indirecta
PyPIdjango-celery-results2.6.0indirecta
PyPIdjango-classy-tags4.1.0indirecta
PyPIdjango-config-modelsindirecta
PyPIdjango-config-models3.0.0indirecta
PyPIdjango-cors-headers4.9.0indirecta
PyPIdjango-countriesindirecta
PyPIdjango-countries9.0.0indirecta
PyPIdjango-crumindirecta
PyPIdjango-crum0.7.9indirecta
PyPIdjango-fernet-fields-v2indirecta
PyPIdjango-fernet-fields-v20.9indirecta
PyPIdjango-filterindirecta
PyPIdjango-filter25.2indirecta
PyPIdjango-ipwareindirecta
PyPIdjango-ipware7.0.1indirecta
PyPIdjango-js-asset4.0.1indirecta
PyPIdjango-method-override1.0.4indirecta
PyPIdjango-mock-queries2.3.0indirecta
PyPIdjango-model-utilsindirecta
PyPIdjango-model-utils5.0.0indirecta
PyPIdjango-mptt0.18.0indirecta
PyPIdjango-multi-email-fieldindirecta
PyPIdjango-multi-email-field0.8.0indirecta
PyPIdjango-mysql4.19.0indirecta
PyPIdjango-oauth-toolkitindirecta
PyPIdjango-oauth-toolkit1.7.1indirecta
PyPIdjango-object-actionsindirecta
PyPIdjango-object-actions5.1.2indirecta
PyPIdjango-pipeline4.1.0indirecta
PyPIdjango-push-notifications3.3.0indirecta
PyPIdjango-ratelimit4.1.0indirecta
PyPIdjango-sekizai4.1.0indirecta
PyPIdjango-ses4.7.2indirecta
PyPIdjango-simple-historyindirecta
PyPIdjango-simple-history3.12.0indirecta
PyPIdjango-statici18n2.7.1indirecta
PyPIdjango-storages1.14.6indirecta
PyPIdjango-user-tasks4.0.0indirecta
PyPIdjango-waffleindirecta
PyPIdjango-waffle5.0.0indirecta
PyPIdjango-webpack-loader3.2.4indirecta
PyPIdjangorestframeworkindirecta
PyPIdjangorestframework3.17.1indirecta
PyPIdjangorestframework-xmlindirecta
PyPIdjangorestframework-xml2.0.0indirecta
PyPIdnspython2.8.0indirecta
PyPIdoc82.0.0indirecta
PyPIdocutils0.21.2indirecta
PyPIdone-xblock3.0.0indirecta
PyPIdrf-jwt1.19.2indirecta
PyPIdrf-spectacular0.30.0indirecta
PyPIdrf-yasg1.21.15indirecta
PyPIedx-ace1.15.0indirecta
PyPIedx-api-doc-tools3.0.0indirecta
PyPIedx-auth-backends5.0.0indirecta
PyPIedx-braze-client1.1.3indirecta
PyPIedx-bulk-grades2.0.0indirecta
PyPIedx-ccx-keys2.0.2indirecta
PyPIedx-celeryutils2.0.0indirecta
PyPIedx-codejail4.1.0indirecta
PyPIedx-completion5.0.0indirecta
PyPIedx-django-release-util1.5.0indirecta
PyPIedx-django-sites-extensions6.0.0indirecta
PyPIedx-django-utilsindirecta
PyPIedx-django-utils8.0.1indirecta
PyPIedx-drf-extensionsindirecta
PyPIedx-drf-extensions10.6.0indirecta
PyPIedx-enterprise8.3.0indirecta
PyPIedx-event-bus-kafka6.1.0indirecta
PyPIedx-event-bus-redis1.0.0indirecta
PyPIedx-i18n-tools2.0.0indirecta
PyPIedx-lint6.1.0indirecta
PyPIedx-milestones2.0.0indirecta
PyPIedx-opaque-keysindirecta
PyPIedx-opaque-keys4.0.0indirecta
PyPIedx-organizations8.0.0indirecta
PyPIedx-proctoring5.2.0indirecta
PyPIedx-rbacindirecta
PyPIedx-rbac3.0.0indirecta
PyPIedx-rest-api-clientindirecta
PyPIedx-rest-api-client7.0.0indirecta
PyPIedx-search5.0.2indirecta
PyPIedx-sga0.29.0indirecta
PyPIedx-submissions4.0.0indirecta
PyPIedx-tincan-py352.0.0indirecta
PyPIedx-togglesindirecta
PyPIedx-toggles6.0.0indirecta
PyPIedx-when4.0.0indirecta
PyPIedxval5.0.1indirecta
PyPIelasticsearch7.9.1indirecta
PyPIencutils1.0.0indirecta
PyPIenmerkar0.7.1indirecta
PyPIenmerkar-underscore2.4.0indirecta
PyPIenterprise-integrated-channels0.1.62indirecta
PyPIevent-tracking4.0.2indirecta
PyPIfactory-boyindirecta
PyPIfactory-boy3.3.3indirecta
PyPIfaker40.31.0indirecta
PyPIfastavro1.12.2indirecta
PyPIfilelock3.29.6indirecta
PyPIfilelock3.30.2indirecta
PyPIfirebase-admin7.5.0indirecta
PyPIfreezegun1.5.5indirecta
PyPIfrozenlist1.8.0indirecta
PyPIfs2.4.16indirecta
PyPIfs-s3fs1.1.1indirecta
PyPIgeoip25.2.0indirecta
PyPIglob20.7indirecta
PyPIgoogle-api-core2.31.0indirecta
PyPIgoogle-auth2.55.1indirecta
PyPIgoogle-cloud-core2.6.0indirecta
PyPIgoogle-cloud-firestore2.28.0indirecta
PyPIgoogle-cloud-storage3.12.0indirecta
PyPIgoogle-crc32c1.8.0indirecta
PyPIgoogle-resumable-media2.10.0indirecta
PyPIgoogleapis-common-protos1.75.0indirecta
PyPIgrpcio1.82.0indirecta
PyPIgrpcio-status1.82.0indirecta
PyPIgunicorn26.0.0indirecta
PyPIh110.16.0indirecta
PyPIh24.3.0indirecta
PyPIhelp-tokens4.0.0indirecta
PyPIhpack4.2.0indirecta
PyPIhtml5lib1.1indirecta
PyPIhttpcore1.0.9indirecta
PyPIhttpx0.28.1indirecta
PyPIhyperframe6.1.0indirecta
PyPIicalendar7.2.0indirecta
PyPIidna3.18indirecta
PyPIimagesize2.0.0indirecta
PyPIimportlib-metadata9.0.0indirecta
PyPIinflection0.5.1indirecta
PyPIiniconfig2.3.0indirecta
PyPIinvoke3.0.3indirecta
PyPIipaddress1.0.23indirecta
PyPIisodate0.7.2indirecta
PyPIisort6.1.0indirecta
PyPIjaraco-classes3.4.0indirecta
PyPIjaraco-collections5.2.1indirecta
PyPIjaraco-context6.1.2indirecta
PyPIjaraco-functools4.6.0indirecta
PyPIjaraco-text4.3.0indirecta
PyPIjasmine3.99.0indirecta
PyPIjasmine-core3.99.0indirecta
PyPIjinja22.11.3indirecta
PyPIjinja23.1.6indirecta
PyPIjmespath1.1.0indirecta
PyPIjoblib1.5.3indirecta
PyPIjsondiffindirecta
PyPIjsondiff2.2.1indirecta
PyPIjsonfieldindirecta
PyPIjsonfield3.2.0indirecta
PyPIjsonschema4.26.0indirecta
PyPIjsonschema-specifications2025.9.1indirecta
PyPIjwcrypto1.5.8indirecta
PyPIkombu5.6.2indirecta
PyPIlaboratory1.0.2indirecta
PyPIlazy2.0indirecta
PyPIlti-consumer-xblock11.3.1indirecta
PyPIlxmlindirecta
PyPIlxml5.3.2indirecta
PyPIlxml-html-clean0.4.4indirecta
PyPImailsnake1.6.4indirecta
PyPImako1.3.12indirecta
PyPImarkdown3.10.2indirecta
PyPImarkdown-it-py4.2.0indirecta
PyPImarkupsafe3.0.3indirecta
PyPImaxminddb3.1.1indirecta
PyPImccabe0.7.0indirecta
PyPImdurl0.1.2indirecta
PyPImeilisearch0.42.0indirecta
PyPImock5.2.0indirecta
PyPImodel-bakery1.24.0indirecta
PyPImongoengine0.29.3indirecta
PyPImonotonic1.6indirecta
PyPImore-itertools11.1.0indirecta
PyPImpmath1.3.0indirecta
PyPImsgpack1.2.1indirecta
PyPImultidict6.7.1indirecta
PyPImysqlclient2.2.8indirecta
PyPInh30.3.6indirecta
PyPInltk3.9.4indirecta
PyPInodeenv1.10.0indirecta
PyPInumpy1.26.4indirecta
PyPIoauthlib3.3.1indirecta
PyPIolxcleaner0.3.0indirecta
PyPIopenedx-atlasindirecta
PyPIopenedx-atlas0.7.0indirecta
PyPIopenedx-authz1.21.0indirecta
PyPIopenedx-calc5.0.0indirecta
PyPIopenedx-core1.1.0indirecta
PyPIopenedx-django-pyfs4.0.0indirecta
PyPIopenedx-django-require3.0.0indirecta
PyPIopenedx-django-wiki3.1.2indirecta
PyPIopenedx-eventsindirecta
PyPIopenedx-events11.2.0indirecta
PyPIopenedx-filtersindirecta
PyPIopenedx-filters3.7.0indirecta
PyPIopenedx-forum0.4.3indirecta
PyPIoptimizely-sdk5.5.0indirecta
PyPIora27.1.0indirecta
PyPIordereddict1.1indirecta
PyPIoutcome1.3.0.post0indirecta
PyPIpackaging26.2indirecta
PyPIparamikoindirecta
PyPIparamiko5.0.0indirecta
PyPIpath16.11.0indirecta
PyPIpath-pyindirecta
PyPIpath-py12.5.0indirecta
PyPIpgpyindirecta
PyPIpgpy0.6.0indirecta
PyPIpiexif1.1.3indirecta
PyPIpillowindirecta
PyPIpillow12.3.0indirecta
PyPIpip26.1.2indirecta
PyPIpip-tools7.5.3indirecta
PyPIpkginfo1.12.1.2indirecta
PyPIplatformdirs4.10.0indirecta
PyPIpluggy1.6.0indirecta
PyPIpolib1.2.0indirecta
PyPIportend3.2.1indirecta
PyPIprompt-toolkit3.0.52indirecta
PyPIpropcache0.5.2indirecta
PyPIproto-plus1.28.0indirecta
PyPIprotobuf7.35.1indirecta
PyPIpsutil7.2.2indirecta
PyPIpsycopg2-binary2.9.12indirecta
PyPIpyasn10.6.3indirecta
PyPIpyasn1-modules0.4.2indirecta
PyPIpycasbin2.8.0indirecta
PyPIpycodestyle2.14.0indirecta
PyPIpycountry26.2.16indirecta
PyPIpycparser3.0indirecta
PyPIpycryptodomex3.23.0indirecta
PyPIpydantic2.13.4indirecta
PyPIpydantic-core2.46.4indirecta
PyPIpydata-sphinx-theme0.16.1indirecta
PyPIpydocstyle6.3.0indirecta
PyPIpygments2.20.0indirecta
PyPIpyjwt2.13.0indirecta
PyPIpylatexenc2.10indirecta
PyPIpylintindirecta
PyPIpylint3.3.9indirecta
PyPIpylint-celery0.3indirecta
PyPIpylint-django2.8.0indirecta
PyPIpylint-plugin-utils0.9.0indirecta
PyPIpylti1p32.0.0indirecta
PyPIpymemcache4.0.0indirecta
PyPIpymongo4.4.0indirecta
PyPIpynacl1.6.2indirecta
PyPIpynliner0.8.0indirecta
PyPIpyopenssl26.3.0indirecta
PyPIpyparsing3.3.2indirecta
PyPIpyproject-api1.10.1indirecta
PyPIpyproject-hooks1.2.0indirecta
PyPIpyrsistent0.20.0indirecta
PyPIpysocks1.7.1indirecta
PyPIpysrt1.1.2indirecta
PyPIpytest9.1.1indirecta
PyPIpytest-cov7.1.0indirecta
PyPIpytest-django4.12.0indirecta
PyPIpython-dateutilindirecta
PyPIpython-dateutil2.9.0.post0indirecta
PyPIpython-discovery1.4.4indirecta
PyPIpython-ipware3.0.0indirecta
PyPIpython-slugify8.0.4indirecta
PyPIpython-swiftclient4.10.0indirecta
PyPIpython3-openid3.2.0indirecta
PyPIpython3-samlindirecta
PyPIpython3-saml1.16.0indirecta
PyPIpytzindirecta
PyPIpytz2026.2indirecta
PyPIpyuca1.2indirecta
PyPIpyyaml6.0.3indirecta
PyPIrandom21.0.2indirecta
PyPIreadme-renderer45.0indirecta
PyPIrecommender-xblock5.0.0indirecta
PyPIredis8.0.1indirecta
PyPIreferencing0.37.0indirecta
PyPIregex2026.6.28indirecta
PyPIrequestsindirecta
PyPIrequests2.34.2indirecta
PyPIrequests-oauthlib2.0.0indirecta
PyPIrequests-toolbelt1.0.0indirecta
PyPIresponses0.26.2indirecta
PyPIrestructuredtext-lint2.0.2indirecta
PyPIrich15.0.0indirecta
PyPIroman-numerals4.1.0indirecta
PyPIroman-numerals-py4.1.0indirecta
PyPIrpds-py2026.6.3indirecta
PyPIrulesindirecta
PyPIrules3.5indirecta
PyPIs3transfer0.19.0indirecta
PyPIsailthru-client2.2.3indirecta
PyPIscipy1.17.1indirecta
PyPIselenium4.46.0indirecta
PyPIsemantic-version2.10.0indirecta
PyPIsetuptools83.0.0indirecta
PyPIshapely2.1.2indirecta
PyPIshellingham1.5.4indirecta
PyPIsimpleeval1.0.7indirecta
PyPIsimplejson4.1.1indirecta
PyPIsix1.17.0indirecta
PyPIslumberindirecta
PyPIslumber0.7.1indirecta
PyPIsniffio1.3.1indirecta
PyPIsnowballstemmer3.1.1indirecta
PyPIsnowflake-connector-python4.6.0indirecta
PyPIsocial-auth-app-djangoindirecta
PyPIsocial-auth-app-django5.4.1indirecta
PyPIsocial-auth-core5.0.2indirecta
PyPIsorl-thumbnail13.0.0indirecta
PyPIsortedcontainers2.4.0indirecta
PyPIsoupsieve2.8.4indirecta
PyPIsphinxindirecta
PyPIsphinx8.2.3indirecta
PyPIsphinx-book-theme1.2.0indirecta
PyPIsphinxcontrib-applehelp2.0.0indirecta
PyPIsphinxcontrib-devhelp2.0.0indirecta
PyPIsphinxcontrib-htmlhelp2.1.0indirecta
PyPIsphinxcontrib-jsmath1.0.1indirecta
PyPIsphinxcontrib-qthelp2.0.0indirecta
PyPIsphinxcontrib-serializinghtml2.0.0indirecta
PyPIsqlparse0.5.5indirecta
PyPIstaff-graded-xblock4.0.1indirecta
PyPIstevedoreindirecta
PyPIstevedore5.9.0indirecta
PyPIsuper-csv5.0.0indirecta
PyPIsympy1.14.0indirecta
PyPItempora5.12.0indirecta
PyPItestfixturesindirecta
PyPItestfixtures12.2.0indirecta
PyPItext-unidecode1.3indirecta
PyPItincanindirecta
PyPItincan1.0.0indirecta
PyPItinycss21.5.1indirecta
PyPItomli-w1.2.0indirecta
PyPItomlkit0.15.0indirecta
PyPItomlkit0.15.1indirecta
PyPItox4.56.4indirecta
PyPItqdm4.68.4indirecta
PyPItrio0.33.0indirecta
PyPItrio-websocket0.12.2indirecta
PyPItwine1.11.0indirecta
PyPItyper0.27.0indirecta
PyPItyper-slim0.24.0indirecta
PyPItypesense2.0.0indirecta
PyPItyping-extensions4.16.0indirecta
PyPItyping-inspection0.4.2indirecta
PyPItzdata2026.2indirecta
PyPItzlocal5.4.4indirecta
PyPIunicodecsvindirecta
PyPIunicodecsv0.14.1indirecta
PyPIunicodeit0.7.5indirecta
PyPIuritemplate4.2.0indirecta
PyPIurllib32.7.0indirecta
PyPIvine5.1.0indirecta
PyPIvirtualenv21.6.1indirecta
PyPIvoluptuous0.16.0indirecta
PyPIwalrus0.9.8indirecta
PyPIwcmatch10.2.1indirecta
PyPIwcwidth0.8.2indirecta
PyPIwebencodings0.5.1indirecta
PyPIwebob1.8.10indirecta
PyPIwebsocket-client1.9.0indirecta
PyPIwheel0.47.0indirecta
PyPIwrapt2.2.2indirecta
PyPIwsproto1.3.2indirecta
PyPIxblock6.3.0indirecta
PyPIxblock-drag-and-drop-v25.0.6indirecta
PyPIxblock-google-drive0.8.2indirecta
PyPIxblock-poll1.16.1indirecta
PyPIxblocks-contrib0.17.0indirecta
PyPIxmlsec1.3.14indirecta
PyPIxss-utils1.0.0indirecta
PyPIyarl1.24.2indirecta
PyPIzc-lockfile4.0indirecta
PyPIzipp4.1.0indirecta
Avisos de dependencias 39

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 1041 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 39 tienen avisos conocidos, de los cuales 0 son directas. 50 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
cipher-base1.0.4indirectacrítica11.0.5
immutable4.3.7indirectacrítica35.1.8
sha.js2.4.11indirectacrítica12.4.12
brace-expansion1.1.11indirectaalta35.0.7
brace-expansion2.0.1indirectaalta35.0.7
braces2.3.2indirectaalta13.0.3
cross-spawn5.1.0indirectaalta17.0.5
elliptic6.6.1indirectaalta1
is-svg2.1.0indirectaalta24.3.0
jinja22.11.3indirectaalta83.1.6
js-yaml3.7.0indirectaalta54.3.0
json50.5.1indirectaalta12.2.2
lodash4.17.21indirectaalta34.18.0
lxml5.3.2indirectaalta26.1.0
lxml-html-clean0.4.4indirectaalta20.4.5
minimatch3.0.8indirectaalta310.2.3
minimatch3.1.2indirectaalta310.2.3
minimatch5.1.6indirectaalta310.2.3
nltk3.9.4indirectaalta33.10.0
picomatch2.3.1indirectaalta24.0.4
pyasn10.6.3indirectaalta50.6.4
tmp0.0.33indirectaalta20.2.6
uuid9.0.1indirectaalta113.0.1
@babel/runtime7.25.6indirectamoderada18.0.0-alpha.17
@babel/runtime-corejs37.25.6indirectamoderada18.0.0-alpha.17
ajv5.5.2indirectamoderada28.18.0
ajv6.12.6indirectamoderada18.18.0
bn.js4.12.0indirectamoderada15.2.3
bn.js5.2.1indirectamoderada15.2.3
color-string0.3.0indirectamoderada11.5.5
jquery2.2.4indirectamoderada44.4.0
mem1.1.0indirectamoderada14.0.0
micromatch3.1.10indirectamoderada14.0.8
postcss5.2.18indirectamoderada38.5.10
postcss6.0.23indirectamoderada38.5.10
pymongo4.4.0indirectamoderada24.6.3
qs6.14.1indirectamoderada26.15.2
social-auth-app-django5.4.1indirectamoderada25.6.0
yargs-parser7.0.0indirectamoderada118.1.1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 16200,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "HTML": 95485,
        "SCSS": 14714,
        "Shell": 12525,
        "Python": 5906124,
        "Makefile": 10624,
        "Dockerfile": 2741,
        "JavaScript": 36447
      },
      "pushed_at": "2026-07-23T12:40:35Z",
      "created_at": "2016-10-12T13:48:42Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T17:36:44Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "AGPL-3.0",
      "default_branch": "master",
      "license_spdx_raw": "AGPL-3.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://openedx.org",
      "name": "Open edX",
      "type": "Organization",
      "login": "openedx",
      "company": null,
      "location": null,
      "followers": 757,
      "avatar_url": "https://avatars.githubusercontent.com/u/40179672?v=4",
      "created_at": "2018-06-11T17:46:52Z",
      "is_verified": null,
      "public_repos": 185,
      "account_age_days": 2963
    },
    "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": [
        {
          "tag": "8.7.1",
          "kind": "patch",
          "published_at": "2026-07-23T12:40:35Z"
        },
        {
          "tag": "8.7.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:44:50Z"
        },
        {
          "tag": "8.6.0",
          "kind": "minor",
          "published_at": "2026-07-16T14:40:05Z"
        },
        {
          "tag": "8.5.0",
          "kind": "minor",
          "published_at": "2026-07-15T14:22:29Z"
        },
        {
          "tag": "8.4.0",
          "kind": "minor",
          "published_at": "2026-07-09T20:54:03Z"
        },
        {
          "tag": "8.3.0",
          "kind": "minor",
          "published_at": "2026-06-30T15:45:35Z"
        },
        {
          "tag": "v8.2.0",
          "kind": "minor",
          "published_at": "2026-06-29T13:52:16Z"
        },
        {
          "tag": "v8.1.2",
          "kind": "patch",
          "published_at": "2026-06-23T19:41:26Z"
        },
        {
          "tag": "v8.1.1",
          "kind": "patch",
          "published_at": "2026-06-22T18:55:19Z"
        },
        {
          "tag": "v8.1.0",
          "kind": "minor",
          "published_at": "2026-06-17T19:01:39Z"
        },
        {
          "tag": "8.0.19",
          "kind": "patch",
          "published_at": "2026-06-16T14:07:37Z"
        },
        {
          "tag": "8.0.18",
          "kind": "patch",
          "published_at": "2026-06-15T16:51:48Z"
        },
        {
          "tag": "8.0.17",
          "kind": "patch",
          "published_at": "2026-06-08T15:17:34Z"
        },
        {
          "tag": "8.0.16",
          "kind": "patch",
          "published_at": "2026-06-04T14:05:08Z"
        },
        {
          "tag": "v8.0.15",
          "kind": "patch",
          "published_at": "2026-05-20T21:14:35Z"
        },
        {
          "tag": "v8.0.14",
          "kind": "patch",
          "published_at": "2026-05-15T17:01:34Z"
        },
        {
          "tag": "v8.0.13",
          "kind": "patch",
          "published_at": "2026-05-14T23:09:13Z"
        },
        {
          "tag": "v8.0.12",
          "kind": "patch",
          "published_at": "2026-05-14T19:10:57Z"
        },
        {
          "tag": "8.0.10",
          "kind": "patch",
          "published_at": "2026-05-11T19:48:02Z"
        },
        {
          "tag": "8.0.9",
          "kind": "patch",
          "published_at": "2026-05-07T14:30:12Z"
        },
        {
          "tag": "v8.0.8",
          "kind": "patch",
          "published_at": "2026-05-06T21:39:00Z"
        },
        {
          "tag": "v8.0.6",
          "kind": "patch",
          "published_at": "2026-05-06T02:05:09Z"
        },
        {
          "tag": "v8.0.5",
          "kind": "patch",
          "published_at": "2026-05-05T21:35:59Z"
        },
        {
          "tag": "8.0.4",
          "kind": "patch",
          "published_at": "2026-05-05T13:38:09Z"
        },
        {
          "tag": "v8.0.3",
          "kind": "patch",
          "published_at": "2026-04-30T23:22:20Z"
        },
        {
          "tag": "v8.0.2",
          "kind": "patch",
          "published_at": "2026-04-29T16:02:37Z"
        },
        {
          "tag": "v8.0.1",
          "kind": "patch",
          "published_at": "2026-04-27T15:24:04Z"
        },
        {
          "tag": "v8.0.0",
          "kind": "major",
          "published_at": "2026-04-27T13:47:48Z"
        },
        {
          "tag": "v7.0.7",
          "kind": "patch",
          "published_at": "2026-04-24T15:44:30Z"
        },
        {
          "tag": "v7.0.6",
          "kind": "patch",
          "published_at": "2026-04-24T14:22:00Z"
        },
        {
          "tag": "v7.0.5",
          "kind": "patch",
          "published_at": "2026-04-24T14:25:22Z"
        },
        {
          "tag": "v7.0.4",
          "kind": "patch",
          "published_at": "2026-04-15T21:44:20Z"
        },
        {
          "tag": "7.0.3",
          "kind": "patch",
          "published_at": "2026-04-15T15:08:13Z"
        },
        {
          "tag": "7.0.2",
          "kind": "patch",
          "published_at": "2026-04-14T13:14:35Z"
        },
        {
          "tag": "v7.0.1",
          "kind": "patch",
          "published_at": "2026-04-14T00:27:26Z"
        },
        {
          "tag": "v7.0.0",
          "kind": "major",
          "published_at": "2026-04-07T14:38:05Z"
        },
        {
          "tag": "6.8.6",
          "kind": "patch",
          "published_at": "2026-04-07T13:10:55Z"
        },
        {
          "tag": "6.8.5",
          "kind": "patch",
          "published_at": "2026-04-06T17:45:10Z"
        },
        {
          "tag": "6.8.4",
          "kind": "patch",
          "published_at": "2026-03-31T13:43:37Z"
        },
        {
          "tag": "v6.8.3",
          "kind": "patch",
          "published_at": "2026-03-27T17:18:04Z"
        },
        {
          "tag": "6.8.2",
          "kind": "patch",
          "published_at": "2026-03-27T16:35:26Z"
        },
        {
          "tag": "v6.8.1",
          "kind": "patch",
          "published_at": "2026-03-26T16:49:06Z"
        },
        {
          "tag": "v6.8.0",
          "kind": "minor",
          "published_at": "2026-03-26T00:44:58Z"
        },
        {
          "tag": "6.7.0",
          "kind": "minor",
          "published_at": "2026-03-16T13:40:39Z"
        },
        {
          "tag": "6.6.9",
          "kind": "patch",
          "published_at": "2026-03-10T15:24:01Z"
        },
        {
          "tag": "6.6.8",
          "kind": "patch",
          "published_at": "2026-03-09T20:54:59Z"
        },
        {
          "tag": "v6.6.7",
          "kind": "patch",
          "published_at": "2026-03-04T17:00:51Z"
        },
        {
          "tag": "6.6.6",
          "kind": "patch",
          "published_at": "2026-02-26T23:28:04Z"
        },
        {
          "tag": "6.6.5",
          "kind": "patch",
          "published_at": "2026-02-24T16:39:39Z"
        },
        {
          "tag": "6.6.4",
          "kind": "patch",
          "published_at": "2026-02-04T16:27:55Z"
        },
        {
          "tag": "6.6.3",
          "kind": "patch",
          "published_at": "2026-02-03T21:31:04Z"
        },
        {
          "tag": "6.6.2",
          "kind": "patch",
          "published_at": "2026-01-20T21:40:29Z"
        },
        {
          "tag": "6.6.1",
          "kind": "patch",
          "published_at": "2026-01-09T11:00:53Z"
        },
        {
          "tag": "6.6.0",
          "kind": "minor",
          "published_at": "2026-01-09T09:12:55Z"
        },
        {
          "tag": "6.5.7",
          "kind": "patch",
          "published_at": "2025-11-28T09:19:11Z"
        },
        {
          "tag": "6.5.6",
          "kind": "patch",
          "published_at": "2025-11-28T06:51:50Z"
        },
        {
          "tag": "6.5.5",
          "kind": "patch",
          "published_at": "2025-11-24T17:21:50Z"
        },
        {
          "tag": "v6.5.2",
          "kind": "patch",
          "published_at": "2025-10-21T22:25:07Z"
        },
        {
          "tag": "6.5.1",
          "kind": "patch",
          "published_at": "2025-10-17T17:25:36Z"
        },
        {
          "tag": "6.5.0",
          "kind": "minor",
          "published_at": "2025-10-10T13:17:15Z"
        },
        {
          "tag": "6.4.5",
          "kind": "patch",
          "published_at": "2025-10-03T14:26:15Z"
        },
        {
          "tag": "6.4.4",
          "kind": "patch",
          "published_at": "2025-09-26T16:31:39Z"
        },
        {
          "tag": "6.4.3",
          "kind": "patch",
          "published_at": "2025-09-19T19:05:39Z"
        },
        {
          "tag": "6.4.2",
          "kind": "patch",
          "published_at": "2025-09-17T09:13:37Z"
        },
        {
          "tag": "6.4.1",
          "kind": "patch",
          "published_at": "2025-09-15T14:45:28Z"
        },
        {
          "tag": "6.4.0",
          "kind": "minor",
          "published_at": "2025-09-11T12:35:21Z"
        },
        {
          "tag": "6.3.4",
          "kind": "patch",
          "published_at": "2025-09-10T12:42:42Z"
        },
        {
          "tag": "6.3.2",
          "kind": "patch",
          "published_at": "2025-09-02T16:01:06Z"
        },
        {
          "tag": "6.3.0",
          "kind": "minor",
          "published_at": "2025-08-22T12:53:39Z"
        },
        {
          "tag": "6.2.18",
          "kind": "patch",
          "published_at": "2025-08-17T21:06:08Z"
        },
        {
          "tag": "6.2.17",
          "kind": "patch",
          "published_at": "2025-08-11T14:29:48Z"
        },
        {
          "tag": "6.2.16",
          "kind": "patch",
          "published_at": "2025-08-11T12:54:12Z"
        },
        {
          "tag": "6.2.15",
          "kind": "patch",
          "published_at": "2025-08-08T06:51:59Z"
        },
        {
          "tag": "6.2.14",
          "kind": "patch",
          "published_at": "2025-07-29T09:09:17Z"
        },
        {
          "tag": "6.2.13",
          "kind": "patch",
          "published_at": "2025-07-22T18:50:44Z"
        },
        {
          "tag": "6.2.12",
          "kind": "patch",
          "published_at": "2025-07-22T15:23:21Z"
        },
        {
          "tag": "6.2.11",
          "kind": "patch",
          "published_at": "2025-07-17T12:46:41Z"
        },
        {
          "tag": "6.2.10",
          "kind": "patch",
          "published_at": "2025-07-14T20:42:00Z"
        },
        {
          "tag": "6.2.8",
          "kind": "patch",
          "published_at": "2025-07-03T13:31:59Z"
        },
        {
          "tag": "6.2.7",
          "kind": "patch",
          "published_at": "2025-06-18T15:25:52Z"
        },
        {
          "tag": "6.2.6",
          "kind": "patch",
          "published_at": "2025-06-18T12:15:20Z"
        },
        {
          "tag": "6.2.5",
          "kind": "patch",
          "published_at": "2025-06-16T19:04:38Z"
        },
        {
          "tag": "6.2.4",
          "kind": "patch",
          "published_at": "2025-06-12T18:42:11Z"
        },
        {
          "tag": "6.2.3",
          "kind": "patch",
          "published_at": "2025-06-12T15:03:28Z"
        },
        {
          "tag": "6.2.2",
          "kind": "patch",
          "published_at": "2025-06-12T04:08:29Z"
        },
        {
          "tag": "6.2.1",
          "kind": "patch",
          "published_at": "2025-06-09T15:38:53Z"
        },
        {
          "tag": "6.2.0",
          "kind": "minor",
          "published_at": "2025-06-09T13:29:56Z"
        },
        {
          "tag": "6.1.0",
          "kind": "minor",
          "published_at": "2025-06-03T13:36:09Z"
        },
        {
          "tag": "6.0.4",
          "kind": "patch",
          "published_at": "2025-05-30T21:10:07Z"
        },
        {
          "tag": "6.0.3",
          "kind": "patch",
          "published_at": "2025-05-28T18:07:17Z"
        },
        {
          "tag": "6.0.2",
          "kind": "patch",
          "published_at": "2025-05-22T15:37:38Z"
        },
        {
          "tag": "6.0.1",
          "kind": "patch",
          "published_at": "2025-05-21T20:15:49Z"
        },
        {
          "tag": "5.13.7",
          "kind": "patch",
          "published_at": "2025-05-13T21:16:15Z"
        },
        {
          "tag": "5.13.6",
          "kind": "patch",
          "published_at": "2025-05-13T18:34:37Z"
        },
        {
          "tag": "5.13.4",
          "kind": "patch",
          "published_at": "2025-05-07T19:49:58Z"
        },
        {
          "tag": "5.13.3",
          "kind": "patch",
          "published_at": "2025-05-06T09:36:14Z"
        },
        {
          "tag": "5.13.2",
          "kind": "patch",
          "published_at": "2025-05-05T19:33:46Z"
        },
        {
          "tag": "5.13.1",
          "kind": "patch",
          "published_at": "2025-05-05T14:48:23Z"
        },
        {
          "tag": "5.13.0",
          "kind": "minor",
          "published_at": "2025-04-30T16:47:03Z"
        },
        {
          "tag": "5.12.10",
          "kind": "patch",
          "published_at": "2025-04-29T21:19:43Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e0637d0e92a7316ea013fdc2ba41fc69978ee8e1",
          "body": "…m (ENT-12073) (#2660)\n\nSoft-deleted groups remained in the database and collided with the\nunique_together constraint on (name, enterprise_customer), blocking\ncustomers from reusing a deleted group's name even though the group\nwas not visible in the admin. Groups are now hard deleted, relying on\nexi\n[…]\no clears out any legacy soft-deleted row for the same\nname/customer so pre-existing zombie rows don't block re-creation.\n\nCo-authored-by: sjasti-sonata-svg <sjasti-sonata-svg@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: hard delete EnterpriseGroup records instead of soft deleting the…",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-07-22T17:35:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9f7a843ae5d7f2cfbd890dd4ccf1f60b91cce60f",
          "body": "Updated boilerplate sections to match current conventions in\nedx/ai-devtools-internal docs/templates/.",
          "is_bot": false,
          "headline": "chore: sync AI instruction files from enterprise template",
          "author_name": "Alexander Dusenbery",
          "author_login": "iloveagent57",
          "committed_at": "2026-07-21T16:39:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a082ac9a9da28b883069ca14004921dd2671586",
          "body": null,
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2658)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-07-20T22:03:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81f138099fa8f019e50f9f6bad341129a754f670",
          "body": "…tainer-name\n\ntest: parameterize the name of the test container",
          "is_bot": false,
          "headline": "Merge pull request #2657 from openedx/pwnage101/parameterize-test-con…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-16T19:53:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e07f0fef4b9adac5c76d3f93fed02f6821b50098",
          "body": "This supports developer environments which might contain multiple clones\nof this project.  Otherwise, running tests using the test-shell\ncontainer would break on all but one clone since they would all try to\nuse the same container but a single container can only be mounted to one\nclone.\n\nThe solution is to parameterize the name of the test container so that\nit is sensitive to the absolute path of the clone.",
          "is_bot": false,
          "headline": "test: parameterize the name of the test container",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-16T19:11:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cebcb293516924de35b5c74e013a08d2115f09d5",
          "body": "…ints\n\ntest: remove common constraints from requirements",
          "is_bot": false,
          "headline": "Merge pull request #2656 from openedx/pwnage101/remove-common-constra…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-16T19:09:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8de1f8ff621bd705528173b823810a6198e2910",
          "body": "Using common constraints from edx-lint was always redundant with using a\nsnapshot of platform requirements.  It finally came to a head recently\nbecause platform diverged from common constraints, causing\nedx-enterprise requirements to start failing on conflicting package\nversions.\n\nThe solution is to simply stop using common constraints, it was never\nneeded.",
          "is_bot": false,
          "headline": "test: remove common constraints from requirements",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-16T18:48:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f67c5ba91773017a9ae89a736f5dfb8cdaab0453",
          "body": "… mode checkout (#2556)\n\nCo-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add CalculateEnterpriseDiscountedPrice pipeline step for course…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-16T15:43:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f9c4504e29f429505a7a8d5e45c774e24bb2d9d",
          "body": "Co-authored-by: sjasti-sonata-svg <sjasti-sonata-svg@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add toggle to enable people management (ENT-12049) (#2655)",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-07-16T14:35:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b6e4ffc3bffcc7ead13763206105950c507093b",
          "body": "…kup (#2554)\n\n* feat: add pluggable override for learner home enterprise customer lookup\n\nENT-11571\n\n* chore: quality fixes\n\n* docs: OVERRIDE_LEARNER_HOME_GET_ENTERPRISE_CUSTOMER TODO\n\n* chore: bump version\n\n* docs: Add type contract for get_enterprise_customer\n\n* chore: remove prev_fn fallback\n\n* c\n[…]\nNTERPRISE_CUSTOMER in settings\n\n* test: Remove unneeded _call\n\n* test: Organize patching mocked methods\n\n* chore: fix import issues\n\n---------\n\nCo-authored-by: Marlon Keating <mkeating@2u.com>, Claude",
          "is_bot": false,
          "headline": "feat: add pluggable override for learner home enterprise customer loo…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-15T14:16:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "681a2c71f9f98d8dd30613cdb597f92233e933d6",
          "body": "Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 6.1.0.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/0057852bfaa89a56745cba8c7296529d2fc3983\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump actions/cache from 4.3.0 to 6.1.0 (#2490)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:39:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab7f062e74d1fd12a3ff316556c4243bf342f187",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.5.2 to 6.4.0.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v2.5.2...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e)\n\n---\nupdated-dependencies:\n- dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump actions/setup-node from 2.5.2 to 6.4.0 (#2471)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:39:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aab00b1a1adde2ce7171c269906264661b234016",
          "body": "Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.6.0 to 6.3.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v5.6.0...ece7cb06caefa5fff74198d8649806c4678c61a1)\n\n---\nupdated-dependencies:\n- d\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump actions/setup-python from 5.6.0 to 6.3.0 (#2455)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:38:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d27880ea4844d0f672f265052129fa9b9ea30136",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4.3.1 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4.3.1...9c091bb21b7c1c\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump actions/checkout from 4.3.1 to 7.0.0 (#2482)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T16:06:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a045f9ce4beab8a1354eaccac0d889d8e4b23239",
          "body": "…nrollmentStarted filter (#2553)\n\nCo-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add EnterpriseEnrollmentViewProcessor pipeline step for CourseE…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-07-09T20:52:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ed796e7fafd486f888c015b11b12e85f4ac0537",
          "body": "Adds USE_ALGOLIA_INDEX_V2 WaffleFlag (default False) to toggles.py and\nexposes it as use_algolia_index_v2 in the enterprise_features() response.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add enterprise.use_algolia_index_v2 waffle flag",
          "author_name": "Alexander Dusenbery",
          "author_login": "iloveagent57",
          "committed_at": "2026-06-30T15:44:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f1190599cdbc5b850a2c57437f944f28cec4bdd2",
          "body": "* feat: add DiscountEligibilityStep pipeline step\n\nAdds enterprise/filters/discounts.py with a DiscountEligibilityStep\nPipelineStep implementation that marks enterprise learners as ineligible\nfor LMS-controlled course discounts, using the new\nDiscountEligibilityCheckRequested openedx-filter.\n\nENT-11\n[…]\nmove unneeded mocks\n\n* chore: update openedx-filters to 3.7.0\n\n* chore: isort fix\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>\nCo-authored-by: Marlon Keating <mkeating@2u.com>",
          "is_bot": false,
          "headline": "feat: add DiscountEligibilityStep pipeline step (#2545)",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-26T16:07:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5790cabf9ab7e9ae19aefc095f765c5eff6b92f",
          "body": "fix: change enable_credit_and_industry_pathways default to true",
          "is_bot": false,
          "headline": "Merge pull request #2644 from ssrijaindukuri-sonata/isrija/ENT-11897-new",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-23T19:40:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "282dfe5f332dc15cc25dffa61dec0a5bd587032f",
          "body": null,
          "is_bot": false,
          "headline": "fix: change enable_credit_and_industry_pathways default to true",
          "author_name": "Srija Indukuri",
          "author_login": "ssrijaindukuri-sonata",
          "committed_at": "2026-06-23T11:09:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f23b5bdbb32441c0ed5fa11a45f483d70627ac6a",
          "body": "refactor: reorganize helper functions into model-dependent and model-independent to break an import cycle",
          "is_bot": false,
          "headline": "Merge pull request #2645 from openedx/pwnage101/ENT-11544-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-22T18:54:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a775c9a6d9676ad4628f2f25675fd4c6ec54e8e",
          "body": "…independent to break an import cycle\n\nENT-11544",
          "is_bot": false,
          "headline": "refactor: reorganize helper functions into model-dependent and model-…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-22T18:53:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "119af87228908a0cb029dd79babee9f9ef17379f",
          "body": "feat: add several courseware access related pipeline steps",
          "is_bot": false,
          "headline": "Merge pull request #2548 from openedx/pwnage101/ENT-11544",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-17T19:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5047687bd48aadba0c4049db70f34b187d3b6399",
          "body": "This commit replaces most enterprise-specific logic serving the purpose\nof conditionally blocking courseware access.\n\nEnterprise steps added:\n- EnterpriseStartDateAccessFailureStep supplies an enterprise-specific start-date error for enterprise learners.\n- ActiveEnterpriseCheckStep denies access whe\n[…]\nd:\n- DataSharingConsentRedirectStep supplies a redirect URL to collect data sharing consent when it is required.\n- DataSharingConsentCourseAccessStep denies access when consent is required.\n\nENT-11544",
          "is_bot": false,
          "headline": "feat: add courseware-access pipeline steps",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-17T18:45:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ecc601e1f44107de22dc09a2ece60535c2f0713",
          "body": "…omer model (#2642)",
          "is_bot": false,
          "headline": "feat: add enable_credit_and_industry_pathways field to EnterpriseCust…",
          "author_name": "Srija Indukuri",
          "author_login": "ssrijaindukuri-sonata",
          "committed_at": "2026-06-16T14:04:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38219d3c692a3692ec3cf06671e97f3b3019176f",
          "body": "…-2026-06-12\n\nchore: change the cron schedule to run on friday instead of monday",
          "is_bot": false,
          "headline": "Merge pull request #2640 from openedx/chore/patch-python-requirements…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-15T22:54:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2de3b5817dc61cb824efa8866a09b008f8584193",
          "body": null,
          "is_bot": false,
          "headline": "chore: change the cron schedule to run on friday instead of monday",
          "author_name": "Kira Miller",
          "author_login": "kiram15",
          "committed_at": "2026-06-15T22:53:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15fb69dd5750c58889fda5e04fd20fc5445b7e8d",
          "body": null,
          "is_bot": false,
          "headline": "fix: downgrade notification banner log level (#2639)",
          "author_name": "Brian Citro",
          "author_login": "bcitro",
          "committed_at": "2026-06-15T16:49:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fae82b5d498ab3e8a272ee0c578928f2e10dfe41",
          "body": "Co-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2636)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-06-11T21:29:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a32f6efeb593d1758af6473045c586807a39824",
          "body": "…ed-devstack\n\ntest: refactor the seed_enterprise_devstack_data command to be more composable",
          "is_bot": false,
          "headline": "Merge pull request #2637 from openedx/pwnage101/ENT-11544-refactor-se…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-11T00:19:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afa23d3f9ecea7e0518700b99d87d875f7d35cd2",
          "body": "…omposable\n\nThe essential logic of this old management command was migrated into a\ncentral `devstack_api.py` library, then that library used to compose two\nnew management commands:\n\n- create_enterprise_linked_learner\n- enroll_enterprise_learner\n\nIn turn, all three enterprise management commands were\n[…]\nst-ENT-11544.sh` which is the master\nprovision script for integration testing ENT-11544, but also serves as\na demonstration of the power of composing these new management commands\ntogether.\n\nENT-11544",
          "is_bot": false,
          "headline": "test: refactor the seed_enterprise_devstack_data command to be more c…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-11T00:04:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64975913b9e7aacd76f27705131c7a33a82e2d40",
          "body": "This was motivated due to a bug in an older version of\ncodecov/codecov-action which breaks GPG signature validation, but I went\nahead and just refreshed all of them for good measure.",
          "is_bot": false,
          "headline": "chore: upgrade all github actions in CI.",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-06-10T23:45:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1a15fbf616f94fcc9372e562528525cbcba2182",
          "body": "…mes as ISO-8601 (#2635)",
          "is_bot": false,
          "headline": "fix: format integration and SSO configuration created/modified dateti…",
          "author_name": "Brian Citro",
          "author_login": "bcitro",
          "committed_at": "2026-06-08T15:15:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67cbfdf47acd6a33deb400bbea1eb47812dc4f4d",
          "body": null,
          "is_bot": false,
          "headline": "feat: Removing the feature flag able to learner and admin tab",
          "author_name": "rgopalrao-sonata-png",
          "author_login": "rgopalrao-sonata-png",
          "committed_at": "2026-06-03T13:48:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0113e45b683a5c72efa2e17a482806159029b6d7",
          "body": "chore: pin GitHub Actions workflows to full commit SHAs",
          "is_bot": false,
          "headline": "Merge pull request #2621 from irfanuddinahmad/pin-actions-to-sha",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-05-31T19:05:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fc0e55621ccd0f23ff32a60afd3691fe67c5f81",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into pin-actions-to-sha",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-05-30T15:14:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68e111ca4e3e40dd1833bd495019973c818f3cec",
          "body": "Updated boilerplate sections to match current conventions in\nedx/ai-devtools-internal docs/templates/.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync AI instruction files from enterprise template",
          "author_name": "Alexander Dusenbery",
          "author_login": "iloveagent57",
          "committed_at": "2026-05-26T20:12:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "68d471e1418df71be87e7ee72735668524b917c7",
          "body": "… (#2543)\n\nCo-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add GradeEventContextEnricher pipeline step for grade analytics…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-20T16:55:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc859ee71b76c7ee37277f8c96ba61572bd9c5fd",
          "body": null,
          "is_bot": false,
          "headline": "chore: pin GitHub Actions workflows to full commit SHAs",
          "author_name": "irfanuddinahmad",
          "author_login": "irfanuddinahmad",
          "committed_at": "2026-05-19T04:42:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2216a75a359249f51a6481ee8878c9a0f1a5acc6",
          "body": "feat: Add basic logging for all enterprise filter pipeline steps",
          "is_bot": false,
          "headline": "Merge pull request #2619 from openedx/pwnage101/ENT-11830-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-15T16:55:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5cc15dfde87103f31e9c7008306df8a04a49f99",
          "body": "This will help tremendously for stage/prod testing.\n\nENT-11830",
          "is_bot": false,
          "headline": "feat: Add basic logging for all enterprise filter pipeline steps",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-14T23:34:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ff87613b5478a953acabd572758ebd5e5457089",
          "body": "feat: own OPEN_EDX_FILTERS_CONFIG injection",
          "is_bot": false,
          "headline": "Merge pull request #2617 from openedx/pwnage101/ENT-11830",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-14T23:08:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1d293dea6de2a3e153d7ed8bb522f7fb8a5d6e2",
          "body": "ENT-11830",
          "is_bot": false,
          "headline": "chore: update the read_only_fields pipeline to NOT fail silently.",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-14T23:07:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce2d4d202a04f5d41b6b48dfa9ad3b9ea65a752c",
          "body": "… plugin_settings\n\nENT-11830",
          "is_bot": false,
          "headline": "feat: own OPEN_EDX_FILTERS_CONFIG injection in enterprise and consent…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-14T23:07:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f44f6614bbafeb06b0d129ebf1dacc1bc710420",
          "body": "fix: dashboard filter step now obtains the request via crum instead of filter context",
          "is_bot": false,
          "headline": "Merge pull request #2618 from openedx/pwnage101/ENT-11569-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-14T16:45:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6cefa461e18bb8850a0973bfa796960ba22c81fe",
          "body": "…f filter context\n\nIt was always bogus to expect the request to be in the context object\nbecause it was never in there to begin with, and nothing changed to add\nit in there.  It would be weird to put the request in there anyway, so\njust use crum instead.\n\nENT-11569",
          "is_bot": false,
          "headline": "fix: dashboard filter step now obtains the request via crum instead o…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-13T23:59:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "306ca8ab665f811efa5e877891fbfcebc55e17a2",
          "body": "…file data (ENT-11811) (#2614)",
          "is_bot": false,
          "headline": "fix(admin-members): display blank name for pending invite without pro…",
          "author_name": "rgopalrao-sonata-png",
          "author_login": "rgopalrao-sonata-png",
          "committed_at": "2026-05-13T12:13:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ebd27317668a5d3ebb1815a77532787cc2c0c51",
          "body": "…ourses in admin enrollment viewset (#2608)",
          "is_bot": false,
          "headline": "feat: account for data sharing consent settings and mark unenrolled c…",
          "author_name": "Brian Citro",
          "author_login": "bcitro",
          "committed_at": "2026-05-11T19:41:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0132d9ab1e0d14becb9eec892214859b9d6c24cf",
          "body": null,
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2616)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-05-11T15:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c347e1678c590c943804ab57f2115822c450faf1",
          "body": "* chore: Upgrade Python requirements\n\n* fix: catch new UnsupportedAlgorithm exception for cryptography 47.0.0\n\n---------\n\nCo-authored-by: Marlon Keating <mkeating@2u.com>",
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2607)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-05-11T13:44:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ff6cbf31708836392ce8b9c58d6a686cff0d1b2",
          "body": "Active admins now resolve name via auth_userprofile.name (the canonical\nedX full-name field) before falling back to first_name and username, so\nthe column shows a real name instead of being blank for users whose\nauth_user.first_name is empty.\n\nPending admins previously returned name=None because the\n[…]\nhe two production-only branches are\nmarked # pragma: no cover to match the codebase's convention for code\npaths that only run when student is installed.\n\nBumps version to 8.0.9 with a changelog entry.",
          "is_bot": false,
          "headline": "fix: populate name in Invite Admin list view (ENT-11811)",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-05-07T14:17:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e26c2507fc95fdd6f532e05f41d7bf411aed2c90",
          "body": "feat: extra logging for enterprise email association pipeline step",
          "is_bot": false,
          "headline": "Merge pull request #2612 from openedx/pwnage101/ENT-11566-4",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-06T21:09:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a20f3f0cd93ecadae0806beb965fe4e95fdd109",
          "body": "ENT-11566",
          "is_bot": false,
          "headline": "feat: extra logging for enterprise email association pipeline step",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-06T21:08:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84844fd07823559721556e091211e5ff9ec3ec7",
          "body": "…ation (#2555)\n\n* feat: add pluggable override for course home progress username obfuscation\n\nENT-11572\n\n* fix: pylint disable formatting\n\n* chore: isort fix\n\n* chore: bump version\n\n* chore: address pr comments\n\n* test: add coverage\n\n* test: bring override in line with team conventions\n\n* chore: fix pylint issues\n\n---------\n\nCo-authored-by: Marlon Keating <mkeating@2u.com>",
          "is_bot": false,
          "headline": "feat: add pluggable override for course home progress username obfusc…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-06T21:02:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "585472a7aaf3a804d0d7dfe60d9fd0df9233e66a",
          "body": "fix: gate plugin_settings on ENABLE_ENTERPRISE_INTEGRATION",
          "is_bot": false,
          "headline": "Merge pull request #2610 from openedx/pwnage101/ENT-11566-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-06T02:04:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c0c0b0b05e5f5eb45e27260da105b6068e4fede",
          "body": "The main behavior change:\n- Skip social auth pipeline injection when enterprise integration\n  is disabled.\n  - This fixes a broken CMS test in the edxapp which expects NO\n    enterprise steps in the social auth pipeline.\n\nOther changes rolled into this commit to simplify testing and prep for\nmaking \n[…]\nlugins()) to prevent future duplication of test settings\n  once we migrate enterprise-specific settings into this repo.\n\nENT-11566\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: gate plugin_settings on ENABLE_ENTERPRISE_INTEGRATION",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-06T01:40:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6d917c555ffc9e6a69e40f8a779877c9d70b73b0",
          "body": "feat: add TPA pipeline step and signal handler for enterprise",
          "is_bot": false,
          "headline": "Merge pull request #2549 from openedx/pwnage101/ENT-11566",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-05T21:28:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2201424404210c9292510385f2594e405ae11d64",
          "body": "John Nagro originally leveraged Keycloak to provide an identity provider\nfor testing SAML-based third party auth (TPA) in edx devstack, but it\nwas not broadly usable because it lacked scripts for keycloak\nprovisioning, LMS TPA provisioning, and other necessary scaffolding to\ntie it all together.\n\nENT-11566",
          "is_bot": false,
          "headline": "test: Enhance and formalize keycloak-powered local IdP capabilities",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-05T16:53:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa4c066028545bf200f7ed588b25e8d85e4b8d41",
          "body": "- Add enterprise_associate_by_email pipeline step, replacing the removed pipeline step from platform.\n- Add signal handler to unlink enterprise users from an IdP (signal: SAMLAccountDisconnected)\n- Inject all enterprise-specific TPA pipeline steps via plugin_settings.\n\nENT-11566\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add TPA pipeline step and social auth disconnect handler",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-05-05T16:53:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ad3528ef3e49e2b37bcbceae2883b5c0d4fc9e8d",
          "body": "Documents the operator permission expansion from the previous commit.",
          "is_bot": false,
          "headline": "chore: bump version to 8.0.4 and add changelog entry",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-05-05T13:37:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b481f82158797484375798bb89bf0501d58aaef7",
          "body": "ENT-11806: extend the MANAGE_ENTERPRISE_CUSTOMER_ADMINS_PERMISSION rule\nto also recognize the enterprise_openedx_operator system role from the\nJWT, so operators can invite and delete enterprise admins alongside the\nexisting provisioning and enterprise_admin roles.",
          "is_bot": false,
          "headline": "feat: grant enterprise_openedx_operator the manage admins permission",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-05-05T13:37:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeb1da0197e8a242ada8259d70cb1bb942e9d175",
          "body": "* fix: remove consent_required_courses and associated code\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* chore: version bump\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: remove consent_required_courses and associated code (#2606)",
          "author_name": "Kira Miller",
          "author_login": "kiram15",
          "committed_at": "2026-04-30T23:21:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c131267a1e6d8533a60e7c0521bfb325cdc4257",
          "body": null,
          "is_bot": false,
          "headline": "feat: add ai pathways operator waffle flag (#2605)",
          "author_name": "Hamzah Ullah",
          "author_login": "brobro10000",
          "committed_at": "2026-04-29T16:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da9aa23a03d0c52ead1362bc4044fa4ef501f893",
          "body": "…d filter (#2552)\n\nCo-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add DashboardContextEnricher pipeline step for student dashboar…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-27T15:22:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3ec86d10a8d6de171d83f5f9bf1636fb866d015",
          "body": "…nector\n\nfeat!: Drop management commands that depend on the snowflake connector",
          "is_bot": false,
          "headline": "Merge pull request #2476 from openedx/feanil/drop_python_snoflake_con…",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-27T13:47:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99365ea08bc594300b109c5a4007cbb99bdca10c",
          "body": null,
          "is_bot": false,
          "headline": "docs: Bump version and add CHANGELOG entry.",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T16:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "879512e8ba99406c7feb0ac2b1e90694cd531fa8",
          "body": null,
          "is_bot": false,
          "headline": "chore: Run `make upgrade`",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T16:11:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8fbc2004bfd3e8f80c997a74b9556be15d135c6",
          "body": null,
          "is_bot": false,
          "headline": "build: Drop the snowflake-connector-python dependency.",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T16:11:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19ba40a7db1191b966db95e0d0d48d0eb2a068e4",
          "body": "This work is a part of https://github.com/openedx/edx-enterprise/issues/2467\n\nBREAKING CHANGE: The monthly_impact_report and nudge_dormant_enrolled_enterprise_learners\nmanagement commands will no longer be available here. If you need these\ncommands, you can copy them to a plugin that is not required to be\ninstalled in the edx-platform",
          "is_bot": false,
          "headline": "feat!: Drop management commands that depend on the snowflake connector",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T16:11:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9247f0ebb6a9047c52cc8d6694629b99e417235b",
          "body": null,
          "is_bot": false,
          "headline": "fix: update social media links for email compatibility (#2602)",
          "author_name": "Hamzah Ullah",
          "author_login": "brobro10000",
          "committed_at": "2026-04-24T15:43:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "501205224e47821098c4e69e1db869a34d4aab26",
          "body": "fix: block SSRF in SAML metadata URL fetching (GHSA-64cv-vxpr-j6vc)",
          "is_bot": false,
          "headline": "Merge commit from fork",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T14:20:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "735668602d6da041fcdfb0db29d6eebc5120065d",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump version to 7.0.6 and update changelog",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T14:19:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a22ee74e1aefc2fd403b472ab4ec5ef261edb3ab",
          "body": "Adds `validate_saml_metadata_url()` and `SAMLMetadataURLError` to\nsaml_utils.py. Enforces HTTPS and blocks loopback, link-local (including\ncloud metadata endpoints like 169.254.169.254), and reserved IP addresses.\nRFC 1918 private ranges are blocked by default and can be opted out via\n`SAML_METADATA\n[…]\natform venv and does not depend on it directly.\n\nAddresses: https://github.com/openedx/edx-enterprise/security/advisories/GHSA-64cv-vxpr-j6vc\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: block SSRF in SAML metadata URL fetching (GHSA-64cv-vxpr-j6vc)",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-24T14:18:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b422d0ff61f80f11a783adf3c02a4e4fc53fb29",
          "body": null,
          "is_bot": false,
          "headline": "fix: Rolebased access for customer admin",
          "author_name": "rgopalrao-sonata-png",
          "author_login": "rgopalrao-sonata-png",
          "committed_at": "2026-04-24T13:56:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daa14a2588777132798d8aba2e6bdaf05a850a41",
          "body": null,
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2600)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-04-20T16:19:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79fb87cf493d82a6f702a2110ad5500b55d108d4",
          "body": "fix: [SAML Views] Accept an \"enterprise_customer_uuid\" query param (instead of \"enterprise-id\")",
          "is_bot": false,
          "headline": "Merge pull request #2598 from openedx/pwnage101/ENT-11567-hotfix1",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-15T21:43:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9280147c4f904261e27c333f9a23b6ad534bc277",
          "body": "…nstead of \"enterprise-id\")\n\nSAML views should accept \"enterprise_customer_uuid\", not \"enterprise-id\".\n\nThere was a typo in the original docstring which claimed the correct\nparam name was \"enterprise-id\" which was over-indexed by Claude Code as\na source of truth, causing it to recommend a behavior c\n[…]\ning myself and over-indexed on it.\n\nThe original docstring typo: https://github.com/openedx/openedx-platform/blob/01dc3c84/common/djangoapps/third_party_auth/samlproviderconfig/views.py#L33\n\nENT-11567",
          "is_bot": false,
          "headline": "fix: [SAML Views] Accept an \"enterprise_customer_uuid\" query param (i…",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-15T21:12:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e0ed1cd8ff4ec5f21668adfb417b9d09918509a",
          "body": "…220)\n\nFollow-up to #2594. The model default for enable_academies was changed\nfrom False to True in that PR, but no corresponding migration was\ngenerated. This adds the AlterField migration that Django's\nmakemigrations produces for that change.",
          "is_bot": false,
          "headline": "feat: add migration for enable_academies default value change (ENT-11…",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-04-15T15:07:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7704577d2765dd52260928b3d8d6440687fd5aea",
          "body": null,
          "is_bot": false,
          "headline": "feat: add changelog entry",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-04-14T13:13:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05389de57acf3863ba75924023f670e1e333a4d5",
          "body": "…earch (ENT-11220)",
          "is_bot": false,
          "headline": "feat: enable academies by default for all enterprise customers with s…",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-04-14T13:13:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35a295f4faaa96238e636c7ee8b8085efda53817",
          "body": "feat: add SAML provider admin viewsets to enterprise API",
          "is_bot": false,
          "headline": "Merge pull request #2550 from openedx/pwnage101/ENT-11567",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-14T00:25:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f07994413d11b294328e71150c1b558f277310ce",
          "body": "- Push provider_id filtering into database via current_set().filter()\n  instead of iterating all configs in Python.\n- Scope SAMLProviderData detail lookups by entity_id to prevent\n  cross-enterprise data access by guessing IDs.\n\nENT-11567\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use database-side filtering and enterprise-scoped detail queries",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-14T00:06:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2fd6aa8cb7bc327663cf081433419253729e7475",
          "body": "- Add SAMLProviderConfigViewSet and SAMLProviderDataViewSet to the\n  enterprise API with permission checks and comprehensive tests.\n- Add get_saml_identity_provider and get_identity_providers utility\n  views for enterprise SAML operations.\n- Migrate SAML utility functions (get_saml_provider_data_by_\n[…]\n get_saml_provider_configuration) from third_party_auth to enterprise,\n  with comprehensive tests using django-mock-queries MockSet.\n\nENT-11567\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add SAML provider admin API and migrate SAML utilities",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-08T20:58:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b9cb84090f69ffc95f6c39efc84782a4f43033fe",
          "body": "chore: drop Python 3.11 support",
          "is_bot": false,
          "headline": "Merge pull request #2561 from openedx/feanil/drop_python_3.11",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-07T14:37:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a20a0a21dd20c7234aa053a75cecb6eb1c90805",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump version to 7.0.0",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-07T14:17:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9cc3926021e7c300f79f1bc682eea0ce5d8b4346",
          "body": null,
          "is_bot": false,
          "headline": "chore: update requirements for Python 3.12",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-07T14:16:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bd79527c56d65fd30565ccb210fc5c01ab1ab86",
          "body": "Removes Python 3.11 from CI matrix, migration check workflows, publish\nworkflow, tox envlist, and setup.py classifiers.\n\nPart of https://github.com/openedx/public-engineering/issues/499",
          "is_bot": false,
          "headline": "chore: drop Python 3.11 support",
          "author_name": "Feanil Patel",
          "author_login": "feanil",
          "committed_at": "2026-04-07T14:16:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "984cf32b7459a5d84d733b8477a5ec7e525309cd",
          "body": null,
          "is_bot": false,
          "headline": "fix: add changelog entry and update init for inactive admin user fix",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-04-07T13:09:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f8689a785ce6113423dbd6b94131e6632896a80",
          "body": "- Removed auth_user.is_active=True filter from admin listing query\n  so inactive admin users appear in the admin list\n- Added EnterpriseCustomerUser.active=True and enterprise_admin role\n  check via SystemWideEnterpriseUserRoleAssignment\n- Changed hard delete to log warning instead of returning 404 when\n  admin role assignment is missing\n- Updated tests accordingly",
          "is_bot": false,
          "headline": "fix: allow deletion of inactive admin users (ENT-11714)",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-04-07T13:09:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd0c3696d0516f4b56887307a5e2418f03d4f432",
          "body": "Co-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add AccountSettingsReadOnlyFieldsStep pipeline step (#2544)",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-04-06T17:43:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b03a0b8b1b9d467ad349349715464be790bce6d6",
          "body": null,
          "is_bot": false,
          "headline": "chore: increment version to 6.8.4",
          "author_name": "Alexander Dusenbery",
          "author_login": "iloveagent57",
          "committed_at": "2026-03-31T13:43:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2085c62d1145935420efc241123e764dec6ba685",
          "body": "- Hard-delete EnterpriseCustomerAdmin record after removing admin role\n- Remove role-based filtering from get_existing_admin_emails()\n- Update test assertions to verify ECA record is permanently deleted",
          "is_bot": false,
          "headline": "feat: implement hard delete for enterprise customer admin (ENT-11264)",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-03-31T13:37:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a53755d4effb223d9c379d22374cb51273bc5ffc",
          "body": null,
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2587)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-03-30T19:07:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "369480ca7535b5a544f0d2d7e0104259b08ac9df",
          "body": "fix: Move settings reads out of AppConfig, into consumers",
          "is_bot": false,
          "headline": "Merge pull request #2586 from openedx/pwnage101/ENT-11663-3",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-03-27T17:16:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "120a621a84a9b059252a7a797117b34e1f66eede",
          "body": "There's a chance that the `enterprise.apps` module might be imported\nbefore `lms.envs.production`, which would result in the EnterpriseConfig\nAppConfig caching outdated settings. Mitigate this by forcing consumers\nof these cached settings to just read `djang.conf.settings` directly.\n\nENT-11663",
          "is_bot": false,
          "headline": "fix: Move settings reads out of AppConfig, into consumers",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-03-27T17:00:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5df55a6de743685ff0da9003d6cbae4c51ba7b4",
          "body": null,
          "is_bot": false,
          "headline": "chore: increment init.py version to 6.8.2",
          "author_name": "Alexander Dusenbery",
          "author_login": "iloveagent57",
          "committed_at": "2026-03-27T16:34:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9443dbec72774390ebefb96ee244bfb0971e5143",
          "body": "- Add reminder task with configurable delay, cadence, and max reminders\n- Add reminder_sent_at field to PendingEnterpriseCustomerAdminUser for explicit tracking\n- Add management command send_pending_admin_reminders\n- Add Braze campaign constants for reminder emails\n- Rename pending_invite to pending\n[…]\ntasks and tests\n- Consolidate tests using ddt.data parameterization\n- Fix function signature style per edx Python guidelines\n- Bump version to 6.8.1\n\nCo-authored-by: Alex Dusenbery <adusenbery@2u.com>",
          "is_bot": false,
          "headline": "feat: add admin invite reminder emails (ENT-11581) (#2573)",
          "author_name": "sjasti-sonata-svg",
          "author_login": "sjasti-sonata-svg",
          "committed_at": "2026-03-27T15:56:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eff55b39c9c03b3456ac99c8d9a50bb2c766f497",
          "body": null,
          "is_bot": false,
          "headline": "chore: Upgrade Python requirements (#2583)",
          "author_name": "edX requirements bot",
          "author_login": "edx-requirements-bot",
          "committed_at": "2026-03-27T02:28:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53f98ce59b389369f638a0cc964bda1f78a2b4bc",
          "body": "fix: also register enterprise and consent as CMS plugins",
          "is_bot": false,
          "headline": "Merge pull request #2579 from openedx/pwnage101/ENT-11663-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-03-26T16:46:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aee7170b253988acbfc46811ce717e78e07061b0",
          "body": "Somehow I missed testing with CMS on openedx-platform, and as a result\nthe CMS unit tests failed due to platform code which imports\n`enterprise.models` without having the enterprise app installed.  It's\nweird because CMS doesn't actually use anything from enterprise, but\nmakes sense because CMS and LMS share the same source code.\n\nENT-11663",
          "is_bot": false,
          "headline": "fix: also register enterprise and consent as CMS plugins",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-03-26T16:46:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45f60f4a7a7320a23db2d64207e26151701d6f6c",
          "body": "fix: Update outdated & broken .coveragerc syntax",
          "is_bot": false,
          "headline": "Merge pull request #2580 from openedx/pwnage101/fix-coverage-2",
          "author_name": "Troy Sankey",
          "author_login": "pwnage101",
          "committed_at": "2026-03-26T16:44:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 187,
      "latest_release_at": "2026-07-23T12:40:35Z",
      "latest_release_tag": "8.7.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 42,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": true,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "edx-enterprise",
          "exists": true,
          "license": "AGPL-3.0-or-later",
          "keywords": [
            "Django",
            "edx",
            "Development Status :: 3 - Alpha",
            "Framework :: Django",
            "Framework :: Django :: 5.2",
            "Intended Audience :: Developers",
            "Natural Language :: English",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.12"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/edx-enterprise/",
          "is_deprecated": false,
          "latest_version": "8.7.1",
          "repository_url": "https://github.com/openedx/edx-enterprise",
          "versions_count": 1461,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2016-10-24T16:01:54.192120Z",
          "latest_published_at": "2026-07-23T12:42:25.632489Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 71,
      "stars": 50,
      "watchers": 74,
      "fork_history": {
        "days": [
          {
            "date": "2016-11-09",
            "count": 1
          },
          {
            "date": "2016-11-21",
            "count": 1
          },
          {
            "date": "2017-03-16",
            "count": 1
          },
          {
            "date": "2017-04-04",
            "count": 1
          },
          {
            "date": "2017-04-29",
            "count": 1
          },
          {
            "date": "2017-06-22",
            "count": 1
          },
          {
            "date": "2017-10-01",
            "count": 1
          },
          {
            "date": "2017-11-08",
            "count": 1
          },
          {
            "date": "2018-05-02",
            "count": 1
          },
          {
            "date": "2018-06-29",
            "count": 1
          },
          {
            "date": "2018-08-09",
            "count": 1
          },
          {
            "date": "2018-08-27",
            "count": 1
          },
          {
            "date": "2018-09-01",
            "count": 1
          },
          {
            "date": "2018-12-12",
            "count": 1
          },
          {
            "date": "2019-01-28",
            "count": 1
          },
          {
            "date": "2019-02-25",
            "count": 1
          },
          {
            "date": "2019-03-11",
            "count": 1
          },
          {
            "date": "2019-09-26",
            "count": 1
          },
          {
            "date": "2020-05-05",
            "count": 1
          },
          {
            "date": "2020-05-21",
            "count": 1
          },
          {
            "date": "2020-05-28",
            "count": 1
          },
          {
            "date": "2020-06-09",
            "count": 1
          },
          {
            "date": "2020-09-15",
            "count": 1
          },
          {
            "date": "2020-11-23",
            "count": 1
          },
          {
            "date": "2020-12-08",
            "count": 1
          },
          {
            "date": "2021-05-26",
            "count": 1
          },
          {
            "date": "2021-06-14",
            "count": 1
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-12-17",
            "count": 1
          },
          {
            "date": "2022-03-01",
            "count": 1
          },
          {
            "date": "2022-04-12",
            "count": 1
          },
          {
            "date": "2022-04-27",
            "count": 1
          },
          {
            "date": "2022-09-12",
            "count": 1
          },
          {
            "date": "2023-04-29",
            "count": 2
          },
          {
            "date": "2023-06-26",
            "count": 1
          },
          {
            "date": "2023-10-20",
            "count": 1
          },
          {
            "date": "2024-01-20",
            "count": 1
          },
          {
            "date": "2024-03-20",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-06-09",
            "count": 1
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-07-02",
            "count": 1
          },
          {
            "date": "2024-08-30",
            "count": 1
          },
          {
            "date": "2024-09-03",
            "count": 1
          },
          {
            "date": "2024-11-04",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 1
          },
          {
            "date": "2025-04-18",
            "count": 1
          },
          {
            "date": "2025-05-21",
            "count": 1
          },
          {
            "date": "2025-06-11",
            "count": 1
          },
          {
            "date": "2025-08-19",
            "count": 1
          },
          {
            "date": "2025-10-03",
            "count": 1
          },
          {
            "date": "2025-10-20",
            "count": 1
          },
          {
            "date": "2025-10-23",
            "count": 1
          },
          {
            "date": "2025-11-13",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 1
          },
          {
            "date": "2026-02-03",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-03-24",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-26",
            "count": 1
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 71,
        "total_forks": 71
      },
      "star_history": null,
      "open_issues_and_prs": 78
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "docs/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 458598,
      "source_files_sampled": 1039,
      "oversized_source_files": 13,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        ".ralph/AGENT.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 7063
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "setup.cfg",
        "setup.py"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "cipher-base",
            "direct": false,
            "version": "1.0.4",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-cpq7-6gpm-g9rc"
            ],
            "fixed_version": "1.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 335
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.3.7",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-v56q-mh7h-f735",
              "GHSA-wf6x-7x77-mvgw",
              "GHSA-xvcm-6775-5m9r"
            ],
            "fixed_version": "5.1.8",
            "advisory_count": 3,
            "oldest_advisory_days": 140
          },
          {
            "name": "sha.js",
            "direct": false,
            "version": "2.4.11",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-95m3-7q98-8xr5"
            ],
            "fixed_version": "2.4.12",
            "advisory_count": 1,
            "oldest_advisory_days": 335
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "name": "braces",
            "direct": false,
            "version": "2.3.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-grv7-fg5c-xmjg"
            ],
            "fixed_version": "3.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 799
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "5.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3xgq-45jj-v275"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 622
          },
          {
            "name": "elliptic",
            "direct": false,
            "version": "6.6.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-848j-6mx2-7j84"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 195
          },
          {
            "name": "is-svg",
            "direct": false,
            "version": "2.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-7r28-3m3f-r2pr",
              "GHSA-r8j5-h5cx-65gg"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 1951
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "2.11.3",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.8,
            "advisory_ids": [
              "GHSA-cpwx-vrp4-4pq7",
              "GHSA-h5c8-rqwp-cp95",
              "GHSA-h75v-3vvj-5mfj",
              "GHSA-q2x7-8rv6-6q7h",
              "PYSEC-2026-1471",
              "PYSEC-2026-1473",
              "PYSEC-2026-1474",
              "PYSEC-2026-1475"
            ],
            "fixed_version": "3.1.6",
            "advisory_count": 8,
            "oldest_advisory_days": 923
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.7.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2pr6-76vf-7546",
              "GHSA-52cp-r559-cp3m",
              "GHSA-8j8c-7jfh-h6hx",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 5,
            "oldest_advisory_days": 2605
          },
          {
            "name": "json5",
            "direct": false,
            "version": "0.5.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.1,
            "advisory_ids": [
              "GHSA-9c47-m6qq-7p4h"
            ],
            "fixed_version": "2.2.2",
            "advisory_count": 1,
            "oldest_advisory_days": 1302
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc",
              "GHSA-xxjr-mmjv-4gpg"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 3,
            "oldest_advisory_days": 182
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "5.3.2",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-vfmq-68hx-4jfw",
              "PYSEC-2026-87"
            ],
            "fixed_version": "6.1.0",
            "advisory_count": 2,
            "oldest_advisory_days": 92
          },
          {
            "name": "lxml-html-clean",
            "direct": false,
            "version": "0.4.4",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-4jhm-jv67-739f",
              "PYSEC-2026-2614"
            ],
            "fixed_version": "0.4.5",
            "advisory_count": 2,
            "oldest_advisory_days": 14
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.0.8",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 154
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 154
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 154
          },
          {
            "name": "nltk",
            "direct": false,
            "version": "3.9.4",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-p4gq-832x-fm9v",
              "PYSEC-2026-2078",
              "PYSEC-2026-597"
            ],
            "fixed_version": "3.10.0",
            "advisory_count": 3,
            "oldest_advisory_days": 36
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 119
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.3",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-8ppf-4f7h-5ppj",
              "GHSA-hm4w-wwcw-mr6r",
              "PYSEC-2026-3455",
              "PYSEC-2026-3456",
              "PYSEC-2026-3457"
            ],
            "fixed_version": "0.6.4",
            "advisory_count": 5,
            "oldest_advisory_days": 8
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.0.33",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52f5-9888-hmc6",
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 2,
            "oldest_advisory_days": 350
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "9.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 91
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.25.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-968p-4wvh-cqc8"
            ],
            "fixed_version": "8.0.0-alpha.17",
            "advisory_count": 1,
            "oldest_advisory_days": 498
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.25.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-968p-4wvh-cqc8"
            ],
            "fixed_version": "8.0.0-alpha.17",
            "advisory_count": 1,
            "oldest_advisory_days": 498
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "5.5.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.6,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6",
              "GHSA-v88g-cgmw-v5xw"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 2,
            "oldest_advisory_days": 1623
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 161
          },
          {
            "name": "bn.js",
            "direct": false,
            "version": "4.12.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-378v-28hj-76wf"
            ],
            "fixed_version": "5.2.3",
            "advisory_count": 1,
            "oldest_advisory_days": 153
          },
          {
            "name": "bn.js",
            "direct": false,
            "version": "5.2.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-378v-28hj-76wf"
            ],
            "fixed_version": "5.2.3",
            "advisory_count": 1,
            "oldest_advisory_days": 153
          },
          {
            "name": "color-string",
            "direct": false,
            "version": "0.3.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-257v-vj4p-3w2h"
            ],
            "fixed_version": "1.5.5",
            "advisory_count": 1,
            "oldest_advisory_days": 1857
          },
          {
            "name": "jquery",
            "direct": false,
            "version": "2.2.4",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.9,
            "advisory_ids": [
              "GHSA-6c3j-c64m-qhgq",
              "GHSA-gxr4-xjj5-5px2",
              "GHSA-jpcq-cgw6-v4j6",
              "GHSA-rmxg-73gg-4p98"
            ],
            "fixed_version": "4.4.0",
            "advisory_count": 4,
            "oldest_advisory_days": 3103
          },
          {
            "name": "mem",
            "direct": false,
            "version": "1.1.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.1,
            "advisory_ids": [
              "GHSA-4xcv-9jjx-gfj3"
            ],
            "fixed_version": "4.0.0",
            "advisory_count": 1,
            "oldest_advisory_days": 2574
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "3.1.10",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-952p-6rrq-rcjv"
            ],
            "fixed_version": "4.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 799
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "5.2.18",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.1,
            "advisory_ids": [
              "GHSA-566m-qj78-rww5",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93"
            ],
            "fixed_version": "8.5.10",
            "advisory_count": 3,
            "oldest_advisory_days": 1658
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "6.0.23",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.1,
            "advisory_ids": [
              "GHSA-566m-qj78-rww5",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93"
            ],
            "fixed_version": "8.5.10",
            "advisory_count": 3,
            "oldest_advisory_days": 1658
          },
          {
            "name": "pymongo",
            "direct": false,
            "version": "4.4.0",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 4.7,
            "advisory_ids": [
              "GHSA-m87m-mmvp-v9qm",
              "PYSEC-2026-1826"
            ],
            "fixed_version": "4.6.3",
            "advisory_count": 2,
            "oldest_advisory_days": 777
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.14.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-q8mj-m7cp-5q26",
              "GHSA-w7fw-mjwx-w883"
            ],
            "fixed_version": "6.15.2",
            "advisory_count": 2,
            "oldest_advisory_days": 160
          },
          {
            "name": "social-auth-app-django",
            "direct": false,
            "version": "5.4.1",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 4.8,
            "advisory_ids": [
              "GHSA-wv4w-6qv2-qqfg",
              "PYSEC-2026-1932"
            ],
            "fixed_version": "5.6.0",
            "advisory_count": 2,
            "oldest_advisory_days": 286
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "7.0.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-p9pc-299p-vxgp"
            ],
            "fixed_version": "18.1.1",
            "advisory_count": 1,
            "oldest_advisory_days": 2147
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 20,
          "critical": 3,
          "moderate": 16
        },
        "advisory_count": 86,
        "affected_count": 39,
        "assessed_count": 1041,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 50,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "@edx/brand",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "npm:@edx/brand-edx.org@^1.3.0"
        },
        {
          "name": "@openedx/paragon",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^21.5.7"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@openedx/paragon",
            "direct": true,
            "version": "21.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.25.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.25.6",
            "ecosystem": "npm"
          },
          {
            "name": "@edx/brand-edx.org",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/ecma402-abstract",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/fast-memoize",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/icu-messageformat-parser",
            "direct": false,
            "version": "2.7.8",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/icu-skeleton-parser",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl",
            "direct": false,
            "version": "2.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl-displaynames",
            "direct": false,
            "version": "6.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl-listformat",
            "direct": false,
            "version": "7.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl-localematcher",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@fortawesome/fontawesome-common-types",
            "direct": false,
            "version": "6.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@fortawesome/fontawesome-svg-core",
            "direct": false,
            "version": "6.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@fortawesome/react-fontawesome",
            "direct": false,
            "version": "0.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "@popperjs/core",
            "direct": false,
            "version": "2.11.8",
            "ecosystem": "npm"
          },
          {
            "name": "@restart/context",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@restart/hooks",
            "direct": false,
            "version": "0.4.16",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hoist-non-react-statics",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/invariant",
            "direct": false,
            "version": "2.2.37",
            "ecosystem": "npm"
          },
          {
            "name": "@types/prop-types",
            "direct": false,
            "version": "15.7.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "18.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-transition-group",
            "direct": false,
            "version": "4.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/warning",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "4.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "5.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-dynamic-import",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "5.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "align-text",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "alphanum-sort",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "3.0.1",
            "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": "anymatch",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "aria-hidden",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "arr-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-flatten",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-union",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-unique",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "asn1.js",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "assert",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "assert-ok",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "assign-symbols",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "2.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "async-each",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "atob",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "attr-accept",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "6.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "babel-code-frame",
            "direct": false,
            "version": "6.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "big.js",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "bindings",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bn.js",
            "direct": false,
            "version": "4.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "bn.js",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "brorand",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-aes",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-cipher",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-des",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-rsa",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-sign",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-zlib",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "1.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "4.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-xor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "builtin-status-codes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cache-base",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-api",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-db",
            "direct": false,
            "version": "1.0.30001657",
            "ecosystem": "npm"
          },
          {
            "name": "cast-array",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "center-align",
            "direct": false,
            "version": "0.1.3",
            "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.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "child_process",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "cipher-base",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "clap",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "class-utils",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "classnames",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-deep",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "coa",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "code-point-at",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "collection-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color",
            "direct": false,
            "version": "0.11.4",
            "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": "color-string",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "colormin",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "colors",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "component-emitter",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "console-browserify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "constants-browserify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "copy-descriptor",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "core-js-pure",
            "direct": false,
            "version": "3.38.1",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "create-ecdh",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "create-hash",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "create-hash",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-hmac",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-browserify",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-color-names",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "css-loader",
            "direct": false,
            "version": "0.28.11",
            "ecosystem": "npm"
          },
          {
            "name": "css-mediaquery",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-selector-tokenizer",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "csso",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "d",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "date-now",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decode-uri-component",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "defined",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "des.js",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node-es",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diffie-hellman",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dom-helpers",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "domain-browser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "elliptic",
            "direct": false,
            "version": "6.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "email-prop-type",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "email-validator",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emojis-list",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es5-ext",
            "direct": false,
            "version": "0.10.64",
            "ecosystem": "npm"
          },
          {
            "name": "es6-iterator",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "es6-map",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "es6-set",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "es6-symbol",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "es6-weak-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escope",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "esniff",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "event-emitter",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "evp_bytestokey",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expand-brackets",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ext",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "external-editor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "extglob",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "extract-text-webpack-plugin",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastparse",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-selector",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-uri-to-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "filter-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatten",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "focus-lock",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "font-awesome",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "for-in",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fragment-cache",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-nonce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-value",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "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": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hash-base",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hash-base",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "hash.js",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hmac-drbg",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hoist-non-react-statics",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "html-comment-regex",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "3.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "https-browserify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hyphenate-style-name",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "icss-replace-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "icss-utils",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "imask",
            "direct": false,
            "version": "7.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "indexes-of",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "inquirer",
            "direct": false,
            "version": "8.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "intl-messageformat",
            "direct": false,
            "version": "10.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "invariant",
            "direct": false,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "invert-kv",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute-url",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-accessor-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "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-glob",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-svg",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jasmine-ajax",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jasmine-jquery",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": false,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "js-base64",
            "direct": false,
            "version": "2.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jshint",
            "direct": false,
            "version": "2.13.6",
            "ecosystem": "npm"
          },
          {
            "name": "json-loader",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lazy-cache",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "lcid",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "load-json-file",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-runner",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-utils",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniq",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniqby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "longest",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "loose-envify",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "mailto-link",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "map-cache",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "map-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "matchmediaquery",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "math-expression-evaluator",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "md5.js",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "mem",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "memory-fs",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "miller-rabin",
            "direct": false,
            "version": "4.0.1",
            "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": "minimalistic-assert",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimalistic-crypto-utils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mixin-deep",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanomatch",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "next-tick",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-libs-browser",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "num2fraction",
            "direct": false,
            "version": "1.2.2",
            "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": "object-copy",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-filter",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-visit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "object.pick",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "os-browserify",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "os-locale",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "os-tmpdir",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-finally",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pako",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "parse-asn1",
            "direct": false,
            "version": "5.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pascalcase",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-browserify",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-dirname",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pbkdf2",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "popper.js",
            "direct": false,
            "version": "1.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "posix-character-classes",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "5.2.18",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "6.0.23",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-calc",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-colormin",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-convert-values",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-comments",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-duplicates",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-empty",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-overridden",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-unused",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-filter-plugins",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-idents",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-longhand",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-rules",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-message-helpers",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-font-values",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-gradients",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-params",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-selectors",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-extract-imports",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-local-by-default",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-scope",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-values",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-charset",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-url",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-ordered-values",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-idents",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-initial",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-transforms",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-svgo",
            "direct": false,
            "version": "2.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-unique-selectors",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-zindex",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prepend-http",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "process",
            "direct": false,
            "version": "0.11.10",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types",
            "direct": false,
            "version": "15.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types-extra",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "prr",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pseudomap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "public-encrypt",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "q",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "query-string",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "query-string",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "querystring-es3",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "randomfill",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": false,
            "version": "17.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-bootstrap",
            "direct": false,
            "version": "1.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-clientside-effect",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "react-colorful",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": false,
            "version": "17.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-dropzone",
            "direct": false,
            "version": "14.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "react-fast-compare",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-focus-lock",
            "direct": false,
            "version": "2.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-focus-on",
            "direct": false,
            "version": "3.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "react-imask",
            "direct": false,
            "version": "7.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-intl",
            "direct": false,
            "version": "6.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "16.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-lifecycles-compat",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "react-loading-skeleton",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-overlays",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-popper",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-proptype-conditional-require",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll",
            "direct": false,
            "version": "2.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll-bar",
            "direct": false,
            "version": "2.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "react-responsive",
            "direct": false,
            "version": "8.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-style-singleton",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-table",
            "direct": false,
            "version": "7.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-transition-group",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "1.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "reduce-css-calc",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "reduce-function-call",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "regenerator-runtime",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "regex-not",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "remove-trailing-separator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-element",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-url",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ret",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "right-align",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ripemd160",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ripemd160",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-async",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.1",
            "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": "safe-regex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.78.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-loader",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-value",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "setimmediate",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sha.js",
            "direct": false,
            "version": "2.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "shallow-clone",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "shallow-equal",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-node",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-util",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sort-keys",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "source-list-map",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-resolve",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-url",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "split-on-first",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "split-string",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "static-extend",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-browserify",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-http",
            "direct": false,
            "version": "2.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "strict-uri-encode",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strict-uri-encode",
            "direct": false,
            "version": "2.0.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.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "0.10.31",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "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.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-eof",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "style-loader",
            "direct": false,
            "version": "0.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "4.5.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": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "tabbable",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "timers-browserify",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "to-arraybuffer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-buffer",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-object-path",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "tty-browserify",
            "direct": false,
            "version": "0.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "type",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "2.8.29",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-to-browserify",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uglifyjs-webpack-plugin",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "npm"
          },
          {
            "name": "uncontrollable",
            "direct": false,
            "version": "7.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "union-value",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "uniq",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "uniqs",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unset-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "urix",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "url",
            "direct": false,
            "version": "0.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "use",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "use-callback-ref",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "use-sidecar",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "util",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "util",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vendors",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vm-browserify",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "warning",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "1.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack-chokidar2",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "whet.extend",
            "direct": false,
            "version": "0.9.9",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "window-size",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "accessible-pygments",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "acid-xblock",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohappyeyeballs",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohttp",
            "direct": false,
            "version": "3.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiosignal",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "alabaster",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "amqp",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "analytics-python",
            "direct": false,
            "version": "1.4.post1",
            "ecosystem": "pypi"
          },
          {
            "name": "aniso8601",
            "direct": false,
            "version": "10.0.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": "anyio",
            "direct": false,
            "version": "4.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "appdirs",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "asgiref",
            "direct": false,
            "version": "3.11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "asn1crypto",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "astroid",
            "direct": false,
            "version": "3.3.11",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backoff",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "5.0.0",
            "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": null,
            "ecosystem": "pypi"
          },
          {
            "name": "bleach",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "boto3",
            "direct": false,
            "version": "1.43.41",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore",
            "direct": false,
            "version": "1.43.41",
            "ecosystem": "pypi"
          },
          {
            "name": "bracex",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bridgekeeper",
            "direct": false,
            "version": "0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cachecontrol",
            "direct": false,
            "version": "0.14.4",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "camel-converter",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "casbin-django-orm-adapter",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "celery",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "celery",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.6.17",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "7.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "chem",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cheroot",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "cherrypy",
            "direct": false,
            "version": "18.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "click-didyoumean",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click-log",
            "direct": false,
            "version": "0.4.0",
            "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": "code-annotations",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "code-annotations",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "codejail-includes",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.15.2",
            "ecosystem": "pypi"
          },
          {
            "name": "crowdsourcehinter-xblock",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cssutils",
            "direct": false,
            "version": "2.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ddt",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "diff-cover",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dill",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "django",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django",
            "direct": false,
            "version": "5.2.16",
            "ecosystem": "pypi"
          },
          {
            "name": "django-appconf",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-autocomplete-light",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-cache-memoize",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-cache-memoize",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-celery-results",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-classy-tags",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-config-models",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-config-models",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-cors-headers",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-countries",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-countries",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-crum",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-crum",
            "direct": false,
            "version": "0.7.9",
            "ecosystem": "pypi"
          },
          {
            "name": "django-fernet-fields-v2",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-fernet-fields-v2",
            "direct": false,
            "version": "0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "django-filter",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-filter",
            "direct": false,
            "version": "25.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-ipware",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-ipware",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-js-asset",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-method-override",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "django-mock-queries",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-model-utils",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-model-utils",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-mptt",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-multi-email-field",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-multi-email-field",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-mysql",
            "direct": false,
            "version": "4.19.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-oauth-toolkit",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-oauth-toolkit",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-object-actions",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-object-actions",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-pipeline",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-push-notifications",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-ratelimit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-sekizai",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-ses",
            "direct": false,
            "version": "4.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-simple-history",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-simple-history",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-statici18n",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-storages",
            "direct": false,
            "version": "1.14.6",
            "ecosystem": "pypi"
          },
          {
            "name": "django-user-tasks",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-waffle",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "django-waffle",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-webpack-loader",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "djangorestframework",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "djangorestframework",
            "direct": false,
            "version": "3.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "djangorestframework-xml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "djangorestframework-xml",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dnspython",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "doc8",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "done-xblock",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "drf-jwt",
            "direct": false,
            "version": "1.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "drf-spectacular",
            "direct": false,
            "version": "0.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "drf-yasg",
            "direct": false,
            "version": "1.21.15",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-ace",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-api-doc-tools",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-auth-backends",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-braze-client",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-bulk-grades",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-ccx-keys",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-celeryutils",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-codejail",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-completion",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-django-release-util",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-django-sites-extensions",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-django-utils",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-django-utils",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-drf-extensions",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-drf-extensions",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-enterprise",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-event-bus-kafka",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-event-bus-redis",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-i18n-tools",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-lint",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-milestones",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-opaque-keys",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-opaque-keys",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-organizations",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-proctoring",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-rbac",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-rbac",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-rest-api-client",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-rest-api-client",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-search",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-sga",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-submissions",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-tincan-py35",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-toggles",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "edx-toggles",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edx-when",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "edxval",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "elasticsearch",
            "direct": false,
            "version": "7.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "encutils",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "enmerkar",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "enmerkar-underscore",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "enterprise-integrated-channels",
            "direct": false,
            "version": "0.1.62",
            "ecosystem": "pypi"
          },
          {
            "name": "event-tracking",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "factory-boy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "factory-boy",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "faker",
            "direct": false,
            "version": "40.31.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastavro",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.29.6",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.30.2",
            "ecosystem": "pypi"
          },
          {
            "name": "firebase-admin",
            "direct": false,
            "version": "7.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "freezegun",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "frozenlist",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fs",
            "direct": false,
            "version": "2.4.16",
            "ecosystem": "pypi"
          },
          {
            "name": "fs-s3fs",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "geoip2",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "glob2",
            "direct": false,
            "version": "0.7",
            "ecosystem": "pypi"
          },
          {
            "name": "google-api-core",
            "direct": false,
            "version": "2.31.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth",
            "direct": false,
            "version": "2.55.1",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-core",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-firestore",
            "direct": false,
            "version": "2.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-cloud-storage",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-crc32c",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "google-resumable-media",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "googleapis-common-protos",
            "direct": false,
            "version": "1.75.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio",
            "direct": false,
            "version": "1.82.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grpcio-status",
            "direct": false,
            "version": "1.82.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gunicorn",
            "direct": false,
            "version": "26.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "h2",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "help-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hpack",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "html5lib",
            "direct": false,
            "version": "1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "hyperframe",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "icalendar",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "imagesize",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "inflection",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "invoke",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "ipaddress",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "pypi"
          },
          {
            "name": "isodate",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "isort",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-classes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-collections",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-context",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-functools",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-text",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jasmine",
            "direct": false,
            "version": "3.99.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jasmine-core",
            "direct": false,
            "version": "3.99.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "2.11.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "jmespath",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jsondiff",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jsondiff",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonfield",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jsonfield",
            "direct": false,
            "version": "3.2.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": "jwcrypto",
            "direct": false,
            "version": "1.5.8",
            "ecosystem": "pypi"
          },
          {
            "name": "kombu",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "laboratory",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "lazy",
            "direct": false,
            "version": "2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lti-consumer-xblock",
            "direct": false,
            "version": "11.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml-html-clean",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mailsnake",
            "direct": false,
            "version": "1.6.4",
            "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": "maxminddb",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mccabe",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "meilisearch",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mock",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "model-bakery",
            "direct": false,
            "version": "1.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mongoengine",
            "direct": false,
            "version": "0.29.3",
            "ecosystem": "pypi"
          },
          {
            "name": "monotonic",
            "direct": false,
            "version": "1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "more-itertools",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mpmath",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "msgpack",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mysqlclient",
            "direct": false,
            "version": "2.2.8",
            "ecosystem": "pypi"
          },
          {
            "name": "nh3",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nltk",
            "direct": false,
            "version": "3.9.4",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "1.26.4",
            "ecosystem": "pypi"
          },
          {
            "name": "oauthlib",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "olxcleaner",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-atlas",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-atlas",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-authz",
            "direct": false,
            "version": "1.21.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-calc",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-core",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-django-pyfs",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-django-require",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-django-wiki",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-events",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-events",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-filters",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-filters",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openedx-forum",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "optimizely-sdk",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ora2",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ordereddict",
            "direct": false,
            "version": "1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "outcome",
            "direct": false,
            "version": "1.3.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "paramiko",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "paramiko",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "path",
            "direct": false,
            "version": "16.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "path-py",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "path-py",
            "direct": false,
            "version": "12.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pgpy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pgpy",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "piexif",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": "12.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pip",
            "direct": false,
            "version": "26.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-tools",
            "direct": false,
            "version": "7.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pkginfo",
            "direct": false,
            "version": "1.12.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "polib",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "portend",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "proto-plus",
            "direct": false,
            "version": "1.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "7.35.1",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": false,
            "version": "2.9.12",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1-modules",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pycasbin",
            "direct": false,
            "version": "2.8.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": "pycryptodomex",
            "direct": false,
            "version": "3.23.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": "pydata-sphinx-theme",
            "direct": false,
            "version": "0.16.1",
            "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": "pylatexenc",
            "direct": false,
            "version": "2.10",
            "ecosystem": "pypi"
          },
          {
            "name": "pylint",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pylint",
            "direct": false,
            "version": "3.3.9",
            "ecosystem": "pypi"
          },
          {
            "name": "pylint-celery",
            "direct": false,
            "version": "0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pylint-django",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pylint-plugin-utils",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pylti1p3",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymemcache",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymongo",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pynacl",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pynliner",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyopenssl",
            "direct": false,
            "version": "26.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-api",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-hooks",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyrsistent",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pysocks",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pysrt",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-django",
            "direct": false,
            "version": "4.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-discovery",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "python-ipware",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-slugify",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "python-swiftclient",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python3-openid",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python3-saml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python3-saml",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyuca",
            "direct": false,
            "version": "1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "random2",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "readme-renderer",
            "direct": false,
            "version": "45.0",
            "ecosystem": "pypi"
          },
          {
            "name": "recommender-xblock",
            "direct": false,
            "version": "5.0.0",
            "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.6.28",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": false,
            "version": "2.34.2",
            "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": "responses",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "restructuredtext-lint",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "roman-numerals",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "roman-numerals-py",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "2026.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "rules",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "rules",
            "direct": false,
            "version": "3.5",
            "ecosystem": "pypi"
          },
          {
            "name": "s3transfer",
            "direct": false,
            "version": "0.19.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sailthru-client",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "selenium",
            "direct": false,
            "version": "4.46.0",
            "ecosystem": "pypi"
          },
          {
            "name": "semantic-version",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "83.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shapely",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "simpleeval",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "pypi"
          },
          {
            "name": "simplejson",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "slumber",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "slumber",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowballstemmer",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "snowflake-connector-python",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "social-auth-app-django",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "social-auth-app-django",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "social-auth-core",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sorl-thumbnail",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": "8.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-book-theme",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-applehelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-devhelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-htmlhelp",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-jsmath",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-qthelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-serializinghtml",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlparse",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "staff-graded-xblock",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "stevedore",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "stevedore",
            "direct": false,
            "version": "5.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "super-csv",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tempora",
            "direct": false,
            "version": "5.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "testfixtures",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "testfixtures",
            "direct": false,
            "version": "12.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "text-unidecode",
            "direct": false,
            "version": "1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tincan",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tincan",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tinycss2",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli-w",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tox",
            "direct": false,
            "version": "4.56.4",
            "ecosystem": "pypi"
          },
          {
            "name": "tqdm",
            "direct": false,
            "version": "4.68.4",
            "ecosystem": "pypi"
          },
          {
            "name": "trio",
            "direct": false,
            "version": "0.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "trio-websocket",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer-slim",
            "direct": false,
            "version": "0.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typesense",
            "direct": false,
            "version": "2.0.0",
            "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.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tzlocal",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "unicodecsv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "unicodecsv",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "unicodeit",
            "direct": false,
            "version": "0.7.5",
            "ecosystem": "pypi"
          },
          {
            "name": "uritemplate",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "vine",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "voluptuous",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "walrus",
            "direct": false,
            "version": "0.9.8",
            "ecosystem": "pypi"
          },
          {
            "name": "wcmatch",
            "direct": false,
            "version": "10.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "webencodings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "webob",
            "direct": false,
            "version": "1.8.10",
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": "0.47.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wsproto",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "xblock",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "xblock-drag-and-drop-v2",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "pypi"
          },
          {
            "name": "xblock-google-drive",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "xblock-poll",
            "direct": false,
            "version": "1.16.1",
            "ecosystem": "pypi"
          },
          {
            "name": "xblocks-contrib",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "xmlsec",
            "direct": false,
            "version": "1.3.14",
            "ecosystem": "pypi"
          },
          {
            "name": "xss-utils",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.24.2",
            "ecosystem": "pypi"
          },
          {
            "name": "zc-lockfile",
            "direct": false,
            "version": "4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 1091,
        "direct_count": 1,
        "indirect_count": 1090
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 69,
        "merged_prs": 1966,
        "open_issues": 9,
        "closed_ratio": 0.609,
        "closed_issues": 14,
        "closed_unmerged_prs": 576
      },
      "bus_factor": 11,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "alex-sheehan-edx",
          "commits": 357,
          "avatar_url": "https://avatars.githubusercontent.com/u/67655836?v=4"
        },
        {
          "type": "User",
          "login": "hamzawaleed01",
          "commits": 163,
          "avatar_url": "https://avatars.githubusercontent.com/u/83753341?v=4"
        },
        {
          "type": "User",
          "login": "irfanuddinahmad",
          "commits": 134,
          "avatar_url": "https://avatars.githubusercontent.com/u/34648393?v=4"
        },
        {
          "type": "User",
          "login": "pwnage101",
          "commits": 130,
          "avatar_url": "https://avatars.githubusercontent.com/u/85151?v=4"
        },
        {
          "type": "User",
          "login": "saleem-latif",
          "commits": 127,
          "avatar_url": "https://avatars.githubusercontent.com/u/7114956?v=4"
        },
        {
          "type": "User",
          "login": "muhammad-ammar",
          "commits": 124,
          "avatar_url": "https://avatars.githubusercontent.com/u/6767924?v=4"
        },
        {
          "type": "User",
          "login": "brittneyexline",
          "commits": 123,
          "avatar_url": "https://avatars.githubusercontent.com/u/524809?v=4"
        },
        {
          "type": "User",
          "login": "johnnagro",
          "commits": 100,
          "avatar_url": "https://avatars.githubusercontent.com/u/31442?v=4"
        },
        {
          "type": "User",
          "login": "sameeramin",
          "commits": 82,
          "avatar_url": "https://avatars.githubusercontent.com/u/35958006?v=4"
        },
        {
          "type": "User",
          "login": "iloveagent57",
          "commits": 80,
          "avatar_url": "https://avatars.githubusercontent.com/u/2307986?v=4"
        }
      ],
      "contributors_sampled": 99,
      "top_contributor_share": 0.12
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "add-depr-ticket-to-depr-board.yml",
        "add-remove-label-on-comment.yml",
        "ci.yml",
        "commitlint.yml",
        "lockfileversion-check.yml",
        "mysql8-migrations.yml",
        "postgresql-migrations.yml",
        "publish.yml",
        "self-assign-issue.yml",
        "upgrade-python-requirements.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "tox.ini"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "23 out of 23 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": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 21 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 2,
            "reason": "dependency not pinned by hash detected -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 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": "46 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e0637d0e92a7316ea013fdc2ba41fc69978ee8e1",
        "ran_at": "2026-07-23T12:43:52Z",
        "aggregate_score": 6.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T12:42:30Z",
      "oldest_open_prs": [
        {
          "number": 756,
          "created_at": "2020-04-29T22:57:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1049,
          "created_at": "2020-11-20T07:35:31Z",
          "last_comment_at": "2023-02-28T15:00:48Z",
          "last_comment_author": "mattdrayer"
        },
        {
          "number": 1498,
          "created_at": "2022-03-15T20:41:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1545,
          "created_at": "2022-04-28T19:17:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1677,
          "created_at": "2022-11-18T01:23:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1678,
          "created_at": "2022-11-21T09:01:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1684,
          "created_at": "2022-12-03T01:13:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1734,
          "created_at": "2023-04-04T15:51:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1760,
          "created_at": "2023-05-24T11:26:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1776,
          "created_at": "2023-06-22T07:21:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1790,
          "created_at": "2023-07-05T13:52:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1792,
          "created_at": "2023-07-06T17:57:53Z",
          "last_comment_at": "2023-07-06T18:08:33Z",
          "last_comment_author": "alex-sheehan-edx"
        },
        {
          "number": 1797,
          "created_at": "2023-07-11T15:23:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1894,
          "created_at": "2023-10-03T16:07:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1905,
          "created_at": "2023-10-11T09:03:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1908,
          "created_at": "2023-10-11T12:23:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1928,
          "created_at": "2023-10-27T23:41:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1991,
          "created_at": "2024-01-18T20:31:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2052,
          "created_at": "2024-03-25T11:24:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2085,
          "created_at": "2024-04-25T07:50:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-22T17:35:52Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 1151,
          "created_at": "2021-02-11T08:50:50Z",
          "last_comment_at": "2021-03-03T03:18:23Z",
          "last_comment_author": "Rah1x"
        },
        {
          "number": 1570,
          "created_at": "2022-05-25T14:23:48Z",
          "last_comment_at": "2025-12-15T15:33:04Z",
          "last_comment_author": "csmith-tcs"
        },
        {
          "number": 1745,
          "created_at": "2023-05-05T12:42:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1927,
          "created_at": "2023-10-26T02:09:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2002,
          "created_at": "2024-01-28T11:21:02Z",
          "last_comment_at": "2024-01-28T11:21:31Z",
          "last_comment_author": "OmarIthawi"
        },
        {
          "number": 2291,
          "created_at": "2024-11-19T18:24:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2302,
          "created_at": "2024-12-10T20:56:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2333,
          "created_at": "2025-02-04T19:13:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2494,
          "created_at": "2025-12-18T16:08:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/openedx/edx-enterprise",
    "host": "github.com",
    "name": "edx-enterprise",
    "owner": "openedx"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 81,
      "inputs": {
        "security": 72,
        "vitality": 96,
        "community": 75,
        "governance": 86,
        "engineering": 72
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 96,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 93,
            "inputs": {
              "commits_last_year": 187,
              "human_commit_share": 0.96,
              "days_since_last_push": 0,
              "active_weeks_last_year": 42
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "42/52 weeks with commits",
                "points": 29.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 42
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "187 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 187
                    }
                  }
                ],
                "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": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "8.7.1",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 75,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "forks": 71,
              "stars": 50,
              "watchers": 74,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "50 stars",
                "points": 27.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "71 forks",
                "points": 15.4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 71
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "74 watchers",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": true,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "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": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 7.2,
                "status": "met",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "excellent",
        "name": "Sustainability & Governance",
        "value": 86,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "bus_factor": 11,
              "contributors_sampled": 99,
              "top_contributor_share": 0.12
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "11 contributor(s) cover half of all commits",
                "points": 54,
                "status": "met",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 12% of commits",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 12
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "99 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 21 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 1966,
              "open_issues": 9,
              "closed_issues": 14,
              "issue_closed_ratio": 0.609,
              "closed_unmerged_prs": 576
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "61% of issues closed",
                "points": 28.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 61
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1966/2542 decided PRs merged",
                "points": 29.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1966,
                      "decided": 2542
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "followers": 757,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "openedx",
              "public_repos": 185,
              "account_age_days": 2963
            },
            "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": "757 followers of openedx",
                "points": 20.7,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 757,
                      "login": "openedx"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "185 public repos, account ~8 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 185
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "edx-enterprise"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "1461 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 1461
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 72,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "10 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "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": "tox.ini",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tox.ini"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "23 out of 23 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 72,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 65,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 6.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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "23 out of 23 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": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 21 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 2",
                "points": 1,
                "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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "46 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 1041 resolved dependencies against OSV; 50 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 1041
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 50
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 86,
              "affected_packages": 39,
              "assessed_packages": 1041,
              "unassessed_packages": 50,
              "affected_by_severity": "critical 3, high 20, moderate 16",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 1041,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": "good",
        "name": "AI Readiness",
        "value": 78,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.979,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                ".ralph/AGENT.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 7063
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, .ralph/AGENT.md, 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": "94 of 96 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "docs/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.11,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.04
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, docs/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, docs/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": "tox.ini",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tox.ini"
                    }
                  }
                ],
                "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": "11 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 11,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "4 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 4,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 2",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 458598,
              "source_files_sampled": 1039,
              "oversized_source_files": 13
            },
            "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": "13/1039 source files over 60KB",
                "points": 54.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1039,
                      "oversized": 13
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'edx-enterprise' from its registry",
    "deps.dev does not index pypi:edx-enterprise@8.7.1; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T12:44:23.448396Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/openedx/edx-enterprise.svg",
  "full_name": "openedx/edx-enterprise",
  "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.27.0 — metodología completa · wiki de métricas.

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