Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-23 12:44 UTC

openedx / edx-enterprise

PythonAGPL-3.0★ 50 зірок⑂ 71 форкз жовт. 2016 р.Переглянути на GitHub ↗

openedx/edx-enterprise має індекс здоров’я 81 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (96/100), найнижчий — Security (72/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконують 11 учасників.

81
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

81
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Open edXОрганізація
757 підписників185 публічних репозиторіївз черв. 2018 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
PyPIedx-enterprise8.7.1-1 4610 днів томуdjangoedx

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

96Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
29.1/36Ритм комітів — 42/52 тижнів із комітами
18/18Обсяг комітів — 187 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year187
human_commit_share0,96
days_since_last_push0
active_weeks_last_year42
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 0 дн. тому
27/27Ритм релізів — реліз кожні ~4 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tag8.7.1
releases_from_tagsні
days_since_latest_release0
mean_days_between_releases4
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

75Добрий · 18% загального індексу
Як обчислюється оцінка
27.4/60Зірки — 50 зірок
15.4/25Форки — 71 форків
10.4/15Спостерігачі — 74 спостерігачів
Використані вхідні дані
forks71
stars50
watchers74
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (AGPL-3.0)
18/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
7.2/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateтак
has_code_of_conductтак
has_pull_request_templateтак

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

86Відмінний · 24% загального індексу
Як обчислюється оцінка
54/54Бас-фактор — на 11 контриб’ютор(ів) припадає половина всіх комітів
19.8/22.5Розподіл комітів — головний контриб’ютор — автор 12% комітів
13.5/13.5Широта контриб’юторів — 99 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 21 contributing companies or organizations
Використані вхідні дані
bus_factor11
contributors_sampled99
top_contributor_share0,12
Як обчислюється оцінка
28.5/46.8Вирішення issue — закрито 61% issue
29.6/38.3Прийняття PR — злито 1 966/2 542 вирішених PR
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Використані вхідні дані
merged_prs1 966
open_issues9
closed_issues14
issue_closed_ratio0,609
closed_unmerged_prs576
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
20.7/25Охоплення власника — 757 підписників у openedx
25/25Послужний список — 185 публічних репозиторіїв, вік облікового запису ~8 р.
Використані вхідні дані
followers757
owner_typeOrganization
is_verified
owner_loginopenedx
public_repos185
account_age_days2 963

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у pypi
35/35Свіжість публікацій — остання публікація 0 дн. тому
20/20Історія версій — 1 461 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesedx-enterprise
ecosystemspypi
any_deprecatedні
min_days_since_publish0

Інженерна якість

Чи наявні базові інженерні практики та документація?

72Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 10 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — tox.ini
0/9.6Pre-commit-хуки
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні

Документація

55Помірний
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
0/10Опис репозиторію
0/10Теми
0/10Wiki
Використані вхідні дані
topics
has_wikiні
homepage
has_readmeтак
has_docs_dirтак
has_descriptionні

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

72Добрий · 16% загального індексу

Стан безпеки

65Помірний
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — немає даних
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.5Ліцензія — 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 — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 46 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate6,5
Виключено з оцінювання (немає даних або не застосовно): branch_protection, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories86
affected_packages39
assessed_packages1 041
unassessed_packages50
affected_by_severitycritical 3, high 20, moderate 16
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 1041 резолвлених залежностей із OSV. 50 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

78Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — .github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 94 з 96 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,979
agent_instruction_files.github/copilot-instructions.md, .ralph/AGENT.md, CLAUDE.md
agent_instruction_max_bytes7 063
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile, docs/Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — tox.ini
0/11Статична перевірка типів
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 11 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 4 з останніх 100 комітів — автоматичні оновлення залежностей
2/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json
has_dockerfileтак
typed_languageні
bootstrap_filesMakefile, docs/Makefile
has_devcontainerні
has_linter_configтак
typecheck_configs
agent_commit_share0,11
toolchain_manifests
dependency_bot_commit_share0,04
Як обчислюється оцінка
0/45Типізований код — Python без конфігурації перевірки типів
54.3/55Керовані розміри файлів — 13/1 039 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes458 598
source_files_sampled1 039
oversized_source_files13

Ключові факти

50зірок GitHub
99контриб'юторів
187комітів за останні 12 місяців
0днів від останнього пушу
100релізів
11бас-фактор
9відкритих issue
npm, PyPIпакетних екосистем

Попередження щодо збору даних

  • 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

Докладніше

Історія зірок і форків 0 ★ / 71 ⇿
0Зірки
71Форки
88Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

01325385063757122016-112021-082026-06
Мажорні 2Мінорні 9Патчі 77

Кожна точка охоплює 9 днів.

OpenSSF Scorecard 6.5 / 10
6.5сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-23 12:43 UTC

10Binary-Artifactsno binaries found in the repo
н/д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
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities46 existing vulnerabilities detected
Прямі залежності 2
РеєстрПакетОбмеження версіїМаніфест
npm@edx/brandnpm:@edx/brand-edx.org@^1.3.0package.json
npm@openedx/paragon^21.5.7package.json
Усі залежності 1 091

Повний розв'язаний набір залежностей із графа залежностей GitHub: 1 прямих і 1 090 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

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

Цей репозиторій не публікує пакета, який розпізнає індекс, тож оцінено його власний граф залежностей — 1 041 пакетів, серед яких є й піниї розробки та тестування, що ніколи не постачаються: 39 мають відомі сповіщення, з них 0 прямі. 50 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза наведеним переліком пакетів.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
cipher-base1.0.4непрямакритична11.0.5
immutable4.3.7непрямакритична35.1.8
sha.js2.4.11непрямакритична12.4.12
brace-expansion1.1.11непрямависока35.0.7
brace-expansion2.0.1непрямависока35.0.7
braces2.3.2непрямависока13.0.3
cross-spawn5.1.0непрямависока17.0.5
elliptic6.6.1непрямависока1
is-svg2.1.0непрямависока24.3.0
jinja22.11.3непрямависока83.1.6
js-yaml3.7.0непрямависока54.3.0
json50.5.1непрямависока12.2.2
lodash4.17.21непрямависока34.18.0
lxml5.3.2непрямависока26.1.0
lxml-html-clean0.4.4непрямависока20.4.5
minimatch3.0.8непрямависока310.2.3
minimatch3.1.2непрямависока310.2.3
minimatch5.1.6непрямависока310.2.3
nltk3.9.4непрямависока33.10.0
picomatch2.3.1непрямависока24.0.4
pyasn10.6.3непрямависока50.6.4
tmp0.0.33непрямависока20.2.6
uuid9.0.1непрямависока113.0.1
@babel/runtime7.25.6непрямапомірна18.0.0-alpha.17
@babel/runtime-corejs37.25.6непрямапомірна18.0.0-alpha.17
ajv5.5.2непрямапомірна28.18.0
ajv6.12.6непрямапомірна18.18.0
bn.js4.12.0непрямапомірна15.2.3
bn.js5.2.1непрямапомірна15.2.3
color-string0.3.0непрямапомірна11.5.5
jquery2.2.4непрямапомірна44.4.0
mem1.1.0непрямапомірна14.0.0
micromatch3.1.10непрямапомірна14.0.8
postcss5.2.18непрямапомірна38.5.10
postcss6.0.23непрямапомірна38.5.10
pymongo4.4.0непрямапомірна24.6.3
qs6.14.1непрямапомірна26.15.2
social-auth-app-django5.4.1непрямапомірна25.6.0
yargs-parser7.0.0непрямапомірна118.1.1

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "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"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаPyPI.