Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.14.0 · 2026-08-01 10:54 UTC

datalab-to / marker

Convert PDF to markdown + JSON quickly with high accuracy

PythonApache-2.0★ 38 094 зірки⑂ 2 693 форкиз жовт. 2023 р.Переглянути на GitHub ↗

datalab-to/marker має індекс здоров’я 72 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (87/100), найнижчий — AI Readiness (37/100). Останнє оновлення було 11 днів тому. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Власність

DatalabОрганізація
828 підписників12 публічних репозиторіївз лип. 2024 р.

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
PyPImarker-pdf2.0.0521 9878211 днів томуmarkdownnlpocrpdf

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

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

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

87Відмінний · 22% загального індексу
Як обчислюється оцінка
28.8/36Свіжість push — останній push 11 дн. тому
22.2/36Ритм комітів — 32/52 тижнів із комітами
18/18Обсяг комітів — 208 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year208
human_commit_share0,74
days_since_last_push11
active_weeks_last_year32
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 72 релізів
36/36Свіжість релізів — останній реліз 11 дн. тому
27/27Ритм релізів — реліз кожні ~37,1 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count72
latest_release_tagv2.0.0
releases_from_tagsні
days_since_latest_release11
mean_days_between_releases37,1
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

80Добрий · 18% загального індексу
Як обчислюється оцінка
60/60Зірки — 38 094 зірок
25/25Форки — 2 693 форків
11.8/15Спостерігачі — 133 спостерігачів
Використані вхідні дані
forks2 693
stars38 094
watchers133
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
76.2/80Щомісячні завантаження — 521 987 завантажень/місяць у pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesmarker-pdf
dependents
ecosystemspypi
total_downloads
monthly_downloads521 987
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

62Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
9/22.5Розподіл комітів — головний контриб’ютор — автор 60% комітів
13.5/13.5Широта контриб’юторів — 26 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Використані вхідні дані
bus_factor1
contributors_sampled26
top_contributor_share0,599
Як обчислюється оцінка
22.1/46.8Вирішення issue — закрито 47% issue
30.7/38.3Прийняття PR — злито 233/290 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/4 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs233
open_issues361
closed_issues324
issue_closed_ratio0,473
closed_unmerged_prs57
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
21/25Охоплення власника — 828 підписників у datalab-to
12.1/25Послужний список — 12 публічних репозиторіїв, вік облікового запису ~2 р.
Використані вхідні дані
followers828
owner_typeOrganization
is_verified
owner_logindatalab-to
public_repos12
account_age_days736

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

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

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

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

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

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

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

Безпека

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

44У зоні ризику · 16% загального індексу

Стан безпеки

38У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 2 out of 2 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
0/7.5Code-Review — Found 0/4 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 29 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,8
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
9.5/35Прямі залежності без відомих сповіщень — уражено 1: pillow 10.4.0 (critical 9.1)
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
32.6/40Немає задавнених сповіщень — 1 пакет(ів) зі сповіщеннями без реакції понад 90 дн.; найдавніше опубліковано 170 дн. тому
Використані вхідні дані
sourceosv
advisories34
affected_packages1
assessed_packages74
unassessed_packages0
affected_by_severitycritical 1
direct_affected_packages1
Звірено з runtime-замиканням залежностей pypi:marker-pdf@2.0.0 — тим, що тягне за собою встановлення опублікованого пакета, — 74 пакетів. Досяжність не аналізується.

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

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

37У зоні ризику · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
18.7/40Читабельна історія комітів — намір зазначено у 26 з 74 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,351
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
10/10Відтворюване середовище — lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesuv.lock
has_dockerfileні
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
0/45Типізований код — Python без конфігурації перевірки типів
55/55Керовані розміри файлів — 0/172 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes21 129
source_files_sampled172
oversized_source_files0
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

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

38 094зірок GitHub
26контриб'юторів
208комітів за останні 12 місяців
11днів від останнього пушу
72релізів
1бас-фактор
361відкритих issue
PyPIпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

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

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

Показано лише найновішу історію — цей репозиторій перевищує вікно збору, тож найраніша історія не захоплена.

1 5001 7502 0002 2502 5002 7502 693252025-082026-022026-08
Мажорні 1Мінорні 2Патчі 7
OpenSSF Scorecard 3.8 / 10
3.8сукупно

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

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/4 approved changesets -- score normalized to 0
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities29 existing vulnerabilities detected
Прямі залежності 21
РеєстрПакетОбмеження версіїМаніфест
PyPIpillow>=10.1.0,<11pyproject.toml
PyPIpydantic>=2.4.2,<3pyproject.toml
PyPIpydantic-settings>=2.0.3,<3pyproject.toml
PyPItransformers>=5.12.1,<6pyproject.toml
PyPIpython-dotenv>=1.0.0,<2pyproject.toml
PyPItorch>=2.7.0,<3pyproject.toml
PyPIpsutil>=7.0.0,<8pyproject.toml
PyPItqdm>=4.66.1,<5pyproject.toml
PyPIftfy>=6.1.1,<7pyproject.toml
PyPIrapidfuzz>=3.8.1,<4pyproject.toml
PyPIsurya-ocr>=0.22.1,<0.23.0pyproject.toml
PyPIregex>=2024.4.28pyproject.toml
PyPIpdftext>=0.7.0,<0.8.0pyproject.toml
PyPImarkdownify>=1.1.0,<2pyproject.toml
PyPIclick>=8.2.0,<9pyproject.toml
PyPImarkdown2>=2.5.2,<3pyproject.toml
PyPIfiletype>=1.2.0,<2pyproject.toml
PyPIgoogle-genai>=1.40.0,<3pyproject.toml
PyPIanthropic>=0.69.0,<1pyproject.toml
PyPIopenai>=2.2.0,<3pyproject.toml
PyPIscikit-learn>=1.6.1,<2pyproject.toml
Усі залежності 257

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

