Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 12:44 UTC

openedx / edx-enterprise

PythonAGPL-3.0★ 50 Sterne⑂ 71 Forksseit Okt. 2016Auf GitHub ansehen ↗

openedx/edx-enterprise erreicht einen Gesundheitsindex von 81 von 100 und liegt damit im Bereich Gut. Am stärksten schneidet es bei Vitality (96/100) ab, am schwächsten bei Security (72/100). Zuletzt heute aktualisiert. 11 Mitwirkende tragen den Großteil der jüngsten Arbeit.

81
gesamt / 100
Gut

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

81
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

Open edXOrganisation
757 Follower185 öffentliche Reposseit Juni 2018

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
PyPIedx-enterprise8.7.1-1.461vor 0 Tagendjangoedx

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

96Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
29.1/36Commit-Rhythmus — 42/52 Wochen mit Commits
18/18Commit-Volumen — 187 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year187
human_commit_share0,96
days_since_last_push0
active_weeks_last_year42

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 4 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tag8.7.1
releases_from_tagsnein
days_since_latest_release0
mean_days_between_releases4
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

75Gut · 18 % des Gesamtindex
Wie die Bewertung erfolgt
27.4/60Stars — 50 Stars
15.4/25Forks — 71 Forks
10.4/15Watcher — 74 Watcher
Verwendete Eingangsdaten
forks71
stars50
watchers74
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (AGPL-3.0)
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
7.2/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templateja
has_code_of_conductja
has_pull_request_templateja

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

86Exzellent · 24 % des Gesamtindex
Wie die Bewertung erfolgt
54/54Bus-Faktor — 11 Beitragende decken die Hälfte aller Commits ab
19.8/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 12 % der Commits
13.5/13.5Breite der Beitragenden — 99 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 21 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor11
contributors_sampled99
top_contributor_share0,12
Wie die Bewertung erfolgt
28.5/46.8Issue-Lösungsquote — 61 % der Issues geschlossen
29.6/38.3PR-Annahme — 1.966/2.542 entschiedene PRs gemergt
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Verwendete Eingangsdaten
merged_prs1.966
open_issues9
closed_issues14
issue_closed_ratio0,609
closed_unmerged_prs576
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
20.7/25Reichweite des Inhabers — 757 Follower von openedx
25/25Kontohistorie — 185 öffentliche Repos, Kontoalter ca. 8 Jahre
Verwendete Eingangsdaten
followers757
owner_typeOrganization
is_verified
owner_loginopenedx
public_repos185
account_age_days2.963

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 1.461 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesedx-enterprise
ecosystemspypi
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

72Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 10 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — tox.ini
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
0/10Repository-Beschreibung
0/10Topics
0/10Wiki
Verwendete Eingangsdaten
topics
has_wikinein
homepage
has_readmeja
has_docs_dirja
has_descriptionnein

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

72Gut · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
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.5Lizenz — 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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 46 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate6,5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories86
affected_packages39
assessed_packages1.041
unassessed_packages50
affected_by_severitycritical 3, high 20, moderate 16
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories, Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. 1041 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. 50 konnten nicht bewertet werden — keine aufgelöste Version, ein nicht unterstütztes Ökosystem oder außerhalb der ausgewiesenen Paketliste. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

78Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — .github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 94 von 96 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,979
agent_instruction_files.github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
agent_instruction_max_bytes7.063
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — Makefile, docs/Makefile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — tox.ini
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 11 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 4 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
2/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfileja
typed_languagenein
bootstrap_filesMakefile, docs/Makefile
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0,11
toolchain_manifests
dependency_bot_commit_share0,04
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Python ohne Typprüfungs-Konfiguration
54.3/55Handhabbare Dateigrößen — 13/1.039 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes458.598
source_files_sampled1.039
oversized_source_files13

Eckdaten

50GitHub-Sterne
99Mitwirkende
187Commits, letzte 12 Monate
0Tage seit letztem Push
100Releases
11Bus-Faktor
9offene Issues
npm, PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 71 ⇿
0Sterne
71Forks
88Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

01325385063757122016-112021-082026-06
Major 2Minor 9Patch 77

Jeder Punkt umfasst 9 Tage.

OpenSSF Scorecard 6.5 / 10
6.5Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-23 12:43 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities46 existing vulnerabilities detected
Direkte Abhängigkeiten 2
RegistryPaketVersionsvorgabeManifest
npm@edx/brandnpm:@edx/brand-edx.org@^1.3.0package.json
npm@openedx/paragon^21.5.7package.json
Alle Abhängigkeiten 1.091

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 1 direkte und 1.090 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

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

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 1.041 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 39 tragen bekannte Advisories, davon 0 direkte. 50 konnten nicht bewertet werden – keine aufgelöste Version, ein nicht unterstütztes Ökosystem, oder außerhalb der ausgewiesenen Paketliste.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
cipher-base1.0.4indirektkritisch11.0.5
immutable4.3.7indirektkritisch35.1.8
sha.js2.4.11indirektkritisch12.4.12
brace-expansion1.1.11indirekthoch35.0.7
brace-expansion2.0.1indirekthoch35.0.7
braces2.3.2indirekthoch13.0.3
cross-spawn5.1.0indirekthoch17.0.5
elliptic6.6.1indirekthoch1
is-svg2.1.0indirekthoch24.3.0
jinja22.11.3indirekthoch83.1.6
js-yaml3.7.0indirekthoch54.3.0
json50.5.1indirekthoch12.2.2
lodash4.17.21indirekthoch34.18.0
lxml5.3.2indirekthoch26.1.0
lxml-html-clean0.4.4indirekthoch20.4.5
minimatch3.0.8indirekthoch310.2.3
minimatch3.1.2indirekthoch310.2.3
minimatch5.1.6indirekthoch310.2.3
nltk3.9.4indirekthoch33.10.0
picomatch2.3.1indirekthoch24.0.4
pyasn10.6.3indirekthoch50.6.4
tmp0.0.33indirekthoch20.2.6
uuid9.0.1indirekthoch113.0.1
@babel/runtime7.25.6indirektmittel18.0.0-alpha.17
@babel/runtime-corejs37.25.6indirektmittel18.0.0-alpha.17
ajv5.5.2indirektmittel28.18.0
ajv6.12.6indirektmittel18.18.0
bn.js4.12.0indirektmittel15.2.3
bn.js5.2.1indirektmittel15.2.3
color-string0.3.0indirektmittel11.5.5
jquery2.2.4indirektmittel44.4.0
mem1.1.0indirektmittel14.0.0
micromatch3.1.10indirektmittel14.0.8
postcss5.2.18indirektmittel38.5.10
postcss6.0.23indirektmittel38.5.10
pymongo4.4.0indirektmittel24.6.3
qs6.14.1indirektmittel26.15.2
social-auth-app-django5.4.1indirektmittel25.6.0
yargs-parser7.0.0indirektmittel118.1.1

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenPyPI.