Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 62300,
"has_wiki": true,
"homepage": "https://machow.github.io/quartodoc",
"languages": {
"CSS": 223,
"Lua": 11681,
"Python": 230168,
"Makefile": 1249
},
"pushed_at": "2025-12-08T22:46:07Z",
"created_at": "2022-11-04T18:52:28Z",
"owner_type": "User",
"updated_at": "2026-07-06T15:23:59Z",
"description": "Generate API documentation with quarto",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "mchow.com",
"name": "Michael Chow",
"type": "User",
"login": "machow",
"company": "@rstudio",
"location": null,
"followers": 294,
"avatar_url": "https://avatars.githubusercontent.com/u/2574498?v=4",
"created_at": "2012-10-16T17:13:21Z",
"is_verified": null,
"public_repos": 231,
"account_age_days": 5035
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.11.1",
"kind": "patch",
"published_at": "2025-06-10T14:48:44Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2025-06-09T17:11:25Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2025-05-28T20:21:29Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2024-11-08T22:20:08Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2024-11-04T20:49:11Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2024-10-11T17:07:00Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2024-10-10T17:24:37Z"
},
{
"tag": "v0.7.6",
"kind": "patch",
"published_at": "2024-08-22T20:09:06Z"
},
{
"tag": "v0.7.5",
"kind": "patch",
"published_at": "2024-06-17T21:56:24Z"
},
{
"tag": "v0.7.4",
"kind": "patch",
"published_at": "2024-06-14T22:32:47Z"
},
{
"tag": "v0.7.3",
"kind": "patch",
"published_at": "2024-06-03T21:51:22Z"
},
{
"tag": "v0.7.2",
"kind": "patch",
"published_at": "2023-12-11T20:14:31Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2023-11-20T20:02:41Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2023-11-20T18:39:12Z"
},
{
"tag": "v0.6.6",
"kind": "patch",
"published_at": "2023-11-16T17:07:49Z"
},
{
"tag": "v0.6.5",
"kind": "patch",
"published_at": "2023-10-20T21:04:12Z"
},
{
"tag": "v0.6.4",
"kind": "patch",
"published_at": "2023-10-16T16:29:41Z"
},
{
"tag": "v0.6.3",
"kind": "patch",
"published_at": "2023-10-05T20:05:27Z"
},
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2023-09-29T19:31:48Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2023-09-01T17:17:51Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2023-08-31T22:36:52Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2023-08-29T14:15:20Z"
},
{
"tag": "v0.4.3",
"kind": "patch",
"published_at": "2023-08-24T21:57:31Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2023-08-03T20:32:54Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2023-07-14T17:56:21Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2023-07-12T22:51:12Z"
},
{
"tag": "v0.3.5",
"kind": "patch",
"published_at": "2023-07-06T21:06:51Z"
},
{
"tag": "v0.3.4",
"kind": "patch",
"published_at": "2023-06-21T17:56:17Z"
},
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2023-06-02T14:25:16Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2023-05-23T17:42:00Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2023-05-15T17:24:31Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2023-05-01T17:54:54Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2023-04-06T19:22:48Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2023-03-14T16:36:43Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2023-02-23T16:31:07Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2023-01-27T18:47:46Z"
},
{
"tag": "v0.0.3",
"kind": "patch",
"published_at": "2022-12-06T20:39:24Z"
},
{
"tag": "v0.0.2",
"kind": "patch",
"published_at": "2022-11-07T23:24:21Z"
}
],
"recent_commits": [
{
"oid": "ae646238ebe9ad7ab98cfa2a36e5e86b1a87db79",
"body": "* fix: wrap None in code when used as annotation\n\n* Update quartodoc/renderers/md_renderer.py\n\n* tests: update snapshot\n\n* docs: skip method documentation for now",
"is_bot": false,
"headline": "fix: wrap None in code when used as annotation (#415)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-08T22:44:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7030b7d2822251e82d42bf27304ac71ed35c6e6c",
"body": "* dev: switch to uv and update ci\n\n* dev: switch to py3.10+ and update makefile\n\n* ci: add uv run before quarto command\n\n* ci: use uv for final doc build step\n\n* dev: remove old example builds\n\n* dev: remove lingering example from Makefile\n\n* chore: fix linter",
"is_bot": false,
"headline": "dev: switch to uv and update ci (#417)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-08T22:43:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc9f3cca3c2f930e53c6c7079e41333a13ed0461",
"body": "* feat: switch to grid style tables to support newlines\n\n* tests: update snapshots\n\n* fix: allow linebreaks in tables (two newlines triggers)\n\n* tests: update snapshots for main changes",
"is_bot": false,
"headline": "Feat linebreaks in tables (#419)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-08T21:38:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fc3fbd14fca021424664b2c0428e1839491160f",
"body": "* feat: simplify return table and list if possible\n\n* add missing example module",
"is_bot": false,
"headline": "feat: simplify return table and list if possible (#416)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-05T22:00:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d8252f717ad2bc0dfff68464a5789810780ce6f",
"body": "* feat: Add table_style_index and table_style_tocs options for description list rendering\n\n* refactor: Make _render_summary_table static and extract parsing logic\n\n* refactor: Split summarize into summarize (index) and summarize_toc methods\n\n* refactor: Merge summarize_toc back to summarize, keep context implicit\n\n* test: Add snapshot tests for description list rendering in TOC and index\n\n* chore: fix linting errors",
"is_bot": false,
"headline": "feat: description list tables in index and as toc (#414)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-05T00:30:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3ff112243cb2826843b4a9332a8a6682f4cc181",
"body": "…#412)\n\n* feat: Add index-topmatter config option for custom YAML frontmatter\n\n* tests: remove full topmatter test\n\n* refactor: Generalize dash-to-underscore conversion for all config keys\n\n* Update quartodoc/autosummary.py\n\n* Update quartodoc/autosummary.py",
"is_bot": false,
"headline": "feat: Add index-topmatter config option for custom YAML frontmatter (…",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-04T21:28:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d743a7ce4153eae2ca57449bcddb6d96bfd8c1fa",
"body": "* dev: add py.typed file\n\n* dev: update setuptools to v69",
"is_bot": false,
"headline": "dev: add py.typed file (#409)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-04T16:57:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bc96e4ba1df1d3f7f76e99b2a292dec664f725c",
"body": "* docs: dev snippets\n\n* docs: another snippet",
"is_bot": false,
"headline": "docs: dev snippets (#408)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-12-03T20:26:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "665734cf5db6dbd2fdd8a37b0dd1701f1e3fd734",
"body": "* Add renderers for the yields section of a docstring.\n\n* feat: add tests for rendering yields sections in Google and Numpydoc styles",
"is_bot": false,
"headline": "feat: Add Renderers for Yields (#402)",
"author_name": "Lawrence Godfrey",
"author_login": "Lawrence-Godfrey",
"committed_at": "2025-12-03T15:37:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e28324dda743de90add32faaa81798b76a9001af",
"body": "* fix!: set reference title in topmatter\n\n* dev: return annotation for builder\n\n* fix: Meta no longer sorts keys\n\n* tests: test builder title and meta block",
"is_bot": false,
"headline": "Fix!: reference title now is in yaml topmatter (#400)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-06-23T15:46:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfa8e8c0b513ff67465f283e21e3d8a9fbf50ee0",
"body": "* chore: fix string escape warning\n\n* chore: fix string syntax warning",
"is_bot": false,
"headline": "chore: fix string escape warning (#397)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-06-10T14:02:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70aec122d550b1d78970c2368779f47594decf69",
"body": "* chore: prettify interlinks filter\n\n* draft: autolinks\n\n* test: add autolink test qmd\n\n* feat: interlinks autolink and aliases\n\n* feat: interlinks auto qd-no-link class\n\n* docs: add autolinks to guide\n\n* fix: filter handles pandoc inlines better\n\n* feat(autolink): alias lists and shortening syntax\n\n[…]\ntolink shortening and aliases\n\n* fix(autolink): remove shortening syntax from unmatched\n\n* docs: unmatched autolink example\n\n* feat: add ~~. autolink syntax\n\n* dev: autolinks do not log debug messages",
"is_bot": false,
"headline": "feat: interlinks autolink (#395)",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-06-06T18:36:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b5a95189b46a298ec68fc99a469a3d0241aa24ac",
"body": "docs: regenerate gh readme",
"is_bot": false,
"headline": "Merge pull request #385 from machow/fix-intro-snippet",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T19:25:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0e2b6d4a20f3de924fba0054b9f9954c88d2025",
"body": null,
"is_bot": false,
"headline": "ci: more starter template test into docs job",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T18:50:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73fbf83288855c722f5725ade7a48637f2c38ec2",
"body": null,
"is_bot": false,
"headline": "ci: always build starter template as sanity check",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T18:38:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d998394cf58e98b3787316f6e6dc0374069ab032",
"body": "refactor: make _griffe_compat a submodule that generates import stubs",
"is_bot": false,
"headline": "Merge pull request #393 from machow/refactor-griffe-compat",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T18:35:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a003f3d5f450acc426298398a92feac471d74169",
"body": "…om-class-init\n\nRemove self from class initializer signature",
"is_bot": false,
"headline": "Merge pull request #394 from PhilReinhold/philreinhold/remove-self-fr…",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T18:34:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e325b8dedb98a5db6e4d1171902e18a31b22f74c",
"body": null,
"is_bot": false,
"headline": "tests: script to test get-started template",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-04-15T18:32:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "778aee86d051f9657eccabc9345e70417004f5fc",
"body": null,
"is_bot": false,
"headline": "Remove self from class initializer signature",
"author_name": "Phil Reinhold",
"author_login": "PhilReinhold",
"committed_at": "2025-04-14T17:27:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d5077e5e4c8bdfd3cb05cf4dd146a8cc1fdf913",
"body": null,
"is_bot": false,
"headline": "refactor: explicitly import griffe alias exception in ast",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-02-19T21:32:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a6af0148886b2e9bcc6ef1290cae97e6b5671e8",
"body": null,
"is_bot": false,
"headline": "refactor: generate griffe import stubs",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-02-19T21:31:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1c7b80801db9fdd3b066ac2c3f1573ee2cc5396",
"body": null,
"is_bot": false,
"headline": "refactor: make _griffe_compat a submodule that generates import stubs",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2025-02-19T21:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7edf864ef1a8f72f7e22329586f578e088607571",
"body": null,
"is_bot": false,
"headline": "docs: fix intro snippet",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-12-05T15:17:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a79a55edad4c8fd0fe5ea626958001d0463b7767",
"body": null,
"is_bot": false,
"headline": "docs: regenerate gh readme",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-12-05T15:15:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee4fa3c4bff79b14504ca67877aed9396cdd648a",
"body": "Fix: add trailing commas to multiline signature",
"is_bot": false,
"headline": "Merge pull request #381 from machow/fix-multiline-signature",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T22:19:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5274a1670f5033e5e55395960d25514977a7ead6",
"body": null,
"is_bot": false,
"headline": "tests: update snapshots",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T20:31:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "016e9dbb4d26936fd34cd3bf0fcdb65337b31efd",
"body": null,
"is_bot": false,
"headline": "fix: add commas to multiline signature",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T20:31:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fa28ec0ee8f008d1a480e8fda3cddaa90afd032",
"body": "docs: fix sidebar preview and collapse",
"is_bot": false,
"headline": "Merge pull request #379 from machow/docs-sidebar-yaml",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T20:26:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7c3756ac240cb12fe6fce46f0570655b1e64a02",
"body": null,
"is_bot": false,
"headline": "dev: switch order of building API and adding extensions",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T20:17:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b7ce1935033e536a2692825a0002a54210e5ea5",
"body": null,
"is_bot": false,
"headline": "dev: quartodoc build in Makefile now verbose",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-08T20:12:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a407902de0ca746bca76c7e2099ee5ba9d4d8d3",
"body": null,
"is_bot": false,
"headline": "docs: fix sidebar preview and collapse",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-04T20:47:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "334bdc1ae41bab10f76f80eb0499c88d22356a5e",
"body": "feat: Allow addings additional options to `sidebar`",
"is_bot": false,
"headline": "Merge pull request #370 from gadenbuie/feat/sidebar-options",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-04T20:38:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07d4a0f8b5511891e90ce6048beb1dba6de121d2",
"body": null,
"is_bot": false,
"headline": "docs: create section for sidebar config",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-11-04T16:35:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5d3c6987244a0e0241e50e83bc940f05f1afc44",
"body": null,
"is_bot": false,
"headline": "refactor: Pull `_insert_contents()` into top-level function",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-18T21:14:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddd25d595fde434e05627d2d9b4e79180a14b9a4",
"body": null,
"is_bot": false,
"headline": "Merged upstream/main into feat/sidebar-options",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-16T12:35:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8a624f15fd02811a3ec08661f5e0cf8c58599cb",
"body": "* Use `file` to specify the sidebar file\n* Use \"{{ contents }}\" as a placeholder for quartodoc's contents anywhere in `quartodoc.sidebar.contents`.",
"is_bot": false,
"headline": "feat(sidebar): Allow dictionary of options, passed directly to quarto",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-16T12:34:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d7ade21225f0b9dd1635fd3301ad0afa1991335",
"body": "fix: description list no longer escapes quotes inside code",
"is_bot": false,
"headline": "Merge pull request #375 from machow/fix-inline-code-quotes",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-11T17:02:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48245337914712e6320152d2defd8ee3db9bf987",
"body": null,
"is_bot": false,
"headline": "fix: description list no longer escapes quotes inside code",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-11T16:57:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9edda48fdeeb388fe34e987971332930e08b67b4",
"body": "feat: implement auto excludes option",
"is_bot": false,
"headline": "Merge pull request #372 from machow/feat-auto-exclude",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:16:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62759f06843d5423df0d3e227775c89892b49b22",
"body": "fix: missing branch in show_signature_annotations",
"is_bot": false,
"headline": "Merge pull request #362 from machow/fix-ref-error",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:14:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9bf1ec1b73d1c8a03258f1ac00820c3765b4da48",
"body": null,
"is_bot": false,
"headline": "ci: fix python version to 3.10",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:09:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9b0153dea9861540f0d4cb1995e0744f43d91c6",
"body": null,
"is_bot": false,
"headline": "tests: include unannotated parameter in snapshot test",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:05:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90d83d3dde0a52424edcc7acd6fb3cea3a22f566",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into feat-auto-exclude",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:01:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d07fbb0b412cbc85e22eb5e574efd011068a317",
"body": "feat: add Auto member_order option",
"is_bot": false,
"headline": "Merge pull request #373 from machow/feat-auto-no-sort-members",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-10T17:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d85484a9870499e943b3450b10a5c06f6e72fd82",
"body": "fix: parameter description list do not render None as default",
"is_bot": false,
"headline": "Merge pull request #374 from machow/fix-param-desc-list-default",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-09T20:39:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69158d95fb76c051897af3972284dc703bcc95cc",
"body": null,
"is_bot": false,
"headline": "refactor!: move sanitize description to inside ParamRow",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-09T20:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c5ec48ff204c51e94be43146ba806499fee0642",
"body": null,
"is_bot": false,
"headline": "fix: parameter description list do not render None as default",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-09T20:18:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04c1b17fdc827f6f04b1310a90c2659a2af3ba2c",
"body": null,
"is_bot": false,
"headline": "feat: add Auto member_order option",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-09T18:23:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1dff27cf39230e33a839a84ad710f37bf40940fb",
"body": null,
"is_bot": false,
"headline": "feat: implement auto excludes option",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-09T16:54:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5a611ead308b9dd3ab0f61139ed7e2b5db382f0",
"body": null,
"is_bot": false,
"headline": "docs: Document `sidebar_options`",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-09T13:40:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e677a2eb0892dfb637f6a2fe66d5368423276f1",
"body": null,
"is_bot": false,
"headline": "docs(sidebar): Fix example sidebar yaml",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-09T13:36:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e1d08cdb191c93bac735b70b6925d92ead1309a",
"body": null,
"is_bot": false,
"headline": "feat: Add `sidebar_options` to control quarto sidebar options",
"author_name": "Garrick Aden-Buie",
"author_login": "gadenbuie",
"committed_at": "2024-10-09T13:26:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ed1430d4dc0e75414d0b11532ecd2393965b8d2",
"body": "Fix: make header css classes more robust by stripping non-alphanumerics",
"is_bot": false,
"headline": "Merge pull request #367 from machow/fix-anchors-strip",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-01T18:05:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "487640d39962a8991ff344367359899332e16e7c",
"body": null,
"is_bot": false,
"headline": "fix: anchors now always lowercase, header keeps original casing",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-01T17:52:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c11428867da35df071f5ec0215870cc2fb7d9f65",
"body": null,
"is_bot": false,
"headline": "fix: sanitize css class names in headers; use doctest",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-10-01T17:34:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75c84777025545f305ea55217f5b8e9b084132e5",
"body": "fix: use shortname for member children linked style",
"is_bot": false,
"headline": "Merge pull request #366 from machow/fix-render-linked",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-09-30T20:35:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a98bf47004a76578e6893b4ba6d9447322137a3c",
"body": null,
"is_bot": false,
"headline": "fix: use shortname for member children linked style",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-09-30T20:28:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0463b7e45eea11313fa4f7db244c13744901f0bd",
"body": null,
"is_bot": false,
"headline": "fix: missing branch in show_signature_annotations",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-27T22:49:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4739a4e13c0b71e11b624d6fb95198822451e86d",
"body": "feat!: initial description-list support; render_header cleanup",
"is_bot": false,
"headline": "Merge pull request #325 from machow/feat-description-lists",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-27T16:36:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9005913d8ef9c6c338476eff46acf68cf8d5c95c",
"body": null,
"is_bot": false,
"headline": "docs: update starter _quarto.yml with generated css",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-27T16:15:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36d78c1ad571c1593dc33d0c95e3ab6a68d63cf0",
"body": null,
"is_bot": false,
"headline": "feat!: generate css file with default styles for description lists",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-27T15:13:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "191b4cb279a986ddda9fdd8c4bd135344bbd2914",
"body": null,
"is_bot": false,
"headline": "fix: less type information for backwards compat",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-26T21:06:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "419913a4f3b2e4674bedba39c4fb701c43be3188",
"body": null,
"is_bot": false,
"headline": "tests: update snapshots",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-26T20:28:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af25133cbd6e8177e803d5370a5b446d158d9d88",
"body": null,
"is_bot": false,
"headline": "fix!: do not sanitize sig params, return to signature as list",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-26T20:28:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09c792be16206712ff42d20d23eee9378ad0beb3",
"body": null,
"is_bot": false,
"headline": "fix: restore formatting of table-style items",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-26T19:56:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a256a3e310dcbff11c48c27961499aafb18e5743",
"body": null,
"is_bot": false,
"headline": "docs: commit some basic description list styles",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-23T21:24:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3dd5179f43a3f2ff475a15a302b9b344e8be224",
"body": null,
"is_bot": false,
"headline": "feat: use black to format long call signatures",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-23T21:23:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81bfa07a51ecc478a1bfe7c9679f0acc45d0dd50",
"body": null,
"is_bot": false,
"headline": "refactor: clean up table rendering using ParamRow class",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-23T21:21:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b3e02c7f57c47405867bb25cff873b7f8020e5d",
"body": null,
"is_bot": false,
"headline": "fix: escape avoids conversion to smartquotes",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-23T21:20:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92b86af95516fbb0f6b787cb0f5478f7f4d4d28a",
"body": "tests: get_object returns annotations from pyi stub files",
"is_bot": false,
"headline": "Merge pull request #360 from machow/test-inspect-stubs",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T21:02:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e36bccbdc28966fd6b387bbde15e0a37b296d5b",
"body": null,
"is_bot": false,
"headline": "tests: update snapshots",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T21:00:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "420db323e8396eb4f3804011853d5113fef689a7",
"body": null,
"is_bot": false,
"headline": "chore: clean up a bit",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T21:00:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0e47bcea6fe0021154276d842a2c01d4c2523e2",
"body": null,
"is_bot": false,
"headline": "feat: description-list wraps param line in code",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T20:45:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e4f217be3a69681097a5de7045f48cb8017a069",
"body": null,
"is_bot": false,
"headline": "feat!: initial description-list support; render_header cleanup",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T20:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fcf7691be4330d166a8a98dc49187ed0dffeb9e3",
"body": null,
"is_bot": false,
"headline": "tests: get_object returns annotations from pyi stub files",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T20:36:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81cccdfa1284e166f704419e98d8e0479d02f0f2",
"body": "fix: support griffe v1, and backwards compat to v0.37.0",
"is_bot": false,
"headline": "Merge pull request #359 from machow/fix-griffe-compat",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-22T20:00:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3cbdf4fd7a3e7389f05eb87071820a12b37bac1",
"body": null,
"is_bot": false,
"headline": "docs: escape include mentioned not used",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T21:55:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14e237ae95ccc86e4164bb20e30ca01042c30885",
"body": null,
"is_bot": false,
"headline": "ci: always build with latest quarto",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T21:46:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a1a2ddd70ea247aaa84e87043248cb227978a90",
"body": null,
"is_bot": false,
"headline": "docs: update griffe imports in examples to v1 paths",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T21:46:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b573cd978daa52d103dcd77c4df5446811a7adbf",
"body": null,
"is_bot": false,
"headline": "fix: use correct is_exported approach",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T18:08:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9bab69156f4fbd16f089ee0ff3631a130ed369c6",
"body": null,
"is_bot": false,
"headline": "ci: add codecov",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T17:21:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da5eeabf10ce7f1ae32c175cc0c0fbe2e179881f",
"body": null,
"is_bot": false,
"headline": "fix: member_is_exported renamed to is_exported",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T17:06:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13076180aec598e3f3408f00ea5163e1509646bc",
"body": null,
"is_bot": false,
"headline": "fix: support griffe v1, and backwads compat to v0.37.0",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-08-21T16:56:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "baa6c570797e9c66c3b4d4a42ecc4b9cd32c220d",
"body": "chore(deps): add missing requests dependency",
"is_bot": false,
"headline": "Merge pull request #352 from gforsyth/depsfix",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-17T21:45:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aff73a9b34e71f720d5b0dd6825fc15dcab739c0",
"body": "requests is being imported in `interlinks.py` in the latest release but it isn't listed as a dependency",
"is_bot": false,
"headline": "chore(deps): add missing requests dependency",
"author_name": "Gil Forsyth",
"author_login": "gforsyth",
"committed_at": "2024-06-17T13:37:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45a5e16a1204add3cff702c8ae08a7878dc9660a",
"body": "docs: point test interlink file to prod site",
"is_bot": false,
"headline": "Merge pull request #351 from machow/fix-interlinks-cross-site",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T22:41:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f97a145fdabcf2ada2ad0b956a1868e303105b9",
"body": "* Fix Shinyswatch url in examples\r\n\r\n* Update index.qmd\r\n\r\n* /reference",
"is_bot": false,
"headline": "Fix Shinyswatch url in examples (#348)",
"author_name": "James J Balamuta",
"author_login": "coatless",
"committed_at": "2024-06-14T22:29:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "048676324f3b0bb20aa6ed51762d4c588c2f83a2",
"body": null,
"is_bot": false,
"headline": "docs: point test interlink file to prod site",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T22:24:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46497a99eb34f96db676a5d2c1c59944a5e4eb35",
"body": "docs: use fast interlinks",
"is_bot": false,
"headline": "Merge pull request #350 from machow/fix-interlinks-cross-site",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T22:23:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad6566aace65c73bd9b0df40865796171dd07b97",
"body": null,
"is_bot": false,
"headline": "docs: describe objects-test.txt a bit",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T22:12:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d6734629a33b48f532f66c4a2c1054b0e4ce922",
"body": null,
"is_bot": false,
"headline": "fix: support .txt files in interlinks config",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T21:01:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b25e14643831158038372e53a471456f840e69ad",
"body": null,
"is_bot": false,
"headline": "docs: add example of cross-site txt inv",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T20:49:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31392172cb2785dfb071626288874ff706e2ac44",
"body": null,
"is_bot": false,
"headline": "ci: add objects-test.txt",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T20:39:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac7a2ffa0aaa5ce8d440b79d0f5f1a36e5c442bd",
"body": null,
"is_bot": false,
"headline": "ci: add objects-test.txt to doc resources",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T20:33:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "907d8d4d344d8340cbfbe0eeec26d71cc272de08",
"body": null,
"is_bot": false,
"headline": "docs: use fast interlinks",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-14T16:02:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79e11e25101f6b001cffa5617a107c50a756e17c",
"body": "fix: duplicate names in annotations",
"is_bot": false,
"headline": "Merge pull request #345 from machow/fix-render-annotation",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-03T21:48:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce9fc474b2139392dbb1e537e533a10f561a3b60",
"body": null,
"is_bot": false,
"headline": "tests: xfail tests that will be fixed upstream in griffe",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-03T21:44:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efb09d65be40c12e1db35d12b6b83f11b4ce0d65",
"body": null,
"is_bot": false,
"headline": "tests: update snapshots",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-03T21:41:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6cae4eb94d619c82e7ff1bdaaacd20b9e419a1c7",
"body": null,
"is_bot": false,
"headline": "fix: duplicate names in annotations",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-06-03T21:32:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b673a9699693baf1fa93b73c43823ce208f4a2a",
"body": "dev: pin pytest<8.0.0",
"is_bot": false,
"headline": "Merge pull request #335 from machow/ci-pytest-fix",
"author_name": "Michael Chow",
"author_login": "machow",
"committed_at": "2024-02-15T16:48:38Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 38,
"commits_last_year": 9,
"latest_release_at": "2025-06-10T14:48:44Z",
"latest_release_tag": "v0.11.1",
"releases_from_tags": false,
"days_since_last_push": 233,
"active_weeks_last_year": 2,
"days_since_latest_release": 415,
"mean_days_between_releases": 40.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 57,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "quartodoc",
"exists": true,
"license": null,
"keywords": [
"documentation",
"quarto",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: Unix",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.9"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/quartodoc/",
"is_deprecated": false,
"latest_version": "0.11.1",
"repository_url": "https://github.com/machow/quartodoc",
"versions_count": 37,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2022-11-04T15:59:19.379062Z",
"latest_published_at": "2025-06-10T14:50:08.185935Z",
"latest_version_yanked": null,
"days_since_latest_publish": 415
}
]
},
"popularity": {
"forks": 31,
"stars": 264,
"watchers": 4,
"fork_history": {
"days": [
{
"date": "2022-11-08",
"count": 1
},
{
"date": "2023-02-25",
"count": 1
},
{
"date": "2023-03-10",
"count": 1
},
{
"date": "2023-05-19",
"count": 1
},
{
"date": "2023-06-29",
"count": 1
},
{
"date": "2023-09-03",
"count": 1
},
{
"date": "2023-10-03",
"count": 1
},
{
"date": "2023-10-04",
"count": 1
},
{
"date": "2023-11-16",
"count": 1
},
{
"date": "2023-12-06",
"count": 1
},
{
"date": "2024-01-08",
"count": 1
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-05-30",
"count": 1
},
{
"date": "2024-05-31",
"count": 1
},
{
"date": "2024-06-11",
"count": 1
},
{
"date": "2024-06-17",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2024-09-11",
"count": 1
},
{
"date": "2024-10-09",
"count": 1
},
{
"date": "2025-02-26",
"count": 1
},
{
"date": "2025-04-01",
"count": 1
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-07-01",
"count": 1
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-11-13",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-04-17",
"count": 2
},
{
"date": "2026-06-22",
"count": 1
}
],
"complete": true,
"collected": 30,
"total_forks": 31
},
"star_history": null,
"open_issues_and_prs": 85
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"quartodoc/py.typed"
],
"toolchain_manifests": [],
"largest_source_bytes": 33156,
"source_files_sampled": 57,
"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": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 39,
"malicious_count": 0,
"assessed_package": "pypi:quartodoc@0.11.1",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [
{
"name": "black",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "click",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "griffe",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 0.33"
},
{
"name": "sphobjinv",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 2.3.1"
},
{
"name": "tabulate",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 0.9.0"
},
{
"name": "importlib-metadata",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 5.1.0"
},
{
"name": "importlib-resources",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 5.10.2"
},
{
"name": "pydantic",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pyyaml",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "requests",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "typing-extensions",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 4.4.0"
},
{
"name": "watchdog",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">= 3.0.0"
},
{
"name": "plum-dispatch",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "> 2.0.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "black",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "click",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "griffe",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "importlib-metadata",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "importlib-resources",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "plum-dispatch",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pydantic",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sphobjinv",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tabulate",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "watchdog",
"direct": true,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 13,
"direct_count": 13,
"indirect_count": 0
}
},
"maintainership": {
"issues": {
"open_prs": 14,
"merged_prs": 139,
"open_issues": 71,
"closed_ratio": 0.708,
"closed_issues": 172,
"closed_unmerged_prs": 18
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "machow",
"commits": 563,
"avatar_url": "https://avatars.githubusercontent.com/u/2574498?v=4"
},
{
"type": "User",
"login": "hamelsmu",
"commits": 79,
"avatar_url": "https://avatars.githubusercontent.com/u/1483922?v=4"
},
{
"type": "User",
"login": "has2k1",
"commits": 31,
"avatar_url": "https://avatars.githubusercontent.com/u/780341?v=4"
},
{
"type": "User",
"login": "gadenbuie",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/5420529?v=4"
},
{
"type": "User",
"login": "schloerke",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/93231?v=4"
},
{
"type": "User",
"login": "eitsupi",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/50911393?v=4"
},
{
"type": "User",
"login": "isabelizimm",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/54685329?v=4"
},
{
"type": "User",
"login": "epinzur",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/2641606?v=4"
},
{
"type": "User",
"login": "filipwastberg",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/20815525?v=4"
},
{
"type": "User",
"login": "gforsyth",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/3596999?v=4"
}
],
"contributors_sampled": 16,
"top_contributor_share": 0.811
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml"
],
"has_docs_dir": true,
"linter_configs": [
".flake8"
],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 5,
"reason": "9 out of 17 merged PRs checked by a CI test -- score normalized to 5",
"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": 1,
"reason": "Found 2/17 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 9 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 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": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": "63 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ae646238ebe9ad7ab98cfa2a36e5e86b1a87db79",
"ran_at": "2026-07-30T22:16:41Z",
"aggregate_score": 3.3,
"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": "2025-12-08T22:47:19Z",
"oldest_open_prs": [
{
"number": 258,
"created_at": "2023-08-30T19:01:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 339,
"created_at": "2024-03-14T10:26:07Z",
"last_comment_at": "2024-03-14T10:32:43Z",
"last_comment_author": "has2k1"
},
{
"number": 347,
"created_at": "2024-06-10T21:59:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 363,
"created_at": "2024-08-27T22:51:00Z",
"last_comment_at": "2026-01-29T01:27:52Z",
"last_comment_author": "michaelaye"
},
{
"number": 365,
"created_at": "2024-09-11T15:56:38Z",
"last_comment_at": "2024-09-11T15:58:44Z",
"last_comment_author": "codecov-commenter"
},
{
"number": 371,
"created_at": "2024-10-09T14:23:30Z",
"last_comment_at": "2024-10-12T14:21:52Z",
"last_comment_author": "gadenbuie"
},
{
"number": 376,
"created_at": "2024-10-18T19:11:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 396,
"created_at": "2025-04-30T19:31:19Z",
"last_comment_at": "2025-04-30T19:32:32Z",
"last_comment_author": "codecov-commenter"
},
{
"number": 405,
"created_at": "2025-10-31T04:58:51Z",
"last_comment_at": "2025-12-03T15:31:27Z",
"last_comment_author": "machow"
},
{
"number": 418,
"created_at": "2025-12-06T03:43:37Z",
"last_comment_at": "2025-12-08T17:06:56Z",
"last_comment_author": "machow"
},
{
"number": 422,
"created_at": "2026-02-06T16:07:03Z",
"last_comment_at": "2026-02-19T10:22:10Z",
"last_comment_author": "kapsner"
},
{
"number": 424,
"created_at": "2026-04-17T13:27:38Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 425,
"created_at": "2026-05-17T02:23:40Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 426,
"created_at": "2026-06-29T13:22:05Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2025-12-08T22:44:18Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 6,
"created_at": "2022-11-15T21:19:29Z",
"last_comment_at": "2026-05-26T17:37:32Z",
"last_comment_author": "jkanche"
},
{
"number": 31,
"created_at": "2023-01-24T20:18:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 34,
"created_at": "2023-01-26T21:38:52Z",
"last_comment_at": "2024-01-10T20:29:35Z",
"last_comment_author": "gadenbuie"
},
{
"number": 40,
"created_at": "2023-02-13T20:40:00Z",
"last_comment_at": "2023-02-14T19:11:10Z",
"last_comment_author": "isabelizimm"
},
{
"number": 44,
"created_at": "2023-02-15T21:12:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 48,
"created_at": "2023-02-21T17:48:00Z",
"last_comment_at": "2025-08-29T00:48:52Z",
"last_comment_author": "davidchall"
},
{
"number": 50,
"created_at": "2023-02-21T21:26:27Z",
"last_comment_at": "2024-01-22T17:38:39Z",
"last_comment_author": "machow"
},
{
"number": 55,
"created_at": "2023-03-03T22:52:47Z",
"last_comment_at": "2024-01-22T16:14:47Z",
"last_comment_author": "machow"
},
{
"number": 63,
"created_at": "2023-03-13T21:20:05Z",
"last_comment_at": "2023-03-14T19:02:53Z",
"last_comment_author": "machow"
},
{
"number": 69,
"created_at": "2023-03-20T13:54:13Z",
"last_comment_at": "2024-01-04T18:07:58Z",
"last_comment_author": "machow"
},
{
"number": 71,
"created_at": "2023-03-21T14:01:07Z",
"last_comment_at": "2024-09-10T19:01:53Z",
"last_comment_author": "benruijl"
},
{
"number": 83,
"created_at": "2023-03-30T20:59:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 85,
"created_at": "2023-04-10T21:02:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 97,
"created_at": "2023-04-12T04:47:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 98,
"created_at": "2023-04-12T04:57:19Z",
"last_comment_at": "2023-07-06T14:32:05Z",
"last_comment_author": "machow"
},
{
"number": 99,
"created_at": "2023-04-12T19:22:34Z",
"last_comment_at": "2023-04-12T22:01:37Z",
"last_comment_author": "machow"
},
{
"number": 113,
"created_at": "2023-04-14T19:54:52Z",
"last_comment_at": "2024-06-03T21:40:27Z",
"last_comment_author": "machow"
},
{
"number": 118,
"created_at": "2023-04-18T12:26:37Z",
"last_comment_at": "2023-08-02T15:41:43Z",
"last_comment_author": "machow"
},
{
"number": 125,
"created_at": "2023-05-02T15:45:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 145,
"created_at": "2023-05-17T21:44:32Z",
"last_comment_at": "2023-08-08T20:58:12Z",
"last_comment_author": "machow"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/machow/quartodoc",
"host": "github.com",
"name": "quartodoc",
"owner": "machow"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": "The weighted overall 57 is calibrated to 60 on the published index scale (record calibration 2026-08-02). Abandonment Policy applies a 85% multiplier to weighted overall health.",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 57,
"calibrated": 60,
"calibration": "2026-08-02"
}
},
{
"code": "abandonment_overall_adjustment",
"params": {
"cap": 0,
"pct": 85
}
}
],
"value": 51,
"inputs": {
"security": 46,
"vitality": 36,
"community": 59,
"governance": 60,
"calibration": "2026-08-02",
"engineering": 86,
"ai_readiness": 59,
"abandonment_cap": null,
"abandonment_state": "at_risk",
"weighted_overall_raw": 57,
"abandonment_multiplier": 85,
"weighted_overall_before_abandonment": 60,
"overall_after_abandonment_multiplier": 51
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "weak",
"name": "Vitality",
"value": 36,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 14,
"inputs": {
"commits_last_year": 9,
"human_commit_share": 1,
"days_since_last_push": 233,
"active_weeks_last_year": 2
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 233 days ago",
"points": 3.6,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 233
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "2/52 weeks with commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 2
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "9 commits in the last year",
"points": 9,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 9
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"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": 68,
"inputs": {
"releases_count": 38,
"latest_release_tag": "v0.11.1",
"releases_from_tags": false,
"days_since_latest_release": 415,
"mean_days_between_releases": 40.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "38 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 38
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 415 days ago",
"points": 7.2,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 415
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~40.1 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 40.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": 85,
"inputs": {
"cap": null,
"state": "at_risk",
"guards": [
"dependencies_clean"
],
"signals": [
"issue_rot",
"release_stall",
"scorecard_unmaintained"
],
"red_flag": true,
"multiplier_pct": 85,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": 10,
"unanswered_open_issues": 9,
"days_since_last_merged_pr": 236,
"days_since_last_human_commit": 236,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "no human commit for 236 days; 3 unmet obligation(s): issues unanswered, releases stalled, Scorecard reports it unmaintained",
"points": 85,
"status": "partial",
"details": [
{
"code": "abandonment_flagged",
"params": {
"days": 236,
"count": 3,
"signals": "issues unanswered, releases stalled, Scorecard reports it unmaintained"
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 59,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"forks": 31,
"stars": 264,
"watchers": 4,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "264 stars",
"points": 39.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 264
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "31 forks",
"points": 12.3,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 31
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "4 watchers",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 4
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [],
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"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": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 60,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "weak",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 37,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 16,
"top_contributor_share": 0.811
},
"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 81% of commits",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 81
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "16 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 16
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 9 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 66,
"inputs": {
"merged_prs": 139,
"open_issues": 71,
"closed_issues": 172,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.708,
"closed_unmerged_prs": 18,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "71% of issues closed",
"points": 29.7,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 71
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "139/157 decided PRs merged",
"points": 26.6,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 139,
"decided": 157
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 2/17 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 66,
"inputs": {
"followers": 294,
"owner_type": "User",
"is_verified": null,
"owner_login": "machow",
"public_repos": 231,
"account_age_days": 5035
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "294 followers of machow",
"points": 17.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 294,
"login": "machow"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "231 public repos, account ~13 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 231
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "good",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"packages": [
"quartodoc"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 415
},
"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 415 days ago",
"points": 14,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 415
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "37 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 37
}
}
],
"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": "excellent",
"name": "Engineering Quality",
"value": 86,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"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": ".flake8",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8"
}
}
],
"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": "9 out of 17 merged PRs checked by a CI test -- score normalized to 5",
"points": 10,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": "https://machow.github.io/quartodoc",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://machow.github.io/quartodoc",
"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": "weak",
"name": "Security",
"value": 46,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 33,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 3.3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "9 out of 17 merged PRs checked by a CI test -- score normalized to 5",
"points": 1.2,
"status": "partial",
"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 2/17 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 9 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "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": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 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": "63 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:quartodoc@0.11.1 runtime dependency closure — what installing the published package pulls in — 39 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "pypi:quartodoc@0.11.1",
"assessed": 39
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 39,
"unassessed_packages": 0,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "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": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"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": 39,
"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": "exceptional",
"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": 15
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 59,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "weak",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.97,
"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": "97 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 97,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"uv.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"quartodoc/py.typed"
],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".flake8",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "quartodoc/py.typed",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "quartodoc/py.typed"
}
}
],
"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": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 33156,
"source_files_sampled": 57,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python with type-check config (quartodoc/py.typed)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "quartodoc/py.typed",
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/57 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 57,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"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? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"metrics_version": "2.1.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-30T22:17:04.526175Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/machow/quartodoc.svg",
"full_name": "machow/quartodoc",
"license_state": "standard",
"license_spdx": "MIT"
}