РеєстрПакетВерсіяЗв'язок
PyPIanthropic0.117.0пряма
PyPIclick8.4.2пряма
PyPIfiletype1.2.0пряма
PyPIftfy6.3.1пряма
PyPIgoogle-genai2.12.1пряма
PyPImarkdown22.5.5пряма
PyPImarkdownify1.2.3пряма
PyPIopenai2.46.0пряма
PyPIpdftext0.7.1пряма
PyPIpillow10.4.0пряма
PyPIpsutil7.2.2пряма
PyPIpydantic2.13.4пряма
PyPIpydantic-settings2.14.2пряма
PyPIpython-dotenv1.2.2пряма
PyPIrapidfuzz3.14.5пряма
PyPIregex2026.7.19пряма
PyPIscikit-learn1.7.2пряма
PyPIscikit-learn1.9.0пряма
PyPIsurya-ocr0.22.1пряма
PyPItorch2.13.0пряма
PyPItqdm4.69.0пряма
PyPItransformers5.14.1пряма
PyPIaiohappyeyeballs2.7.1непряма
PyPIaiohttp3.14.1непряма
PyPIaiosignal1.4.0непряма
PyPIaltair6.2.2непряма
PyPIannotated-doc0.0.4непряма
PyPIannotated-types0.7.0непряма
PyPIanyio4.14.2непряма
PyPIappnope0.1.4непряма
PyPIapted1.0.3непряма
PyPIargon2-cffi25.1.0непряма
PyPIargon2-cffi-bindings25.1.0непряма
PyPIarrow1.4.0непряма
PyPIasttokens3.0.2непряма
PyPIasync-lru2.3.0непряма
PyPIasync-timeout5.0.1непряма
PyPIattrs26.1.0непряма
PyPIbabel2.18.0непряма
PyPIbeautifulsoup44.15.0непряма
PyPIbleach6.4.0непряма
PyPIblinker1.9.0непряма
PyPIbrotli1.2.0непряма
PyPIbrotlicffi1.2.0.1непряма
PyPIcachetools7.1.4непряма
PyPIcertifi2026.6.17непряма
PyPIcffi2.1.0непряма
PyPIcfgv3.5.0непряма
PyPIcharset-normalizer3.4.9непряма
PyPIcobble0.1.4непряма
PyPIcolorama0.4.6непряма
PyPIcomm0.2.3непряма
PyPIcryptography49.0.0непряма
PyPIcssselect20.9.0непряма
PyPIcuda-bindings13.3.1непряма
PyPIcuda-pathfinder1.5.6непряма
PyPIcuda-toolkit13.0.3.0непряма
PyPIdatasets5.0.0непряма
PyPIdebugpy1.8.21непряма
PyPIdecorator5.3.1непряма
PyPIdefusedxml0.7.1непряма
PyPIdill0.4.1непряма
PyPIdistance0.1.3непряма
PyPIdistlib0.4.3непряма
PyPIdistro1.9.0непряма
PyPIdocstring-parser0.18.0непряма
PyPIebooklib0.18непряма
PyPIet-xmlfile2.0.0непряма
PyPIexceptiongroup1.3.1непряма
PyPIexecuting2.2.1непряма
PyPIfastapi0.139.2непряма
PyPIfastjsonschema2.21.2непряма
PyPIfilelock3.31.1непряма
PyPIfonttools4.63.0непряма
PyPIfqdn1.5.1непряма
PyPIfrozenlist1.8.0непряма
PyPIfsspec2026.4.0непряма
PyPIgitdb4.0.12непряма
PyPIgitpython3.1.53непряма
PyPIgoogle-auth2.55.2непряма
PyPIgreenlet3.5.3непряма
PyPIh110.16.0непряма
PyPIhf-xet1.5.2непряма
PyPIhttpcore1.0.9непряма
PyPIhttptools0.8.0непряма
PyPIhttpx0.28.1непряма
PyPIhuggingface-hub1.24.0непряма
PyPIidentify2.6.19непряма
PyPIidna3.18непряма
PyPIiniconfig2.3.0непряма
PyPIipykernel7.3.0непряма
PyPIipython8.39.0непряма
PyPIipython9.15.0непряма
PyPIipython-pygments-lexers1.1.1непряма
PyPIipywidgets8.1.8непряма
PyPIisoduration20.11.0непряма
PyPIitsdangerous2.2.0непряма
PyPIjedi0.20.0непряма
PyPIjinja23.1.6непряма
PyPIjiter0.16.0непряма
PyPIjoblib1.5.3непряма
PyPIjson50.15.0непряма
PyPIjsonpointer3.1.1непряма
PyPIjsonschema4.26.0непряма
PyPIjsonschema-specifications2025.9.1непряма
PyPIjupyter1.1.1непряма
PyPIjupyter-builder1.1.1непряма
PyPIjupyter-client8.9.1непряма
PyPIjupyter-console6.6.3непряма
PyPIjupyter-core5.9.1непряма
PyPIjupyter-events0.12.1непряма
PyPIjupyter-lsp2.3.1непряма
PyPIjupyter-server2.20.0непряма
PyPIjupyter-server-terminals0.5.4непряма
PyPIjupyterlab4.6.1непряма
PyPIjupyterlab-pygments0.3.0непряма
PyPIjupyterlab-server2.28.0непряма
PyPIjupyterlab-widgets3.0.16непряма
PyPIlark1.3.1непряма
PyPIlatex2mathml3.81.0непряма
PyPIlxml5.3.0непряма
PyPImammoth1.12.0непряма
PyPImarkdown-it-py4.2.0непряма
PyPImarker-pdf2.0.0непряма
PyPImarkupsafe3.0.3непряма
PyPImatplotlib-inline0.2.2непряма
PyPImdurl0.1.2непряма
PyPImistune3.3.3непряма
PyPImpmath1.3.0непряма
PyPImultidict6.7.1непряма
PyPImultiprocess0.70.19непряма
PyPInarwhals2.24.0непряма
PyPInbclient0.11.0непряма
PyPInbconvert7.17.1непряма
PyPInbformat5.10.4непряма
PyPInest-asyncio21.7.2непряма
PyPInetworkx3.4.2непряма
PyPInetworkx3.6.1непряма
PyPInodeenv1.10.0непряма
PyPInotebook7.6.0непряма
PyPInotebook-shim0.2.4непряма
PyPInumpy2.2.6непряма
PyPInumpy2.4.6непряма
PyPInumpy2.5.1непряма
PyPInvidia-cublas13.1.1.3непряма
PyPInvidia-cuda-cupti13.0.85непряма
PyPInvidia-cuda-nvrtc13.0.88непряма
PyPInvidia-cuda-runtime13.0.96непряма
PyPInvidia-cudnn-cu139.20.0.48непряма
PyPInvidia-cufft12.0.0.61непряма
PyPInvidia-cufile1.15.1.6непряма
PyPInvidia-curand10.4.0.35непряма
PyPInvidia-cusolver12.0.4.66непряма
PyPInvidia-cusparse12.6.3.3непряма
PyPInvidia-cusparselt-cu130.8.1непряма
PyPInvidia-nccl-cu132.29.7непряма
PyPInvidia-nvjitlink13.3.33непряма
PyPInvidia-nvshmem-cu133.4.5непряма
PyPInvidia-nvtx13.0.85непряма
PyPIopencv-python-headless4.11.0.86непряма
PyPIopenpyxl3.1.5непряма
PyPIoverrides7.7.0непряма
PyPIpackaging26.2непряма
PyPIpandas2.3.3непряма
PyPIpandas3.0.3непряма
PyPIpandocfilters1.5.1непряма
PyPIparso0.8.7непряма
PyPIpexpect4.9.0непряма
PyPIplatformdirs4.10.1непряма
PyPIplaywright1.61.0непряма
PyPIpluggy1.6.0непряма
PyPIpre-commit4.6.0непряма
PyPIprometheus-client0.25.0непряма
PyPIprompt-toolkit3.0.52непряма
PyPIpropcache0.5.2непряма
PyPIprotobuf7.35.1непряма
PyPIptyprocess0.7.0непряма
PyPIpure-eval0.2.3непряма
PyPIpyarrow24.0.0непряма
PyPIpyasn10.6.4непряма
PyPIpyasn1-modules0.4.2непряма
PyPIpycparser3.0непряма
PyPIpydantic-core2.46.4непряма
PyPIpydeck0.9.3непряма
PyPIpydyf0.12.1непряма
PyPIpyee13.0.1непряма
PyPIpygments2.20.0непряма
PyPIpypdfium25.10.1непряма
PyPIpyphen0.17.2непряма
PyPIpytest9.1.1непряма
PyPIpytest-mock3.15.1непряма
PyPIpython-dateutil2.9.0.post0непряма
PyPIpython-discovery1.4.4непряма
PyPIpython-json-logger4.1.0непряма
PyPIpython-multipart0.0.32непряма
PyPIpython-pptx1.0.2непряма
PyPIpytz2026.2непряма
PyPIpywinpty3.0.5непряма
PyPIpyyaml6.0.3непряма
PyPIpyzmq27.1.0непряма
PyPIreferencing0.37.0непряма
PyPIrequests2.34.2непряма
PyPIrfc3339-validator0.1.4непряма
PyPIrfc3986-validator0.1.1непряма
PyPIrfc3987-syntax1.1.0непряма
PyPIrich15.0.0непряма
PyPIrpds-py0.30.0непряма
PyPIrpds-py2026.6.3непряма
PyPIsafetensors0.8.0непряма
PyPIscipy1.15.3непряма
PyPIscipy1.17.1непряма
PyPIscipy1.18.0непряма
PyPIsend2trash2.1.0непряма
PyPIsetuptools83.0.0непряма
PyPIshellingham1.5.4непряма
PyPIsix1.17.0непряма
PyPIsmmap5.0.3непряма
PyPIsniffio1.3.1непряма
PyPIsoupsieve2.9непряма
PyPIstack-data0.6.3непряма
PyPIstarlette1.3.1непряма
PyPIstreamlit1.59.2непряма
PyPIstreamlit-ace0.1.1непряма
PyPIsympy1.14.0непряма
PyPItabulate0.10.0непряма
PyPItenacity9.1.4непряма
PyPIterminado0.18.1непряма
PyPIthreadpoolctl3.6.0непряма
PyPItinycss21.5.1непряма
PyPItinyhtml52.1.0непряма
PyPItokenizers0.22.2непряма
PyPItoml0.10.2непряма
PyPItomli2.4.1непряма
PyPItorchvision0.28.0непряма
PyPItornado6.5.7непряма
PyPItraitlets5.15.1непряма
PyPItriton3.7.1непряма
PyPItyper0.27.0непряма
PyPItyping-extensions4.16.0непряма
PyPItyping-inspection0.4.2непряма
PyPItzdata2026.3непряма
PyPIuri-template1.3.0непряма
PyPIurllib32.7.0непряма
PyPIuvicorn0.51.0непряма
PyPIvirtualenv21.6.1непряма
PyPIwatchdog6.0.0непряма
PyPIwcwidth0.8.2непряма
PyPIweasyprint63.1непряма
PyPIwebcolors25.10.0непряма
PyPIwebencodings0.5.1непряма
PyPIwebsocket-client1.9.0непряма
PyPIwebsockets16.1.1непряма
PyPIwidgetsnbextension4.0.15непряма
PyPIxlsxwriter3.2.9непряма
PyPIxxhash3.8.1непряма
PyPIyarl1.24.5непряма
PyPIzopfli0.4.3непряма
Сповіщення про залежності 1

Встановлення pypi:marker-pdf@2.0.0 тягне 74 пакетів, прямих і транзитивних: 1 мають відомі сповіщення, з них 1 — прямі залежності.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
pillow10.4.0прямакритична3412.3.0

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 21449,
      "has_wiki": true,
      "homepage": "https://www.datalab.to",
      "languages": {
        "Shell": 2841,
        "Python": 575379
      },
      "pushed_at": "2026-07-20T23:00:20Z",
      "created_at": "2023-10-30T20:14:08Z",
      "owner_type": "Organization",
      "updated_at": "2026-08-01T10:26:34Z",
      "description": "Convert PDF to markdown + JSON quickly with high accuracy",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "master",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://www.datalab.to",
      "name": "Datalab",
      "type": "Organization",
      "login": "datalab-to",
      "company": null,
      "location": "United States of America",
      "followers": 828,
      "avatar_url": "https://avatars.githubusercontent.com/u/176631703?v=4",
      "created_at": "2024-07-25T22:27:12Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 736
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2026-07-20T19:41:39Z"
        },
        {
          "tag": "v1.10.2",
          "kind": "patch",
          "published_at": "2026-01-31T00:12:04Z"
        },
        {
          "tag": "v1.10.1",
          "kind": "patch",
          "published_at": "2025-09-30T15:40:24Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2025-09-24T01:19:13Z"
        },
        {
          "tag": "v1.9.3",
          "kind": "patch",
          "published_at": "2025-09-09T20:43:45Z"
        },
        {
          "tag": "v1.9.2",
          "kind": "patch",
          "published_at": "2025-09-04T18:47:56Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2025-09-02T14:39:45Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2025-08-29T23:03:17Z"
        },
        {
          "tag": "v1.8.5",
          "kind": "patch",
          "published_at": "2025-08-23T17:09:33Z"
        },
        {
          "tag": "v1.8.4",
          "kind": "patch",
          "published_at": "2025-08-20T16:47:03Z"
        },
        {
          "tag": "v1.8.3",
          "kind": "patch",
          "published_at": "2025-08-04T18:16:49Z"
        },
        {
          "tag": "v1.8.2",
          "kind": "patch",
          "published_at": "2025-07-15T18:26:09Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2025-07-04T18:45:30Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2025-06-27T19:55:09Z"
        },
        {
          "tag": "v1.7.5",
          "kind": "patch",
          "published_at": "2025-06-11T20:36:33Z"
        },
        {
          "tag": "v1.7.4",
          "kind": "patch",
          "published_at": "2025-06-02T23:11:13Z"
        },
        {
          "tag": "v1.7.3",
          "kind": "patch",
          "published_at": "2025-05-22T19:41:35Z"
        },
        {
          "tag": "v1.7.2",
          "kind": "patch",
          "published_at": "2025-05-20T16:47:48Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2025-05-19T22:50:02Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2025-05-19T21:07:30Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2025-03-26T21:49:27Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2025-03-04T22:01:11Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2025-02-28T23:55:11Z"
        },
        {
          "tag": "v1.5.5",
          "kind": "patch",
          "published_at": "2025-02-19T23:04:22Z"
        },
        {
          "tag": "v1.5.4",
          "kind": "patch",
          "published_at": "2025-02-19T17:53:31Z"
        },
        {
          "tag": "v1.5.3",
          "kind": "patch",
          "published_at": "2025-02-19T03:43:16Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2025-02-14T01:49:41Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2025-02-14T01:06:44Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2025-02-13T21:09:20Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2025-02-11T16:41:55Z"
        },
        {
          "tag": "v1.3.5",
          "kind": "patch",
          "published_at": "2025-02-06T02:08:12Z"
        },
        {
          "tag": "v1.3.4",
          "kind": "patch",
          "published_at": "2025-01-31T03:00:42Z"
        },
        {
          "tag": "v1.3.3",
          "kind": "patch",
          "published_at": "2025-01-29T16:43:06Z"
        },
        {
          "tag": "v1.3.2",
          "kind": "patch",
          "published_at": "2025-01-27T16:27:21Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2025-01-24T18:11:58Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2025-01-24T03:34:00Z"
        },
        {
          "tag": "v1.2.7",
          "kind": "patch",
          "published_at": "2025-01-20T00:33:01Z"
        },
        {
          "tag": "v1.2.6",
          "kind": "patch",
          "published_at": "2025-01-19T17:43:29Z"
        },
        {
          "tag": "v1.2.5",
          "kind": "patch",
          "published_at": "2025-01-19T17:35:44Z"
        },
        {
          "tag": "v1.2.4",
          "kind": "patch",
          "published_at": "2025-01-14T21:19:40Z"
        },
        {
          "tag": "v1.2.3",
          "kind": "patch",
          "published_at": "2025-01-03T21:31:03Z"
        },
        {
          "tag": "v1.2.2",
          "kind": "patch",
          "published_at": "2025-01-02T21:38:36Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2025-01-02T21:08:31Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2025-01-02T20:20:18Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2024-12-12T19:09:04Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2024-12-03T21:12:08Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2024-12-03T01:16:22Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2024-11-27T17:47:34Z"
        },
        {
          "tag": "v0.3.10",
          "kind": "patch",
          "published_at": "2024-10-31T15:20:31Z"
        },
        {
          "tag": "v0.3.9",
          "kind": "patch",
          "published_at": "2024-10-25T17:04:37Z"
        },
        {
          "tag": "v0.3.8",
          "kind": "patch",
          "published_at": "2024-10-24T17:55:33Z"
        },
        {
          "tag": "v0.3.7",
          "kind": "patch",
          "published_at": "2024-10-23T17:37:35Z"
        },
        {
          "tag": "v0.3.6",
          "kind": "patch",
          "published_at": "2024-10-23T16:30:22Z"
        },
        {
          "tag": "v0.3.5",
          "kind": "patch",
          "published_at": "2024-10-23T02:12:05Z"
        },
        {
          "tag": "v0.3.4",
          "kind": "patch",
          "published_at": "2024-10-22T22:27:34Z"
        },
        {
          "tag": "v0.3.3",
          "kind": "patch",
          "published_at": "2024-10-22T20:52:34Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2024-10-21T13:52:38Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2024-10-18T19:48:26Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2024-10-17T22:37:03Z"
        },
        {
          "tag": "v0.2.17",
          "kind": "patch",
          "published_at": "2024-08-19T21:30:12Z"
        },
        {
          "tag": "v0.2.16",
          "kind": "patch",
          "published_at": "2024-07-12T18:04:29Z"
        },
        {
          "tag": "v0.2.15",
          "kind": "patch",
          "published_at": "2024-06-30T15:20:03Z"
        },
        {
          "tag": "v0.2.14",
          "kind": "patch",
          "published_at": "2024-06-17T17:04:06Z"
        },
        {
          "tag": "v0.2.13",
          "kind": "patch",
          "published_at": "2024-05-30T01:55:32Z"
        },
        {
          "tag": "v0.2.12",
          "kind": "patch",
          "published_at": "2024-05-29T18:09:52Z"
        },
        {
          "tag": "v0.2.11",
          "kind": "patch",
          "published_at": "2024-05-28T22:36:10Z"
        },
        {
          "tag": "v0.2.10",
          "kind": "patch",
          "published_at": "2024-05-28T04:34:15Z"
        },
        {
          "tag": "v0.2.9",
          "kind": "patch",
          "published_at": "2024-05-23T23:24:34Z"
        },
        {
          "tag": "v0.2.8",
          "kind": "patch",
          "published_at": "2024-05-18T04:28:29Z"
        },
        {
          "tag": "v0.2.7",
          "kind": "patch",
          "published_at": "2024-05-17T22:57:44Z"
        },
        {
          "tag": "v0.2.6",
          "kind": "patch",
          "published_at": "2024-05-16T22:46:27Z"
        },
        {
          "tag": "v0.2.5",
          "kind": "patch",
          "published_at": "2024-05-10T16:02:36Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6ea35fe17444db337cfcba42e13710daf4807cbc",
          "body": "CI fixes",
          "is_bot": false,
          "headline": "Merge pull request #1064 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T23:00:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9f6dd225074fa2ced8c9fe3ef459d8f2fd61ed7",
          "body": null,
          "is_bot": false,
          "headline": "CI fixes",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T22:02:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90c69a0fba41b7c68fdfc158094a24ed2522e83a",
          "body": null,
          "is_bot": false,
          "headline": "Update README",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T20:46:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f79e0014b2e8fc63c4e7382c96a5fa1b3a735d99",
          "body": null,
          "is_bot": false,
          "headline": "CI fixes",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T20:41:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "947d7688c0739297a7b9eb08b1a463e3a6853981",
          "body": "Dev",
          "is_bot": false,
          "headline": "Merge pull request #1062 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T19:35:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6169f6473332fbf436551c8625bc6dcd72010db",
          "body": null,
          "is_bot": false,
          "headline": "Update surya",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T19:34:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a7c02f123a4215ba74a0125a3d893f61620a064",
          "body": null,
          "is_bot": false,
          "headline": "Fix blocks",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T19:21:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebf1f3d1ab88af99320c980c809f44133c17053a",
          "body": null,
          "is_bot": false,
          "headline": "README fix",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T18:47:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15a468f2da8271a22948a2b98cc4e76fbed529a7",
          "body": "Add a `cpu` pytest marker on the model-free tests (config/CLI parsing,\nproviders) and a tests-cpu job on ubuntu-latest that runs `pytest -m cpu`.\nThe GPU job still runs the full suite; this catches CPU-only breakage\n(imports, weasyprint native libs, pdftext) that the GPU box never exercises.\n\nClaude-Session: https://claude.ai/code/session_0183fDKJ6yL7NFVegs24XdYb",
          "is_bot": false,
          "headline": "CI: run a CPU test subset on ubuntu alongside the GPU suite",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T18:09:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbb6713cb1b02cd7e52b53b6b0d676fd27b51b6e",
          "body": "Resolve the default conversion mode from the torch device in\nPdfConverter.__init__ (the single path all conversions flow through) and\ninject it into the shared config, so builders/processors read it. An\nexplicit mode always wins. Entry points that hardcoded \"balanced\" (server\nfield + upload form, streamlit) now leave mode unset so the device default\napplies; streamlit gains an \"auto\" option. Docs/help updated.\n\nClaude-Session: https://claude.ai/code/session_0183fDKJ6yL7NFVegs24XdYb",
          "is_bot": false,
          "headline": "Default mode by device: fast on CPU/MPS, balanced on GPU",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T18:09:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d59e56c7bd063c72c6411f2e1304f29f9e00d325",
          "body": null,
          "is_bot": false,
          "headline": "Add in olmocr bench tests",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T17:43:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "374237609f9b6b84b324c0c07aa4398de6b02a8d",
          "body": null,
          "is_bot": false,
          "headline": "Disable ocr in app",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T16:37:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3b85223d55ccf8c657ce11443aeae62a209f1a7",
          "body": null,
          "is_bot": false,
          "headline": "Error fixes",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T15:51:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "619377f17d9619253712d68fcd26e55e83830e0d",
          "body": null,
          "is_bot": false,
          "headline": "Swap to uv",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T15:26:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7525d0d10db952592c752e76fdad3c75a3eab39",
          "body": null,
          "is_bot": false,
          "headline": "Bump version",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-20T14:27:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c687c0dc03ff1f432ecd80d065e489e339643a8",
          "body": "Vik/surya v2 server",
          "is_bot": false,
          "headline": "Merge pull request #1 from datalab-to/vik/surya-v2-server",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-17T15:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc5b241477bf5a66ab4226a597bb73f9b0d44487",
          "body": null,
          "is_bot": false,
          "headline": "Pin surya-ocr to 0.22.0",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-17T14:40:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65f73c993dd021704aed14e1330b9f147a05ebac",
          "body": "…U/GPU fixes\n\nBenchmarks\n- New reproducible olmocr-bench harness in benchmarks/: inference.py\n  (marker over the bench, modes + worker concurrency, throughput + scoreable\n  output), postprocess.py (olmocr output normalization), summarize.py\n  (macro + digital-only), and native-parallel competitor ru\n[…]\n) and clarify the\n  API server's accepted params.\n\nLicensing\n- Switch code license to Apache 2.0 (LICENSE, pyproject, README badge + text).\n  Model weights keep the existing restrictive MODEL_LICENSE.",
          "is_bot": false,
          "headline": "Release prep: benchmarks harness, competitive results, Apache 2.0, CP…",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-17T14:38:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2173678cb6c53ac30752c58d8d226e997bf76d82",
          "body": null,
          "is_bot": false,
          "headline": "Speed improvements",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-15T22:29:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8de9dcc238022e2bb39c431fc6bd0ed5bcebeca6",
          "body": null,
          "is_bot": false,
          "headline": "Fix charts",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-15T18:38:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc3c3ba277c15dcb20e8abef1d227d59cd8058d4",
          "body": "…e selector\n\n- printer.py: only default-False bools render as CLI flags, so tri-state\n  options like --ocr_inline_math accept explicit true/false\n- MarginaliaProcessor respects keep_pageheader/pagefooter_in_output\n- streamlit + extraction apps expose the balanced/fast mode selector\n- Docstring/help \n[…]\nection-model references, keep_chars\n  pdftext-only note, disable_multiprocessing scope, LLM redo_inline_math\n  cross-references\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Flag audit fixes: tri-state CLI bools, marginalia keep flags, app mod…",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-07T17:01:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b69f6577ff4d3721e4feb740d9bea2f272dbdccd",
          "body": "- Claude default claude-sonnet-4-6 -> claude-opus-4-8 (sonnet-4-6 is\n  superseded and not in the structured-outputs support set, which the\n  service relies on via messages.parse)\n- Ollama default llama3.2-vision -> gemma3\n- Gemini/Vertex gemini-3.5-flash verified valid against the live models\n  API;\n[…]\nquests,\n0 errors), Claude request shape assembles and degrades gracefully on\nauth failure, 8/8 mocked LLM processor tests pass.\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Update LLM service model defaults and verify LLM mode end to end",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-07T01:22:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b83131845199e4389cf006159042c878e2d72658",
          "body": "Batch parallelization:\n- The parent now reads the inference server's capacity after spawn and\n  budgets aggregate client concurrency across workers (~1.5x capacity)\n  instead of every worker independently fanning out to full capacity\n- --disable_ocr batch runs skip the server entirely and size the p\n[…]\nkipped\n- marker_extract: add missing streamlit-ace dependency\n- Server API: add mode param (fast/balanced) to /marker endpoints\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Clean up entrypoints and flags; budget batch VLM concurrency",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-06T00:43:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a86bee6df33544838353f0aab3924d7f059c7eea",
          "body": "Reading/quality improvements (all validated on olmocr-bench without\nbench-specific behavior):\n- Inline-math auto-OCR (balanced): text blocks with a math signal (math\n  fonts, math-unicode density) are block-OCR'd so inline math becomes\n  <math> instead of garbled pdftext glyphs; page-level escalatio\n[…]\nck promotes the\n  whole page to full-page re-OCR\n- disable_ocr now fully disables the VLM (equations included) on either\n  mode\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Improve quality across modes and consolidate mode semantics",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-04T16:10:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f63811aa23d62c945cedfd56d49710f58815b2e",
          "body": "Remove the rf-detr table structure model. Tables now come from:\n- scanned/garbled pages: the full-page OCR already emits table HTML (Table\n  is not skipped in recognition), so those blocks are left untouched\n- digital pages: reconstruct the table from the PDF text layer with CPU-only\n  heuristics (m\n[…]\n spans so TOC dot\nleaders don't explode the column count. Tested across sample PDFs: 35\ntables, all produced HTML, no failures.\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Replace table model with pdftext reconstruction + full-page OCR",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-07-03T15:30:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ff7eef357df3439a243d431c90c37ae5da80fc3c",
          "body": "ReferenceProcessor iterated block.structure directly for ListGroup/\nFigureGroup/TableGroup blocks, but the layout models can emit a group\nregion (e.g. List-Group -> ListGroup) that never receives children, so\nits structure stays None. On pages that also have link references this\nraised \"'NoneType' o\n[…]\nturns [] when\nstructure is None (and is otherwise identical), matching the None guard\nalready used elsewhere in this processor.\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Fix crash on layout-detected groups with no children",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-06-30T21:13:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "faa7e885485b13d16068feca09eb06f6a34b1cf0",
          "body": "Mode selection (--mode balanced|fast):\n- balanced (GPU): VLM layout + full-page OCR\n- fast (CPU): rf-detr/onnx layout + tables, pdftext text, OCR only\n  garbled/empty content; clean digital docs never start the VLM server\n\nReading order:\n- Defer to surya's learned AR reading-order head (works on OCR\n[…]\nls + pdftext text; recognition HTML for scanned tables). Models,\nconfig, and tests updated; new tests/converters/test_modes.py.\n\nClaude-Session: https://claude.ai/code/session_01SxGJdyccsAdKbjNAth35MA",
          "is_bot": false,
          "headline": "Add fast/balanced modes, CPU reading order, and pipeline perf work",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-06-30T17:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef16c2caa29d76f3ca3126944d2e1be79f560bda",
          "body": null,
          "is_bot": true,
          "headline": "@pablopupo has signed the CLA in datalab-to/marker#1056",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-29T20:54:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5684e765530347ad25d25f781c337822a8854d25",
          "body": null,
          "is_bot": true,
          "headline": "@clach04 has signed the CLA in datalab-to/marker#1051",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-23T00:21:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ccc19560de33a8b6a6ea8a43eeaa419c31b8ac3",
          "body": null,
          "is_bot": false,
          "headline": "Refactor",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2026-06-10T21:52:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3739db19b78df7d54c1d70340ad5d15134f8b89",
          "body": null,
          "is_bot": true,
          "headline": "@anyasabo has signed the CLA in datalab-to/marker#1041",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T21:20:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "627a873612064065c2469462ce3a098087a5c648",
          "body": null,
          "is_bot": true,
          "headline": "@detoxj7 has signed the CLA in datalab-to/marker#1046",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T06:03:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d9e7bdcab814979b9b63ddb18db8b9b27b2d018",
          "body": null,
          "is_bot": true,
          "headline": "@aashishkumar-tech has signed the CLA in datalab-to/marker#1044",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T00:59:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ae38895d6e11cbc8fb4a60a0750b3bac479e304",
          "body": null,
          "is_bot": true,
          "headline": "@bazzi24 has signed the CLA in datalab-to/marker#1034",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-05T08:04:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2cf66fcc40077aca565a3daa2541bbff5bab330d",
          "body": null,
          "is_bot": false,
          "headline": "Dev",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2026-04-24T18:33:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca5fad27dfa2e805474adaa20bc6b977e9da04dd",
          "body": null,
          "is_bot": false,
          "headline": "update readme",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2026-04-22T20:59:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57c4c61b1c26f26a4d60555b9917c8b5aa645e21",
          "body": null,
          "is_bot": false,
          "headline": "update readme",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2026-04-22T20:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cdad3097b865ac17d34c0bd4ed9bcddf6958ed4",
          "body": null,
          "is_bot": true,
          "headline": "@ahmgam has signed the CLA in datalab-to/marker#1025",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-14T00:31:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2085e102258dc6824f594e1429e8fe5c69dde7fe",
          "body": null,
          "is_bot": true,
          "headline": "@Momen-Walied has signed the CLA in datalab-to/marker#1023",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-10T16:21:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b5896a59add0df64e5ac35a300bc62063f88a79",
          "body": null,
          "is_bot": true,
          "headline": "@YizukiAme has signed the CLA in datalab-to/marker#1022",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-10T15:57:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b84acf72213c69bca7af23fa07c5893c5bdecee",
          "body": null,
          "is_bot": true,
          "headline": "@alber70g has signed the CLA in datalab-to/marker#1016",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-10T10:33:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4407123810556577e04cc7eea767e1fed3958553",
          "body": null,
          "is_bot": true,
          "headline": "@avianion has signed the CLA in datalab-to/marker#1015",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-04T10:54:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d63e3d943b2cbcfd9c809f141f9cdb21294001d5",
          "body": null,
          "is_bot": true,
          "headline": "@EurFelux has signed the CLA in datalab-to/marker#1009",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-10T11:23:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28854f015f96ca7dcb6ec5943c6b5f6fe7ca83b4",
          "body": null,
          "is_bot": true,
          "headline": "@jcs-zfc has signed the CLA in datalab-to/marker#1004",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-04T20:12:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38a267025cfdd13691fc6e381bebedad3db19a2d",
          "body": null,
          "is_bot": true,
          "headline": "@Br1an67 has signed the CLA in datalab-to/marker#994",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-01T15:53:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b929a4e32f225715eb508bb97f45607fd0d5931d",
          "body": null,
          "is_bot": true,
          "headline": "@ambicuity has signed the CLA in datalab-to/marker#989",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-02-09T18:31:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a41cdbac6232a10aaf4fad29f8e6c1a0c2a0808",
          "body": "Dev",
          "is_bot": false,
          "headline": "Merge pull request #981 from datalab-to/dev",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2026-01-31T00:01:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c01faa96da1524777c5154e5cb80f990fc5a993",
          "body": "Tarun/surya latexfix bump",
          "is_bot": false,
          "headline": "Merge pull request #980 from datalab-to/tarun/surya-latexfix-bump",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2026-01-30T22:49:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31f4a42089a71933c75a645aff71da844b5ed36c",
          "body": null,
          "is_bot": false,
          "headline": "Bump to new surya with latex hotfix",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2026-01-30T21:54:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49c69fe675850f7c379c9a997da941cfd7977e44",
          "body": null,
          "is_bot": true,
          "headline": "@kamransoomro84 has signed the CLA in datalab-to/marker#977",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-01-27T17:46:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa088e539462ee0e887f6d79da030e34911183fa",
          "body": null,
          "is_bot": true,
          "headline": "@ag-mout has signed the CLA in datalab-to/marker#973",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-01-20T09:34:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64f5c8e04a846956a3ca44c1436a0cd98e67ec81",
          "body": null,
          "is_bot": true,
          "headline": "@fabnemEPFL has signed the CLA in datalab-to/marker#969",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-01-07T11:24:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b607c93f94858d750013dfcd399dec6aa9d96ea1",
          "body": null,
          "is_bot": true,
          "headline": "@linminhtoo has signed the CLA in datalab-to/marker#962",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-12-25T15:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe9c0f94b03fa2c5853db4c212ce2b37e7a5fd4a",
          "body": null,
          "is_bot": true,
          "headline": "@lumoe has signed the CLA in datalab-to/marker#949",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-11-19T14:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0bf5ab04ae8c83be4b8e22d8945bf8ec8f98945",
          "body": null,
          "is_bot": true,
          "headline": "@kipavy has signed the CLA in datalab-to/marker#940",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-11-07T08:10:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3778ae6b4e2d9c4341f80b73a70d431e99d4cfbf",
          "body": "Add model license",
          "is_bot": false,
          "headline": "Merge pull request #928 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-10-21T17:36:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c12b302f3901fa195891fafad7d535b9011c5ae",
          "body": null,
          "is_bot": false,
          "headline": "Add model license",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-10-21T17:35:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5576c6223ddf17ad84c9d8238ce235e81bfec15c",
          "body": "Fix license",
          "is_bot": false,
          "headline": "Merge pull request #926 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-10-20T15:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ccf586d290a90f6db0a655779b7274f20ad213c3",
          "body": null,
          "is_bot": false,
          "headline": "Fix license",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-10-20T15:33:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8222fbdf62935c1ef1758129bdeea504193a7942",
          "body": null,
          "is_bot": true,
          "headline": "@Vidarshana26204 has signed the CLA in datalab-to/marker#916",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-10-12T16:26:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95753c3efcf5928ab728ba5a19d0481989448bba",
          "body": null,
          "is_bot": false,
          "headline": "Dev",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-10-07T16:16:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60109542ab27fd63c2334547b10c3dbe18ef8ace",
          "body": null,
          "is_bot": false,
          "headline": "update readme",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-10-07T16:15:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6ee3c18ee3dbe4b0514afa5f24be4ede7051e07",
          "body": null,
          "is_bot": false,
          "headline": "tweak readme",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-10-07T15:45:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5000be48f9e68ffe64c685a752b2b1239b7411b",
          "body": null,
          "is_bot": true,
          "headline": "@ozzzzz has signed the CLA in datalab-to/marker#905",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-10-02T23:18:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7385fa1a8d477db3d317ebf5da42f0a60d8b472",
          "body": "Dev",
          "is_bot": false,
          "headline": "Merge pull request #902 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-30T15:38:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eccb51ae508af76d20d1c886d929d1668d1004ec",
          "body": null,
          "is_bot": false,
          "headline": "Add thinking budget",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-30T15:36:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e8f6b3fab0e14d98e8fa7d431642b9682038963",
          "body": "Enable passing arbitrary config",
          "is_bot": false,
          "headline": "Merge pull request #901 from datalab-to/vik/fix_config",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-29T18:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "282e5a0fba47a803a4fd16738e6e79932f698e54",
          "body": null,
          "is_bot": false,
          "headline": "Fix test",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-29T18:19:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67edd6f4ecf96e00aea9c0a4d0a46263b8685c84",
          "body": null,
          "is_bot": false,
          "headline": "Bump version",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-29T17:08:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "156cf34f191d23f6747898435f2dad88de85a7b2",
          "body": "Fix typo in superscript/subscript condition check",
          "is_bot": false,
          "headline": "Merge pull request #897 from Tenkeboks/patch-1",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-29T17:06:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "383e3e3803eaabbc97359a910c9685fcc0b3e17b",
          "body": null,
          "is_bot": false,
          "headline": "Enable passing arbitrary config",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-29T17:04:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e28735141e13dd099ba0d06e7f5ae8e1a4141c7d",
          "body": null,
          "is_bot": true,
          "headline": "@Tenkeboks has signed the CLA in datalab-to/marker#897",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-09-26T14:05:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67e1b8cb75cd7c5b6f8fdbd0f0ff0c6fa33639d7",
          "body": "Fix condition that incorrectly checked 'superscript or superscript' instead of 'superscript or subscript' in PDF text processing. This typo would prevent subscript text from having whitespace trimmed, causing inconsistent formatting between superscript and subscript spans. Detected using Claude Code.",
          "is_bot": false,
          "headline": "Fix typo in superscript/subscript condition check",
          "author_name": "Tenkeboks",
          "author_login": "Tenkeboks",
          "committed_at": "2025-09-26T13:59:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91c160790f9ab5e17d4841de1eaa89fcf6274b34",
          "body": null,
          "is_bot": true,
          "headline": "@aud has signed the CLA in datalab-to/marker#895",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-09-25T02:21:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f089d98e41c6988de414894cf95a12c5e5b5d90",
          "body": null,
          "is_bot": false,
          "headline": "Bump version",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-24T01:18:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ddbade5c55bfb0795dc4caa56deb79bed2ceece",
          "body": "Dev",
          "is_bot": false,
          "headline": "Merge pull request #893 from datalab-to/dev",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-24T01:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be142595a483eb7cd9f5851a0fccf775af456858",
          "body": null,
          "is_bot": false,
          "headline": "Fix tests",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-24T00:15:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94d4edd8da653e6ac3fe248dc4860a085b35f6ff",
          "body": null,
          "is_bot": false,
          "headline": "Update tests for new model",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T23:12:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0dddab0f3c421e8ab74226abc3f9ef1a3202c47",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'dev' of https://github.com/datalab-to/marker into dev",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T21:45:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93f901e02333b336dbb667c3379c8978669f0a81",
          "body": null,
          "is_bot": false,
          "headline": "Bump surya versions",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T21:45:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "363d033c64c3f59ca05716c5a299c97a34c03b4d",
          "body": "Layout release",
          "is_bot": false,
          "headline": "Merge pull request #892 from datalab-to/layout-release",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T21:32:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54d661d7027f7c54d75056ff172c9f8347ea6c13",
          "body": null,
          "is_bot": false,
          "headline": "Separate layout and OCR models",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T19:50:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a284743fe972dcee70d58a77489c72fda32beeb2",
          "body": null,
          "is_bot": false,
          "headline": "Guard around division by 0",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-23T17:19:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e35ceb4b1a59951e53c3f24eba0cc31242e1eb6",
          "body": null,
          "is_bot": false,
          "headline": "Include equations during line detection - Helps expand bad layout boxes",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-22T19:48:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08adc2569962fc67239038c77789919d8680f4ac",
          "body": null,
          "is_bot": false,
          "headline": "Adjust confidences to exclude bad detected lines",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-22T19:43:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3ace59cc0844f4d72fdf199f79912da6bd579aa",
          "body": null,
          "is_bot": true,
          "headline": "@himanshu-josh has signed the CLA in datalab-to/marker#891",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2025-09-19T09:48:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4e1a681193afc3a1c122fa43df7b9a57fae9a1e",
          "body": "Helps improve about 2% on olmo bench",
          "is_bot": false,
          "headline": "Add flag to support returning tables in HTML when rendering to markdown",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-17T19:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eabb23c45940721fa0bae669124903c5f836e047",
          "body": "Due to joint table-layout model, sometimes <table-cell> tags may show\nup in the topk for layout, which will break the lookup from `BlockTypes`\nFiltering to ignore those",
          "is_bot": false,
          "headline": "Minor fix in layout builder when constructing topk",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-17T19:34:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f461623986dce31f82a23d970aa190672e4dde3",
          "body": null,
          "is_bot": false,
          "headline": "Move to integrated layout-foundation model",
          "author_name": "Tarun Menta",
          "author_login": "tarun-menta",
          "committed_at": "2025-09-17T01:26:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d26bf3a59c8683f0bdcea7df1c9ebd13b30a5bbe",
          "body": null,
          "is_bot": false,
          "headline": "Dev",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-09-10T19:59:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4ea30f0c5810ce717558445c0fd2e99e4d88537",
          "body": null,
          "is_bot": false,
          "headline": "small copy + readme update",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-09-10T19:59:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1af3619d3f78cc1e20042816412960009b5f7b91",
          "body": null,
          "is_bot": false,
          "headline": "Copy + file name fix",
          "author_name": "u-ashish",
          "author_login": "u-ashish",
          "committed_at": "2025-09-10T19:48:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dfabb2b8cf50958afb324d5e842cee33aeebaeb",
          "body": "Dev",
          "is_bot": false,
          "headline": "Merge pull request #877 from datalab-to/dev",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-09T20:43:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "610e9ee3e21500df28d43c7f33259ceb6d7b9bc1",
          "body": "Vik/quality",
          "is_bot": false,
          "headline": "Merge pull request #876 from datalab-to/vik/quality",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-09T19:38:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27eeb4451ed409fedceaa89d58efdced7f0599bf",
          "body": null,
          "is_bot": false,
          "headline": "Minor fixes",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-09T19:37:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "906627b6f994fe17179776d5a3726eef9c55bdf5",
          "body": null,
          "is_bot": false,
          "headline": "Minor fixes",
          "author_name": "Vik Paruchuri",
          "author_login": "VikParuchuri",
          "committed_at": "2025-09-08T22:19:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "676c6b92c67a436e401151cccbef483ed743aeac",
          "body": "- Add modal deployment example\n- Update README",
          "is_bot": false,
          "headline": "Dev",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-09-07T17:04:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51042c1f6f9823aecb6260c28bff6e6780d4b07b",
          "body": null,
          "is_bot": false,
          "headline": "mention on prem",
          "author_name": "u-ashish",
          "author_login": "u-ashish",
          "committed_at": "2025-09-07T17:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85a7abeead028e8113712b5e515650b7b09bd654",
          "body": null,
          "is_bot": false,
          "headline": "Add Modal example for marker deployment",
          "author_name": "Ashish Uppala",
          "author_login": "u-ashish",
          "committed_at": "2025-09-05T21:14:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25a6ace29a1cc8c199ea620ab649a526afe41c55",
          "body": null,
          "is_bot": false,
          "headline": "update readme",
          "author_name": "u-ashish",
          "author_login": "u-ashish",
          "committed_at": "2025-09-05T20:55:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 72,
      "commits_last_year": 208,
      "latest_release_at": "2026-07-20T19:41:39Z",
      "latest_release_tag": "v2.0.0",
      "releases_from_tags": false,
      "days_since_last_push": 11,
      "active_weeks_last_year": 32,
      "days_since_latest_release": 11,
      "mean_days_between_releases": 37.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "marker-pdf",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "markdown",
            "nlp",
            "ocr",
            "pdf"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/marker-pdf/",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/datalab-to/marker",
          "versions_count": 82,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 521987,
          "first_published_at": "2023-12-19T21:00:21.372043Z",
          "latest_published_at": "2026-07-20T19:41:54.544633Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 11
        }
      ]
    },
    "popularity": {
      "forks": 2693,
      "stars": 38094,
      "watchers": 133,
      "fork_history": {
        "days": [
          {
            "date": "2025-08-11",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-13",
            "count": 5
          },
          {
            "date": "2025-08-14",
            "count": 8
          },
          {
            "date": "2025-08-15",
            "count": 12
          },
          {
            "date": "2025-08-16",
            "count": 2
          },
          {
            "date": "2025-08-18",
            "count": 5
          },
          {
            "date": "2025-08-19",
            "count": 4
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-08-21",
            "count": 2
          },
          {
            "date": "2025-08-22",
            "count": 1
          },
          {
            "date": "2025-08-24",
            "count": 3
          },
          {
            "date": "2025-08-25",
            "count": 2
          },
          {
            "date": "2025-08-26",
            "count": 2
          },
          {
            "date": "2025-08-27",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-08-30",
            "count": 1
          },
          {
            "date": "2025-08-31",
            "count": 3
          },
          {
            "date": "2025-09-01",
            "count": 3
          },
          {
            "date": "2025-09-02",
            "count": 4
          },
          {
            "date": "2025-09-03",
            "count": 2
          },
          {
            "date": "2025-09-04",
            "count": 3
          },
          {
            "date": "2025-09-05",
            "count": 3
          },
          {
            "date": "2025-09-06",
            "count": 4
          },
          {
            "date": "2025-09-07",
            "count": 2
          },
          {
            "date": "2025-09-08",
            "count": 1
          },
          {
            "date": "2025-09-09",
            "count": 3
          },
          {
            "date": "2025-09-10",
            "count": 1
          },
          {
            "date": "2025-09-11",
            "count": 4
          },
          {
            "date": "2025-09-12",
            "count": 3
          },
          {
            "date": "2025-09-13",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 2
          },
          {
            "date": "2025-09-15",
            "count": 3
          },
          {
            "date": "2025-09-16",
            "count": 6
          },
          {
            "date": "2025-09-17",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 4
          },
          {
            "date": "2025-09-19",
            "count": 2
          },
          {
            "date": "2025-09-22",
            "count": 5
          },
          {
            "date": "2025-09-23",
            "count": 3
          },
          {
            "date": "2025-09-25",
            "count": 3
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-27",
            "count": 2
          },
          {
            "date": "2025-09-28",
            "count": 3
          },
          {
            "date": "2025-09-30",
            "count": 1
          },
          {
            "date": "2025-10-01",
            "count": 1
          },
          {
            "date": "2025-10-02",
            "count": 2
          },
          {
            "date": "2025-10-03",
            "count": 2
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-07",
            "count": 3
          },
          {
            "date": "2025-10-08",
            "count": 2
          },
          {
            "date": "2025-10-09",
            "count": 1
          },
          {
            "date": "2025-10-10",
            "count": 5
          },
          {
            "date": "2025-10-11",
            "count": 5
          },
          {
            "date": "2025-10-12",
            "count": 4
          },
          {
            "date": "2025-10-13",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 4
          },
          {
            "date": "2025-10-15",
            "count": 5
          },
          {
            "date": "2025-10-16",
            "count": 1
          },
          {
            "date": "2025-10-18",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 2
          },
          {
            "date": "2025-10-20",
            "count": 3
          },
          {
            "date": "2025-10-21",
            "count": 4
          },
          {
            "date": "2025-10-22",
            "count": 2
          },
          {
            "date": "2025-10-23",
            "count": 2
          },
          {
            "date": "2025-10-24",
            "count": 3
          },
          {
            "date": "2025-10-25",
            "count": 4
          },
          {
            "date": "2025-10-26",
            "count": 2
          },
          {
            "date": "2025-10-27",
            "count": 1
          },
          {
            "date": "2025-10-28",
            "count": 1
          },
          {
            "date": "2025-10-29",
            "count": 5
          },
          {
            "date": "2025-10-30",
            "count": 3
          },
          {
            "date": "2025-11-01",
            "count": 4
          },
          {
            "date": "2025-11-02",
            "count": 3
          },
          {
            "date": "2025-11-03",
            "count": 4
          },
          {
            "date": "2025-11-04",
            "count": 1
          },
          {
            "date": "2025-11-05",
            "count": 2
          },
          {
            "date": "2025-11-06",
            "count": 4
          },
          {
            "date": "2025-11-07",
            "count": 2
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-10",
            "count": 4
          },
          {
            "date": "2025-11-11",
            "count": 2
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-13",
            "count": 2
          },
          {
            "date": "2025-11-14",
            "count": 2
          },
          {
            "date": "2025-11-15",
            "count": 2
          },
          {
            "date": "2025-11-16",
            "count": 4
          },
          {
            "date": "2025-11-17",
            "count": 3
          },
          {
            "date": "2025-11-18",
            "count": 1
          },
          {
            "date": "2025-11-19",
            "count": 2
          },
          {
            "date": "2025-11-21",
            "count": 2
          },
          {
            "date": "2025-11-22",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 3
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-25",
            "count": 2
          },
          {
            "date": "2025-11-26",
            "count": 1
          },
          {
            "date": "2025-11-27",
            "count": 2
          },
          {
            "date": "2025-11-28",
            "count": 3
          },
          {
            "date": "2025-11-30",
            "count": 1
          },
          {
            "date": "2025-12-01",
            "count": 1
          },
          {
            "date": "2025-12-02",
            "count": 2
          },
          {
            "date": "2025-12-03",
            "count": 4
          },
          {
            "date": "2025-12-04",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-07",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 5
          },
          {
            "date": "2025-12-10",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2025-12-12",
            "count": 1
          },
          {
            "date": "2025-12-13",
            "count": 1
          },
          {
            "date": "2025-12-14",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 4
          },
          {
            "date": "2025-12-18",
            "count": 5
          },
          {
            "date": "2025-12-19",
            "count": 4
          },
          {
            "date": "2025-12-20",
            "count": 5
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 3
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 2
          },
          {
            "date": "2025-12-25",
            "count": 2
          },
          {
            "date": "2025-12-26",
            "count": 3
          },
          {
            "date": "2025-12-28",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 4
          },
          {
            "date": "2025-12-30",
            "count": 4
          },
          {
            "date": "2025-12-31",
            "count": 2
          },
          {
            "date": "2026-01-02",
            "count": 1
          },
          {
            "date": "2026-01-04",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 4
          },
          {
            "date": "2026-01-06",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 2
          },
          {
            "date": "2026-01-08",
            "count": 3
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 1
          },
          {
            "date": "2026-01-11",
            "count": 2
          },
          {
            "date": "2026-01-12",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 4
          },
          {
            "date": "2026-01-15",
            "count": 5
          },
          {
            "date": "2026-01-16",
            "count": 3
          },
          {
            "date": "2026-01-17",
            "count": 2
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 3
          },
          {
            "date": "2026-01-20",
            "count": 4
          },
          {
            "date": "2026-01-21",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 4
          },
          {
            "date": "2026-01-24",
            "count": 2
          },
          {
            "date": "2026-01-25",
            "count": 2
          },
          {
            "date": "2026-01-26",
            "count": 2
          },
          {
            "date": "2026-01-27",
            "count": 1
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 2
          },
          {
            "date": "2026-01-30",
            "count": 3
          },
          {
            "date": "2026-01-31",
            "count": 3
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-03",
            "count": 3
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 2
          },
          {
            "date": "2026-02-06",
            "count": 2
          },
          {
            "date": "2026-02-07",
            "count": 2
          },
          {
            "date": "2026-02-08",
            "count": 3
          },
          {
            "date": "2026-02-09",
            "count": 3
          },
          {
            "date": "2026-02-10",
            "count": 3
          },
          {
            "date": "2026-02-11",
            "count": 3
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-13",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 2
          },
          {
            "date": "2026-02-15",
            "count": 2
          },
          {
            "date": "2026-02-16",
            "count": 1
          },
          {
            "date": "2026-02-17",
            "count": 2
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 2
          },
          {
            "date": "2026-02-20",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 3
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-24",
            "count": 3
          },
          {
            "date": "2026-02-25",
            "count": 4
          },
          {
            "date": "2026-02-26",
            "count": 4
          },
          {
            "date": "2026-02-27",
            "count": 4
          },
          {
            "date": "2026-03-01",
            "count": 4
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 3
          },
          {
            "date": "2026-03-04",
            "count": 3
          },
          {
            "date": "2026-03-05",
            "count": 3
          },
          {
            "date": "2026-03-06",
            "count": 5
          },
          {
            "date": "2026-03-08",
            "count": 2
          },
          {
            "date": "2026-03-09",
            "count": 4
          },
          {
            "date": "2026-03-10",
            "count": 7
          },
          {
            "date": "2026-03-11",
            "count": 4
          },
          {
            "date": "2026-03-12",
            "count": 3
          },
          {
            "date": "2026-03-13",
            "count": 7
          },
          {
            "date": "2026-03-14",
            "count": 2
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 13
          },
          {
            "date": "2026-03-17",
            "count": 5
          },
          {
            "date": "2026-03-18",
            "count": 5
          },
          {
            "date": "2026-03-19",
            "count": 2
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 3
          },
          {
            "date": "2026-03-22",
            "count": 2
          },
          {
            "date": "2026-03-23",
            "count": 2
          },
          {
            "date": "2026-03-24",
            "count": 3
          },
          {
            "date": "2026-03-25",
            "count": 2
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 5
          },
          {
            "date": "2026-03-29",
            "count": 3
          },
          {
            "date": "2026-03-30",
            "count": 2
          },
          {
            "date": "2026-03-31",
            "count": 5
          },
          {
            "date": "2026-04-01",
            "count": 4
          },
          {
            "date": "2026-04-02",
            "count": 2
          },
          {
            "date": "2026-04-03",
            "count": 4
          },
          {
            "date": "2026-04-04",
            "count": 2
          },
          {
            "date": "2026-04-05",
            "count": 2
          },
          {
            "date": "2026-04-06",
            "count": 6
          },
          {
            "date": "2026-04-07",
            "count": 4
          },
          {
            "date": "2026-04-08",
            "count": 4
          },
          {
            "date": "2026-04-09",
            "count": 2
          },
          {
            "date": "2026-04-10",
            "count": 5
          },
          {
            "date": "2026-04-11",
            "count": 5
          },
          {
            "date": "2026-04-12",
            "count": 4
          },
          {
            "date": "2026-04-13",
            "count": 3
          },
          {
            "date": "2026-04-14",
            "count": 4
          },
          {
            "date": "2026-04-15",
            "count": 5
          },
          {
            "date": "2026-04-16",
            "count": 2
          },
          {
            "date": "2026-04-17",
            "count": 7
          },
          {
            "date": "2026-04-18",
            "count": 2
          },
          {
            "date": "2026-04-19",
            "count": 4
          },
          {
            "date": "2026-04-20",
            "count": 3
          },
          {
            "date": "2026-04-21",
            "count": 7
          },
          {
            "date": "2026-04-22",
            "count": 4
          },
          {
            "date": "2026-04-23",
            "count": 4
          },
          {
            "date": "2026-04-24",
            "count": 4
          },
          {
            "date": "2026-04-25",
            "count": 3
          },
          {
            "date": "2026-04-26",
            "count": 4
          },
          {
            "date": "2026-04-27",
            "count": 3
          },
          {
            "date": "2026-04-28",
            "count": 4
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-04-30",
            "count": 5
          },
          {
            "date": "2026-05-01",
            "count": 2
          },
          {
            "date": "2026-05-02",
            "count": 9
          },
          {
            "date": "2026-05-03",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 4
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 2
          },
          {
            "date": "2026-05-07",
            "count": 6
          },
          {
            "date": "2026-05-08",
            "count": 5
          },
          {
            "date": "2026-05-09",
            "count": 4
          },
          {
            "date": "2026-05-10",
            "count": 5
          },
          {
            "date": "2026-05-11",
            "count": 3
          },
          {
            "date": "2026-05-13",
            "count": 7
          },
          {
            "date": "2026-05-14",
            "count": 5
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 3
          },
          {
            "date": "2026-05-17",
            "count": 2
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 4
          },
          {
            "date": "2026-05-21",
            "count": 1
          },
          {
            "date": "2026-05-22",
            "count": 5
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 2
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 4
          },
          {
            "date": "2026-05-29",
            "count": 4
          },
          {
            "date": "2026-05-30",
            "count": 2
          },
          {
            "date": "2026-05-31",
            "count": 2
          },
          {
            "date": "2026-06-01",
            "count": 2
          },
          {
            "date": "2026-06-02",
            "count": 3
          },
          {
            "date": "2026-06-03",
            "count": 6
          },
          {
            "date": "2026-06-04",
            "count": 5
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 2
          },
          {
            "date": "2026-06-08",
            "count": 2
          },
          {
            "date": "2026-06-09",
            "count": 3
          },
          {
            "date": "2026-06-10",
            "count": 2
          },
          {
            "date": "2026-06-11",
            "count": 3
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 4
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 3
          },
          {
            "date": "2026-06-17",
            "count": 6
          },
          {
            "date": "2026-06-18",
            "count": 2
          },
          {
            "date": "2026-06-19",
            "count": 3
          },
          {
            "date": "2026-06-22",
            "count": 5
          },
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-24",
            "count": 3
          },
          {
            "date": "2026-06-25",
            "count": 5
          },
          {
            "date": "2026-06-26",
            "count": 6
          },
          {
            "date": "2026-06-27",
            "count": 8
          },
          {
            "date": "2026-06-28",
            "count": 5
          },
          {
            "date": "2026-06-29",
            "count": 10
          },
          {
            "date": "2026-06-30",
            "count": 7
          },
          {
            "date": "2026-07-01",
            "count": 25
          },
          {
            "date": "2026-07-02",
            "count": 10
          },
          {
            "date": "2026-07-03",
            "count": 11
          },
          {
            "date": "2026-07-04",
            "count": 5
          },
          {
            "date": "2026-07-05",
            "count": 3
          },
          {
            "date": "2026-07-06",
            "count": 4
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 11
          },
          {
            "date": "2026-07-09",
            "count": 3
          },
          {
            "date": "2026-07-10",
            "count": 4
          },
          {
            "date": "2026-07-11",
            "count": 6
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 4
          },
          {
            "date": "2026-07-14",
            "count": 3
          },
          {
            "date": "2026-07-15",
            "count": 4
          },
          {
            "date": "2026-07-16",
            "count": 4
          },
          {
            "date": "2026-07-17",
            "count": 3
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 2
          },
          {
            "date": "2026-07-20",
            "count": 2
          },
          {
            "date": "2026-07-21",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 2
          },
          {
            "date": "2026-07-23",
            "count": 4
          },
          {
            "date": "2026-07-24",
            "count": 3
          },
          {
            "date": "2026-07-25",
            "count": 4
          },
          {
            "date": "2026-07-26",
            "count": 5
          },
          {
            "date": "2026-07-27",
            "count": 9
          },
          {
            "date": "2026-07-28",
            "count": 6
          },
          {
            "date": "2026-07-29",
            "count": 6
          },
          {
            "date": "2026-07-30",
            "count": 1
          },
          {
            "date": "2026-07-31",
            "count": 7
          },
          {
            "date": "2026-08-01",
            "count": 2
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 2693
      },
      "star_history": null,
      "open_issues_and_prs": 440
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 21129,
      "source_files_sampled": 172,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "pillow",
            "direct": true,
            "version": "10.4.0",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-45hq-cxwh-f6vc",
              "GHSA-4x4j-2g7c-83w6",
              "GHSA-5x94-69rx-g8h2",
              "GHSA-62p4-gmf7-7g93",
              "GHSA-6r8x-57c9-28j4",
              "GHSA-8v84-f9pq-wr9x",
              "GHSA-9hw9-ch79-4vh6",
              "GHSA-cfh3-3jmp-rvhc",
              "GHSA-fj7v-r99m-22gq",
              "GHSA-jjj6-mw9f-p565"
            ],
            "fixed_version": "12.3.0",
            "advisory_count": 34,
            "oldest_advisory_days": 170
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "critical": 1
        },
        "advisory_count": 34,
        "affected_count": 1,
        "assessed_count": 74,
        "malicious_count": 0,
        "assessed_package": "pypi:marker-pdf@2.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "pillow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=10.1.0,<11"
        },
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.4.2,<3"
        },
        {
          "name": "pydantic-settings",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.3,<3"
        },
        {
          "name": "transformers",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.12.1,<6"
        },
        {
          "name": "python-dotenv",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0,<2"
        },
        {
          "name": "torch",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7.0,<3"
        },
        {
          "name": "psutil",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=7.0.0,<8"
        },
        {
          "name": "tqdm",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.66.1,<5"
        },
        {
          "name": "ftfy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.1.1,<7"
        },
        {
          "name": "rapidfuzz",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.8.1,<4"
        },
        {
          "name": "surya-ocr",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.22.1,<0.23.0"
        },
        {
          "name": "regex",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2024.4.28"
        },
        {
          "name": "pdftext",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.7.0,<0.8.0"
        },
        {
          "name": "markdownify",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.1.0,<2"
        },
        {
          "name": "click",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=8.2.0,<9"
        },
        {
          "name": "markdown2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.5.2,<3"
        },
        {
          "name": "filetype",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.2.0,<2"
        },
        {
          "name": "google-genai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.40.0,<3"
        },
        {
          "name": "anthropic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.69.0,<1"
        },
        {
          "name": "openai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.2.0,<3"
        },
        {
          "name": "scikit-learn",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.6.1,<2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "anthropic",
            "direct": true,
            "version": "0.117.0",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filetype",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ftfy",
            "direct": true,
            "version": "6.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "google-genai",
            "direct": true,
            "version": "2.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown2",
            "direct": true,
            "version": "2.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "markdownify",
            "direct": true,
            "version": "1.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "openai",
            "direct": true,
            "version": "2.46.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pdftext",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "10.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": true,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-settings",
            "direct": true,
            "version": "2.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": true,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rapidfuzz",
            "direct": true,
            "version": "3.14.5",
            "ecosystem": "pypi"
          },
          {
            "name": "regex",
            "direct": true,
            "version": "2026.7.19",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": true,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": true,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "surya-ocr",
            "direct": true,
            "version": "0.22.1",
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": true,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tqdm",
            "direct": true,
            "version": "4.69.0",
            "ecosystem": "pypi"
          },
          {
            "name": "transformers",
            "direct": true,
            "version": "5.14.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": "altair",
            "direct": false,
            "version": "6.2.2",
            "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.2",
            "ecosystem": "pypi"
          },
          {
            "name": "appnope",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "apted",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "argon2-cffi",
            "direct": false,
            "version": "25.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "argon2-cffi-bindings",
            "direct": false,
            "version": "25.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "arrow",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "async-lru",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "async-timeout",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bleach",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "blinker",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "brotlicffi",
            "direct": false,
            "version": "1.2.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.6.17",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgv",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "cobble",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "comm",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cssselect2",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-bindings",
            "direct": false,
            "version": "13.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-pathfinder",
            "direct": false,
            "version": "1.5.6",
            "ecosystem": "pypi"
          },
          {
            "name": "cuda-toolkit",
            "direct": false,
            "version": "13.0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "datasets",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "debugpy",
            "direct": false,
            "version": "1.8.21",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dill",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "distance",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "distro",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docstring-parser",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ebooklib",
            "direct": false,
            "version": "0.18",
            "ecosystem": "pypi"
          },
          {
            "name": "et-xmlfile",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi",
            "direct": false,
            "version": "0.139.2",
            "ecosystem": "pypi"
          },
          {
            "name": "fastjsonschema",
            "direct": false,
            "version": "2.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.31.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fonttools",
            "direct": false,
            "version": "4.63.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fqdn",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "frozenlist",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fsspec",
            "direct": false,
            "version": "2026.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gitdb",
            "direct": false,
            "version": "4.0.12",
            "ecosystem": "pypi"
          },
          {
            "name": "gitpython",
            "direct": false,
            "version": "3.1.53",
            "ecosystem": "pypi"
          },
          {
            "name": "google-auth",
            "direct": false,
            "version": "2.55.2",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "hf-xet",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httptools",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "huggingface-hub",
            "direct": false,
            "version": "1.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.19",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipykernel",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "8.39.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-pygments-lexers",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ipywidgets",
            "direct": false,
            "version": "8.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "isoduration",
            "direct": false,
            "version": "20.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "itsdangerous",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "jiter",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": false,
            "version": "4.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-specifications",
            "direct": false,
            "version": "2025.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-builder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-client",
            "direct": false,
            "version": "8.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-console",
            "direct": false,
            "version": "6.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-core",
            "direct": false,
            "version": "5.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-events",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-lsp",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-server",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter-server-terminals",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-pygments",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-server",
            "direct": false,
            "version": "2.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jupyterlab-widgets",
            "direct": false,
            "version": "3.0.16",
            "ecosystem": "pypi"
          },
          {
            "name": "lark",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "latex2mathml",
            "direct": false,
            "version": "3.81.0",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mammoth",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "marker-pdf",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mistune",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mpmath",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multiprocess",
            "direct": false,
            "version": "0.70.19",
            "ecosystem": "pypi"
          },
          {
            "name": "narwhals",
            "direct": false,
            "version": "2.24.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nbclient",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nbconvert",
            "direct": false,
            "version": "7.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nbformat",
            "direct": false,
            "version": "5.10.4",
            "ecosystem": "pypi"
          },
          {
            "name": "nest-asyncio2",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "notebook",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "notebook-shim",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cublas",
            "direct": false,
            "version": "13.1.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-cupti",
            "direct": false,
            "version": "13.0.85",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-nvrtc",
            "direct": false,
            "version": "13.0.88",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cuda-runtime",
            "direct": false,
            "version": "13.0.96",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cudnn-cu13",
            "direct": false,
            "version": "9.20.0.48",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cufft",
            "direct": false,
            "version": "12.0.0.61",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cufile",
            "direct": false,
            "version": "1.15.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-curand",
            "direct": false,
            "version": "10.4.0.35",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusolver",
            "direct": false,
            "version": "12.0.4.66",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusparse",
            "direct": false,
            "version": "12.6.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-cusparselt-cu13",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nccl-cu13",
            "direct": false,
            "version": "2.29.7",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvjitlink",
            "direct": false,
            "version": "13.3.33",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvshmem-cu13",
            "direct": false,
            "version": "3.4.5",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-nvtx",
            "direct": false,
            "version": "13.0.85",
            "ecosystem": "pypi"
          },
          {
            "name": "opencv-python-headless",
            "direct": false,
            "version": "4.11.0.86",
            "ecosystem": "pypi"
          },
          {
            "name": "openpyxl",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "overrides",
            "direct": false,
            "version": "7.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pandocfilters",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prometheus-client",
            "direct": false,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "7.35.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyarrow",
            "direct": false,
            "version": "24.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1-modules",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.46.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydeck",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pydyf",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyee",
            "direct": false,
            "version": "13.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pypdfium2",
            "direct": false,
            "version": "5.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyphen",
            "direct": false,
            "version": "0.17.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mock",
            "direct": false,
            "version": "3.15.1",
            "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-json-logger",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-multipart",
            "direct": false,
            "version": "0.0.32",
            "ecosystem": "pypi"
          },
          {
            "name": "python-pptx",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pywinpty",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyzmq",
            "direct": false,
            "version": "27.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "referencing",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": false,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3339-validator",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3986-validator",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3987-syntax",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "0.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "2026.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "safetensors",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.15.3",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "send2trash",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "83.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "smmap",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.9",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "starlette",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "streamlit",
            "direct": false,
            "version": "1.59.2",
            "ecosystem": "pypi"
          },
          {
            "name": "streamlit-ace",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tabulate",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tenacity",
            "direct": false,
            "version": "9.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "terminado",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "pypi"
          },
          {
            "name": "threadpoolctl",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tinycss2",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tinyhtml5",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tokenizers",
            "direct": false,
            "version": "0.22.2",
            "ecosystem": "pypi"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "torchvision",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tornado",
            "direct": false,
            "version": "6.5.7",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "triton",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.27.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.3",
            "ecosystem": "pypi"
          },
          {
            "name": "uri-template",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "weasyprint",
            "direct": false,
            "version": "63.1",
            "ecosystem": "pypi"
          },
          {
            "name": "webcolors",
            "direct": false,
            "version": "25.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "webencodings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "websockets",
            "direct": false,
            "version": "16.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "widgetsnbextension",
            "direct": false,
            "version": "4.0.15",
            "ecosystem": "pypi"
          },
          {
            "name": "xlsxwriter",
            "direct": false,
            "version": "3.2.9",
            "ecosystem": "pypi"
          },
          {
            "name": "xxhash",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.24.5",
            "ecosystem": "pypi"
          },
          {
            "name": "zopfli",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 257,
        "direct_count": 22,
        "indirect_count": 235
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 79,
        "merged_prs": 233,
        "open_issues": 361,
        "closed_ratio": 0.473,
        "closed_issues": 324,
        "closed_unmerged_prs": 57
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "VikParuchuri",
          "commits": 790,
          "avatar_url": "https://avatars.githubusercontent.com/u/913340?v=4"
        },
        {
          "type": "User",
          "login": "iammosespaulr",
          "commits": 264,
          "avatar_url": "https://avatars.githubusercontent.com/u/28682735?v=4"
        },
        {
          "type": "User",
          "login": "tarun-menta",
          "commits": 187,
          "avatar_url": "https://avatars.githubusercontent.com/u/66506307?v=4"
        },
        {
          "type": "User",
          "login": "u-ashish",
          "commits": 23,
          "avatar_url": "https://avatars.githubusercontent.com/u/14264791?v=4"
        },
        {
          "type": "User",
          "login": "zanussbaum",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/33707069?v=4"
        },
        {
          "type": "User",
          "login": "MauritsBrinkman",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/153435669?v=4"
        },
        {
          "type": "User",
          "login": "runarmod",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/40912933?v=4"
        },
        {
          "type": "User",
          "login": "voberoi",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/26339?v=4"
        },
        {
          "type": "User",
          "login": "conjuncts",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/67614673?v=4"
        },
        {
          "type": "User",
          "login": "ArnoKlein",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/64474825?v=4"
        }
      ],
      "contributors_sampled": 26,
      "top_contributor_share": 0.599
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "cla.yml",
        "publish.yml",
        "scripts.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "2 out of 2 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": 0,
            "reason": "Found 0/4 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 3 contributing companies or organizations -- score normalized to 10",
            "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": 0,
            "reason": "no 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 1 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "29 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6ea35fe17444db337cfcba42e13710daf4807cbc",
        "ran_at": "2026-08-01T10:54:10Z",
        "aggregate_score": 3.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-30T07:54:33Z",
      "oldest_open_prs": [
        {
          "number": 9,
          "created_at": "2023-12-01T12:43:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 52,
          "created_at": "2023-12-27T14:52:04Z",
          "last_comment_at": "2024-03-12T17:37:44Z",
          "last_comment_author": "catalystK"
        },
        {
          "number": 61,
          "created_at": "2024-01-06T00:33:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 65,
          "created_at": "2024-01-13T04:03:04Z",
          "last_comment_at": "2024-01-13T18:19:04Z",
          "last_comment_author": "thetrebor"
        },
        {
          "number": 71,
          "created_at": "2024-01-22T08:57:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 74,
          "created_at": "2024-01-27T14:36:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 92,
          "created_at": "2024-03-07T12:11:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 93,
          "created_at": "2024-03-10T13:50:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 102,
          "created_at": "2024-04-09T03:52:14Z",
          "last_comment_at": "2024-04-15T11:38:53Z",
          "last_comment_author": "STOI123"
        },
        {
          "number": 161,
          "created_at": "2024-06-01T06:12:58Z",
          "last_comment_at": "2024-06-01T08:26:23Z",
          "last_comment_author": "korakot"
        },
        {
          "number": 176,
          "created_at": "2024-06-06T15:33:44Z",
          "last_comment_at": "2024-06-09T13:48:49Z",
          "last_comment_author": "q2333gh"
        },
        {
          "number": 190,
          "created_at": "2024-06-12T10:30:34Z",
          "last_comment_at": "2024-06-13T06:21:11Z",
          "last_comment_author": "itneshkumar"
        },
        {
          "number": 276,
          "created_at": "2024-09-06T06:54:58Z",
          "last_comment_at": "2024-09-06T06:56:25Z",
          "last_comment_author": "conscienceli"
        },
        {
          "number": 278,
          "created_at": "2024-09-07T01:11:57Z",
          "last_comment_at": "2025-08-21T05:59:45Z",
          "last_comment_author": "sabinofornies"
        },
        {
          "number": 431,
          "created_at": "2024-12-19T06:28:21Z",
          "last_comment_at": "2024-12-19T06:29:55Z",
          "last_comment_author": "uson1x"
        },
        {
          "number": 582,
          "created_at": "2025-02-26T01:46:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 595,
          "created_at": "2025-03-04T18:12:44Z",
          "last_comment_at": "2025-03-28T03:22:09Z",
          "last_comment_author": "ahmedmoorsy"
        },
        {
          "number": 646,
          "created_at": "2025-04-03T01:14:09Z",
          "last_comment_at": "2025-04-03T01:14:41Z",
          "last_comment_author": "eddiedozier"
        },
        {
          "number": 707,
          "created_at": "2025-05-23T14:13:15Z",
          "last_comment_at": "2025-05-23T14:18:32Z",
          "last_comment_author": "conjuncts"
        },
        {
          "number": 738,
          "created_at": "2025-06-09T07:19:56Z",
          "last_comment_at": "2025-06-09T07:20:09Z",
          "last_comment_author": "github-actions"
        }
      ],
      "last_merged_pr_at": "2026-07-20T23:00:20Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 66,
          "created_at": "2024-01-13T13:53:45Z",
          "last_comment_at": "2024-08-27T04:08:06Z",
          "last_comment_author": "bdevore17"
        },
        {
          "number": 68,
          "created_at": "2024-01-16T03:39:57Z",
          "last_comment_at": "2024-09-14T03:13:02Z",
          "last_comment_author": "SichangHe"
        },
        {
          "number": 69,
          "created_at": "2024-01-16T12:13:38Z",
          "last_comment_at": "2024-01-22T12:36:45Z",
          "last_comment_author": "SantiDianaClibrain"
        },
        {
          "number": 70,
          "created_at": "2024-01-18T00:42:37Z",
          "last_comment_at": "2025-06-11T01:22:46Z",
          "last_comment_author": "xiaoyao9184"
        },
        {
          "number": 84,
          "created_at": "2024-02-05T12:23:39Z",
          "last_comment_at": "2024-02-21T08:56:38Z",
          "last_comment_author": "nunamia"
        },
        {
          "number": 95,
          "created_at": "2024-03-22T14:26:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 96,
          "created_at": "2024-03-26T03:44:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 104,
          "created_at": "2024-04-29T02:45:18Z",
          "last_comment_at": "2024-06-10T17:20:30Z",
          "last_comment_author": "Chrissi2802"
        },
        {
          "number": 105,
          "created_at": "2024-05-01T14:37:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 119,
          "created_at": "2024-05-11T09:24:56Z",
          "last_comment_at": "2024-05-12T02:12:41Z",
          "last_comment_author": "VikParuchuri"
        },
        {
          "number": 123,
          "created_at": "2024-05-13T17:40:50Z",
          "last_comment_at": "2024-06-02T20:47:40Z",
          "last_comment_author": "Volkopat"
        },
        {
          "number": 124,
          "created_at": "2024-05-14T05:34:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 127,
          "created_at": "2024-05-16T15:08:48Z",
          "last_comment_at": "2024-05-17T13:05:19Z",
          "last_comment_author": "bjpcjp"
        },
        {
          "number": 132,
          "created_at": "2024-05-20T06:37:45Z",
          "last_comment_at": "2025-08-28T19:59:04Z",
          "last_comment_author": "rjmoggach"
        },
        {
          "number": 134,
          "created_at": "2024-05-21T17:03:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 135,
          "created_at": "2024-05-23T11:21:35Z",
          "last_comment_at": "2025-04-22T21:21:37Z",
          "last_comment_author": "attilajam"
        },
        {
          "number": 139,
          "created_at": "2024-05-24T07:44:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 141,
          "created_at": "2024-05-24T09:32:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 144,
          "created_at": "2024-05-28T09:15:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 148,
          "created_at": "2024-05-29T13:17:38Z",
          "last_comment_at": "2024-05-30T02:01:20Z",
          "last_comment_author": "homeant"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/datalab-to/marker",
    "host": "github.com",
    "name": "marker",
    "owner": "datalab-to"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 72,
      "inputs": {
        "security": 44,
        "vitality": 87,
        "community": 80,
        "governance": 62,
        "engineering": 82
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "commits_last_year": 208,
              "human_commit_share": 0.74,
              "days_since_last_push": 11,
              "active_weeks_last_year": 32
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 11 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "32/52 weeks with commits",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 32
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "208 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 208
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 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": 72,
              "latest_release_tag": "v2.0.0",
              "releases_from_tags": false,
              "days_since_latest_release": 11,
              "mean_days_between_releases": 37.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "72 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 72
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 11 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~37.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 37.1
                    }
                  }
                ],
                "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": 12,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 12 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 12
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 80,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "forks": 2693,
              "stars": 38094,
              "watchers": 133,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "38,094 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 38094
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2,693 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2693
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "133 watchers",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 133
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 95,
            "inputs": {
              "packages": [
                "marker-pdf"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 521987
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "521,987 downloads/month across pypi",
                "points": 76.2,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 521987,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 26,
              "top_contributor_share": 0.599
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 60% of commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 60
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "26 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "merged_prs": 233,
              "open_issues": 361,
              "closed_issues": 324,
              "issue_closed_ratio": 0.473,
              "closed_unmerged_prs": 57
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "47% of issues closed",
                "points": 22.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 47
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "233/290 decided PRs merged",
                "points": 30.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 233,
                      "decided": 290
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/4 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "followers": 828,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "datalab-to",
              "public_repos": 12,
              "account_age_days": 736
            },
            "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": "828 followers of datalab-to",
                "points": 21,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 828,
                      "login": "datalab-to"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~2 yr old",
                "points": 12.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "marker-pdf"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 11
            },
            "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 11 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "82 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 82
                    }
                  }
                ],
                "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": 82,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "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": "2 out of 2 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": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://www.datalab.to",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.datalab.to",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 44,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 38,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/4 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "29 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the pypi:marker-pdf@2.0.0 runtime dependency closure — what installing the published package pulls in — 74 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:marker-pdf@2.0.0",
                  "assessed": 74
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 67,
            "inputs": {
              "source": "osv",
              "advisories": 34,
              "affected_packages": 1,
              "assessed_packages": 74,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: pillow 10.4.0 (critical 9.1)",
                "points": 9.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "pillow 10.4.0 (critical 9.1)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 170 days ago",
                "points": 32.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 1,
                      "oldest": 170
                    }
                  }
                ],
                "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": 74,
              "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 37,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 19,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.351,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "26 of 74 human commits state their intent (structured subject or explanatory body)",
                "points": 18.7,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 26,
                      "sampled": 74
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 21129,
              "source_files_sampled": 172,
              "oversized_source_files": 0
            },
            "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": "0/172 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 172,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.14.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-01T10:54:33.485385Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/datalab-to/marker.svg",
  "full_name": "datalab-to/marker",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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