原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"python-markdown",
"markdown",
"markdown-parser",
"markdown-to-html",
"python",
"python3"
],
"is_fork": false,
"size_kb": 3524,
"has_wiki": true,
"homepage": "https://python-markdown.github.io/",
"languages": {
"Shell": 679,
"Python": 782277,
"Makefile": 1136
},
"pushed_at": "2026-07-08T18:19:24Z",
"created_at": "2010-05-29T02:59:45Z",
"owner_type": "Organization",
"updated_at": "2026-07-20T20:22:26Z",
"description": "A Python implementation of John Gruber’s Markdown with Extension support.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "BSD-3-Clause",
"default_branch": "master",
"license_spdx_raw": "BSD-3-Clause",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": null,
"name": "Python-Markdown",
"type": "Organization",
"login": "Python-Markdown",
"company": null,
"location": null,
"followers": 68,
"avatar_url": "https://avatars.githubusercontent.com/u/11278576?v=4",
"created_at": "2015-03-02T20:04:32Z",
"is_verified": null,
"public_repos": 4,
"account_age_days": 4159
},
"license": {
"state": "standard",
"spdx_id": "BSD-3-Clause",
"raw_spdx": "BSD-3-Clause",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "3.10.2",
"kind": "patch",
"published_at": "2026-02-09T14:57:29Z"
},
{
"tag": "3.10.1",
"kind": "patch",
"published_at": "2026-01-21T18:09:32Z"
},
{
"tag": "3.10.0",
"kind": "minor",
"published_at": "2025-11-03T19:51:17Z"
},
{
"tag": "3.9.0",
"kind": "minor",
"published_at": "2025-09-04T20:25:24Z"
},
{
"tag": "3.8.2",
"kind": "patch",
"published_at": "2025-06-19T17:12:46Z"
},
{
"tag": "3.8.1",
"kind": "patch",
"published_at": "2025-06-18T14:50:51Z"
},
{
"tag": "3.8",
"kind": "other",
"published_at": "2025-04-11T14:47:13Z"
},
{
"tag": "3.7",
"kind": "other",
"published_at": "2024-08-16T17:12:04Z"
},
{
"tag": "3.6",
"kind": "other",
"published_at": "2024-03-14T18:35:10Z"
},
{
"tag": "3.5.2",
"kind": "patch",
"published_at": "2024-01-10T15:19:41Z"
},
{
"tag": "3.5.1",
"kind": "patch",
"published_at": "2023-10-31T19:59:26Z"
}
],
"recent_commits": [
{
"oid": "8453df010daf9547efcc20a05bb12c0e2fd2016a",
"body": "* Document the priorities assigned by each extension for the API Reference.\n\n* Link Extension API docs to API Reference.\n\n Various sections were reduced to avoid repetition with the API Reference.\n Other sections were expanded to provide more links. A deeper explanation\n of the registry priority has been added. \n\nFixes 1612.",
"is_bot": false,
"headline": "Update Extension API documentation",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-07-08T18:19:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93ac448b161deb5a4578c7f56bd5f5c39dc280c3",
"body": "This has been the de facto policy for some time. We are now officially\ndocumenting it. Relates to #1612.\n\nSome recommendations for alternative extensions have been included.",
"is_bot": false,
"headline": "Document that all extensions are in maintenance mode",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-07-02T12:49:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d38fd4a6ee4ef897812bc481855a7f9d8a4ad4f1",
"body": "The motivation for adopting this policy is to avoid wasting the maintainers'\ntime. We work on this project as volunteers and it is an unproductive waste of\ntime to interact with contributors who do not understand their contributions.\n\nWhile we generaly would prefer to receive contributions which are\n[…]\nalue in limited ways.\nTherefore, we have attempted to create a policy which allows use of such tools\nwhile also holding the contributor accountable. Hopefully this accomplishes our\ngoal. Closes #1610.",
"is_bot": false,
"headline": "Create AI Policy",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-06-29T19:05:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ddead47873e7918829e1d8b0eaee6ab725793cc9",
"body": "Fixes #1604.",
"is_bot": false,
"headline": "Prevent mixed =/- chars in Setext-style headings",
"author_name": "RoomWithOutRoof",
"author_login": "Jah-yee",
"committed_at": "2026-05-26T13:19:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7a0efb3a7c36d6b8005403122705662bc17c904",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.10.2",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-02-09T14:54:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "630183336bda57c258becc3ed229105481876a7e",
"body": "Recommend JustHTML as an HTML sanitizer with bleach and nh3 as alternatives.\n\nReorganize cli.md for clarity.\n\nResolves #1479.",
"is_bot": false,
"headline": "Document HTML sanitation policy",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-02-06T14:36:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f29f1a69d236f5bb11645c2fa03fcf701487c8c",
"body": "Include hack so we don't break MkDocs.",
"is_bot": false,
"headline": "More reliable fix for `</`",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2026-02-03T16:20:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4386475a6b6daea43b7d7717add4271adc9a3c1",
"body": "Fixes #1590",
"is_bot": false,
"headline": "Fix regression of special comments",
"author_name": "facelessuser",
"author_login": "facelessuser",
"committed_at": "2026-02-02T18:12:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5fa5b86e8ec380cbc520cfc637d72c779e5c601",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.10.1",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2026-01-21T18:03:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9253495f5d9919f2fdd5e147832b5fc21330f65",
"body": "- Have `parse_comment` handle bad `<!--` cases.\n- `handle_comment` only needs to handle the `</` case for comments.\n Provide a more reliable way to calculate the index to check for this\n case.\n- Ensure `override_comment_update` is reset, just in case.\n\nResolves #1586\n\n* Fix spelling\n\n* Add changelog entry",
"is_bot": false,
"headline": "More HTML fixes",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2026-01-21T16:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9933a0a4699f3dea91f46528a2bf54863f531c08",
"body": "This reverts commit 07dfa4eb43f7a2ab3181b4f842a960a03a6c1221.",
"is_bot": false,
"headline": "Revert \"Allow reference links with backticks\"",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-12-30T15:31:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07dfa4eb43f7a2ab3181b4f842a960a03a6c1221",
"body": "Fixes #495.",
"is_bot": false,
"headline": "Allow reference links with backticks",
"author_name": "Martyn P",
"author_login": "martynp",
"committed_at": "2025-12-29T14:55:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb6b27a6ff90980b5bcb0cd51528a7c9dc3a93ca",
"body": "The `updatepos()` override was resetting the parser position to `0`,\ncausing infinite loops when multiple bogus/unclosed comments\nappeared in the input (e.g., `</` or `<!--` followed by non-standard\ncharacters). Now tracks the position of the triggering `<` and\nadvances past it instead of rewinding to the start of the buffer.\n\nFixes #1578.\n\n* update changelog",
"is_bot": false,
"headline": "Fix infinite loop when text contains multiple unclosed comments",
"author_name": "Ben Tucker",
"author_login": "btucker",
"committed_at": "2025-12-29T14:38:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89112c293f7b399ae8808f3a06306f46601e9684",
"body": null,
"is_bot": false,
"headline": "Make the docs build successfully with mkdocstrings-python 2.0",
"author_name": "Dmitry Shachnev",
"author_login": "mitya57",
"committed_at": "2025-12-11T15:40:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "961856ceb30623b929d8b7abdf5ed7074db7184c",
"body": "Fixes #1573.",
"is_bot": false,
"headline": "Update link",
"author_name": "Daniel Bovensiepen Li",
"author_login": "bovi",
"committed_at": "2025-12-10T20:43:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b49115b1002142afbd84b3002f13c0e98a0f487",
"body": "When inline Markdown elements are nested, each nested level contains its\nown placeholder. Therefore, when unescaping, the regex substitution needs\nto be run against each nested level. As this is nested inside the match, it ensures\nno more than one non-matching regex will be run in each instance.\n\nCloses #1571.",
"is_bot": false,
"headline": "Ensure nested elements inside inline comments are properly unescaped.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-12-03T14:02:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22e89c1fc346f72218a10e392a0c3b4731912522",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.10",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-11-03T19:19:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c138aea5139a6aceae05bb957e866d9ce7577b94",
"body": "Python officially released 3.14 on 2025-10-07 and ended support for 3.9 on 2025-10-31.",
"is_bot": false,
"headline": "+ PY314 - PY39",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-11-03T19:10:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "746f7f527b15f63845253e3b86947b806ef1b98f",
"body": null,
"is_bot": false,
"headline": "cleanup",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-11-03T18:19:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a5ee2b4aad05531898ab8fd726c7ece31ddadf8b",
"body": "The new behavior introduced in 3.9.0 is experimental and results are inconsistent.\nIt should not have been made the default behavior. Relates to #1561.",
"is_bot": false,
"headline": "Revert the default behavior of `USE_DEFINITION_ORDER`",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-11-03T18:19:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5354daf618149f92580a1407c036115753c5df73",
"body": "Fixes #1554",
"is_bot": false,
"headline": "Fix an HTML comment parsing case that can cause an infinite loop",
"author_name": "facelessuser",
"author_login": "facelessuser",
"committed_at": "2025-09-26T14:52:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f39cf84a24124526c1a0efbe52219fa9950774f6",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.9",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-09-04T19:49:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07bf2076623be5de9952e1f35bfb8c218b699300",
"body": "* Alter footnote ordering so footnotes definitions are listed in the order in which their references appear in the document.\n* Add config option, USE_DEFINITION_ORDER, to support previous behavior. \n* Add comprehensive tests for extension.\n* Change to the behavior of inlinepatterns by ensuring that inlinepatterns iterate through elements in document order. Previously, in some specific case, elements with nested children had their inline content parsed in reverse order.\n\nResolves #1367.",
"is_bot": false,
"headline": "Order footnotes by reference",
"author_name": "Anders Eskildsen",
"author_login": "aeskildsen",
"committed_at": "2025-08-01T18:38:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23c301de28e12426408656efdfa153b11d4ff558",
"body": "New change requires us to monkey patch `locatetagend` to prevent\ncapturing incomplete tags in code spans.",
"is_bot": false,
"headline": "Fix failing cases for Python 3.14",
"author_name": "facelessuser",
"author_login": "facelessuser",
"committed_at": "2025-07-21T17:39:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4669a09894d4a35cd5f5d2106b0da95e48d1a3f9",
"body": null,
"is_bot": false,
"headline": "fix typo",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-19T17:18:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9c8431e404d614812e39a11109afbe9981bba13",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.8.2",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-19T17:11:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9980cb5b27b07ff48283178d98213e41543701ec",
"body": "- Fix codecs deprecation\n- Fix issue with unclosed `<![`\n- Fix issue with unclosed HTML tag `<foo`\n- Fix issue with unclosed comments\n- Add tests which run on the Python 3.14 beta which should automatically update after release\n\nFixes #1537",
"is_bot": false,
"headline": "Fixes for Python 3.14",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-06-19T15:46:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3561310d30dac10c47f0b9fc404b167fc65331b0",
"body": "The docs previously incorrectly linked to the Semantic Versioning specification.\nHowever, this project has never used that specification. Instead it uses the Python\nVersion Specification which was originally defined in PEP 440. The\nspecification explicitly identifies differences between the two\n(See https://packaging.python.org/en/latest/specifications/version-specifiers/#semantic-versioning).",
"is_bot": false,
"headline": "Properly document version specification.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-18T19:57:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3bb9d42b93dae519d4f5a6eea970a571232e05e2",
"body": null,
"is_bot": false,
"headline": "Update documentation for release process",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-18T19:57:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3870f20ba1dd214609b380e921dffc5f115730f5",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.8.1",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-18T14:47:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "820721485c928c6f97f3d74f37afb6d2450aef9e",
"body": "See Python bug report at gh-77057 for details. Until we drop support for\nPython < 3.13 (where this was fixed upstream), we need to avoid the\nunwanted error by checking for it explicitly. Fixes #1534.",
"is_bot": false,
"headline": "Ensure incomplete markup declaration in raw HTML doesn't crash parser.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-06-18T14:29:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64a3c0fbc00327fbfee1fd6b44da0e5453287fe4",
"body": "Fixes #1528",
"is_bot": false,
"headline": "Fix HTML handling of `</>`",
"author_name": "facelessuser",
"author_login": "facelessuser",
"committed_at": "2025-04-26T22:20:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2b9fd10f1fc7b0683f226e6a82da8e8375bccf5",
"body": "Fixes #1526.\n\nCo-authored-by: Dmitry Shachnev <mitya57@users.noreply.github.com>",
"is_bot": false,
"headline": "Ensure `md_in_html` does not drop content",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-04-21T19:57:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "513de8a0db81c840f917488af7078a45f74542bf",
"body": "This is the first tag with support for metadata format 2.4.",
"is_bot": false,
"headline": "Update pypa/gh-action-pypi-publish to v1.12.4",
"author_name": "Dmitry Shachnev",
"author_login": "mitya57",
"committed_at": "2025-04-11T14:18:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b34e1d03387be771aa626241fe56f8f0c34243f2",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.8",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-04-09T17:36:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6b71632726c049ab9a7a1b42e816a67f422064b",
"body": null,
"is_bot": false,
"headline": "Update deploy workflow to normalize version",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-04-09T17:23:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd67d4862b388c7c2dd1ae90635c633472c2c77c",
"body": "* Cleanup versions in changelog\n* Refactor changelog to validate. Use nested lists for contents of each version.\n* Fix internal link in changelog\n* Refactor action to use 2 jobs",
"is_bot": false,
"headline": "Improve changelog validation",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-04-09T16:22:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e912575a903215ebafaeb0fecbdad079d998b9ba",
"body": null,
"is_bot": false,
"headline": "Fix incorrect TOC list structure in docs",
"author_name": "Vladyslav Prudius",
"author_login": "SoulPrudya",
"committed_at": "2025-04-02T15:51:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42d4b4336e97485b96c1e4e9fcdb4e8df2501217",
"body": null,
"is_bot": false,
"headline": "Fix CI badge in README",
"author_name": "Jan Brasna",
"author_login": "janbrasna",
"committed_at": "2025-04-02T14:09:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1caf02892487cead069cb0c4bcdd1e876ca6b590",
"body": "Don't precompute placeholder replacements in raw HTML post-processor. Fixes #1507.\n\nPreviously, the raw HTML post-processor would precompute all possible replacements for placeholders in a string, based on the HTML stash. It would then apply a regular expression substitution using these replacements\n[…]\n` first, before `PLACEHOLDER`. The presence of a wrapping `p` tag indicates whether to wrap again the substitution result, or not (also depending on whether the substituted HTML is a block-level tag).",
"is_bot": false,
"headline": "Optimize raw HTML post-processor (#1510)",
"author_name": "Timothée Mazzucotelli",
"author_login": "pawamoy",
"committed_at": "2025-03-27T12:44:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f6cfc5cca3dd2c313d2fa547b7c88dac656ae506",
"body": null,
"is_bot": false,
"headline": "Use PEP 639 license expressions in project metadata",
"author_name": "Marc Mueller",
"author_login": "cdce8p",
"committed_at": "2025-03-25T17:12:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c6e39ace5e928f37854b3bf1010b209a79e2d63",
"body": null,
"is_bot": false,
"headline": "Add Python 3.13 and drop Python 3.8",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2025-03-25T17:03:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7aae61bea185a4a5c0c48be2619ccc1d294aa381",
"body": "Fixes #1514.",
"is_bot": false,
"headline": "Add special case for closing nested quotes",
"author_name": "Chris Mayfield",
"author_login": "ChrisMayfield",
"committed_at": "2025-03-20T14:40:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ad5b0abf9560255cf9d24234f7de64c0411ab98",
"body": "Fixes #1512",
"is_bot": false,
"headline": "Abbr should respect AtomicStrings",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-03-12T14:36:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6347c57c8f309dcb0aaaa67b60d0f0039ff44484",
"body": "Fixes #1481",
"is_bot": false,
"headline": "Treat center like a block-level element",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-01-31T14:07:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "900e85d4ae8fc60a965034a7a652587222a50916",
"body": "…#1505)\n\n* Remove PHP tests and create tests for cases that are useful to keep\n\nResolves #1480\n\n* Update changelog",
"is_bot": false,
"headline": "Remove PHP tests and create tests for cases that are useful to keep (…",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-01-30T21:32:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2ae4e4a453ba621a141ace7f1603c3a057fade2",
"body": "… (#1503)\n\nEnsure `md_in_html` processes content inside a \"markdown\" block the same way content is processed outside of a \"markdown\" block.\n\n- Flatten the HTML content into placeholders so that the parser will treat the \"markdown\" block content in the same way it does when `md_in_html` is not enable\n[…]\no make better decisions.\n\nAdditionally, fix some issues with tags and inline code.\n\nAlso, fix some issues with one-liner block tags, e.g. `<tag><tag>...`\n\nResolves #1502 \nResolves #1075\nResolves #1074",
"is_bot": false,
"headline": "Adjust `md_in_html` \"markdown\" blocks to process content consistently…",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2025-01-28T20:03:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4260e7b4e68385ea084fd68fe8b20eb332ddd793",
"body": "First line of module docstring is used as summary of module. Therefore, first line should only contain a full sentence and no incomplete links.\r\n\r\nFixes #1495.",
"is_bot": false,
"headline": "Clean up module summaries for API docs",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-12-24T18:28:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7aace29bd33bc1734082b677c6f06aac0dcc6ac2",
"body": "Fixes #1493.",
"is_bot": false,
"headline": "Backslash Unescape IDs set via `attr_list` on `toc`",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-12-13T14:59:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b5e80efbb83f119e0e38801bf5b5b5864c67cd0",
"body": null,
"is_bot": false,
"headline": "Use mkdocs' builtin link checking",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-10-01T17:06:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06c211b99100e8d33019e2a4debdeb702cae232d",
"body": null,
"is_bot": false,
"headline": "update mkdocstring template overrides",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-10-01T17:06:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8552c3bf147c69247748338a43ee25f7716a70dd",
"body": null,
"is_bot": false,
"headline": "fix broken links in docs",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-10-01T17:06:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eeb509d6c09b4841a20127babb26bacc3af09433",
"body": null,
"is_bot": false,
"headline": "Fix DRY by adding create_element method in abbr extension",
"author_name": "Yves Chevallier",
"author_login": "yves-chevallier",
"committed_at": "2024-09-30T17:33:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d312609bc3b2222f387b0c55c7522748a797d40f",
"body": null,
"is_bot": false,
"headline": "Fix small typos in `api.md`",
"author_name": "Sebastián Ramírez",
"author_login": "tiangolo",
"committed_at": "2024-09-30T15:58:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc74d69758ff288e26ff616c703b22ce5a02a68a",
"body": "This is the module: https://github.com/Python-Markdown/markdown/blob/master/markdown/blockparser.py",
"is_bot": false,
"headline": "Use correct import path in `abbr.py`",
"author_name": "sobolevn",
"author_login": "sobolevn",
"committed_at": "2024-08-22T19:11:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da03cd646d00a77786ae1e0bc79b01a5539852bc",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.7",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-08-16T15:53:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd836a1448963081b221ad899399e20bb1ccb857",
"body": null,
"is_bot": false,
"headline": "Update griffe_extensions to support Griffe v 1.0.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-08-16T15:53:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33359faa385f59b84cd87df5f4b0996055a482e2",
"body": "* `AbbrTreeprocessor` now sorts the abbreviation\r\nlist by length before processing the element tree\r\n\r\nThis ensures that multi-word abbreviations are\r\nimplemented even if an abbreviation exists for\r\none of those component words.\r\n\r\n* Added handling for empty abbreviations.\r\n\r\n* Added a `glossary` option for the `abbr` extension\r\nwhich accepts a dictionary.",
"is_bot": false,
"headline": "Abbr Extension: Definition Sorting and Glossary storage",
"author_name": "nbanyan",
"author_login": "nbanyan",
"committed_at": "2024-06-11T15:06:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec8c305fb14eb081bb874c917d8b91d3c5122334",
"body": "A new `AbbrTreeprocessor` has been introduced, which replaces the now\r\ndeprecated `AbbrInlineProcessor`. Abbreviation processing now happens\r\nafter Attribute Lists, avoiding a conflict between the two extensions.\r\nFixes #1460.\r\n\r\nThe `AbbrPreprocessor` class has been renamed to `AbbrBlockprocessor`, which\r\nbetter reflects what it is. `AbbrPreprocessor` has been deprecated.\r\n\r\nA call to `Markdown.reset()` now clears all previously defined abbreviations.",
"is_bot": false,
"headline": "Refactor `abbr` Extension",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-04-25T13:46:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "993b57b8ea577f2120f7d0c81b45ee5ed74a0f57",
"body": "With the current version, if you open e.g. this page:\nhttps://python-markdown.github.io/reference/markdown/blockprocessors/\n\nThe ‹› links on the right side of the page will point to URLs like\nhttps://github.com/Python-Markdown/markdown/tree/3.6//home/runner/work/markdown/markdown/md/markdown/blockprocessors.py\n\nThis commit fixes them by replacing `filepath` with `relative_filepath`.",
"is_bot": false,
"headline": "Fixed links to source code on GitHub from the documentation",
"author_name": "Dmitry Shachnev",
"author_login": "mitya57",
"committed_at": "2024-03-18T14:21:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e524b8fe938738cb4492411a34cce89051cb9695",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.6",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-03-14T15:35:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d8afc6f89e169522f44c1bbec15f66dc359eccb",
"body": "How it worked before:\r\n\r\n * Extract the content without allowing any `}` in it, and require that it ends with `}` - for block elements anchored to the end of the line, otherwise not.\r\n * Parse the content in more detail. No edge cases with `}` can arise. If parsing is interrupted by some unrecogni\n[…]\n: that must mean that we just overmatched a bit, but that's OK, we just assign attrs as normal and put the extra text back into the string. As mentioned, any extra text *before* `}` is just discarded.",
"is_bot": false,
"headline": "Allow attr_list quoted values to contain curly braces",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2024-03-12T15:54:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9edba85fc14f034b7109534220702bf60178ff15",
"body": "A alternate fix to #1444. This does not exclude the use of carrots or square \r\nbrackets in abbreviations. It still excludes backslashse, however. I played\r\nwith backslashes and it just doesn't make sense to support them as they \r\nhave special meaning in the Markdown, not because of their use in regular\r\nexpressions.",
"is_bot": false,
"headline": "Refactor abbr escaping",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-03-08T14:44:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4ab4a610edc6332ce81a53aa4ae6f97516ce461",
"body": "* All postprocessors are run on heading content.\r\n* Footnote references are stripped from heading content. Fixes #660.\r\n* A more robust `striptags` is provided to convert headings to plain text.\r\n Unlike, the `markupsafe` implementation, HTML entities are not unescaped.\r\n* The plain text `name`, ri\n[…]\n defined in the `toc` extension\r\n are both **deprecated**. Instead, use some combination of `run_postprocessors`,\r\n `render_inner_html` and `striptags`.\r\n\r\nCo-authored-by: Oleh Prypin <oleh@pryp.in>",
"is_bot": false,
"headline": "Refactor TOC sanitation",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-03-08T14:05:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a18765c25cccab23f400edeac94d20f4be00492b",
"body": "Fixes #1444.",
"is_bot": false,
"headline": "Explicitly omit carot and backslash from abbr",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-03-06T20:47:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "421f1e88ff4661b4433b97ec57b040a2a74e5aed",
"body": "And add a test for using smarty in ToC headers.\r\n\r\nFixes #1438.",
"is_bot": false,
"headline": "Give smarty tree processor higher priority than toc",
"author_name": "Dmitry Shachnev",
"author_login": "mitya57",
"committed_at": "2024-02-05T13:43:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c334a3e47e6565469344154f966cf0eb9aca0de3",
"body": "This is a weird edge case. Normally, detabbing would be handled by\r\nthe `ListIndentProcessor`. However, in this one case, that class's\r\n`get_level` method would need to return a different result than in\r\nany other case. As there is no way to easily determine this specific\r\ncase from that class, we make the adjustment directly in the\r\n`HashHeaderProcessor` class. Fixes #1433.",
"is_bot": false,
"headline": "Ensure lines after heading in loose list are properly detabbed",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-01-29T18:42:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea92856855a6314488acb121f21f8fa02860e008",
"body": "The license remains BSD 3-Clause but with a better known text",
"is_bot": false,
"headline": "Update the license template so GitHub can detect it",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2024-01-29T18:05:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2effd6d5191808c8b2e347965f6fcf4aa709e78",
"body": "…hing issue in #1432",
"is_bot": false,
"headline": "Disable mkdocstrings show_symbol_type_toc option to work around searc…",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-01-22T14:44:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91f9a1205d32f3bc6a27ca5f993409c3b97c1931",
"body": null,
"is_bot": false,
"headline": "Restore Attribute symbol type in mkdocstrings template",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-01-22T14:44:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6425ffcbe9d4ae87373cedddbbc36ce0025a9d84",
"body": "These scripts are needed for building the documentation.",
"is_bot": false,
"headline": "MANIFEST.in: Include scripts/*.py in the generated source tarball",
"author_name": "Dmitry Shachnev",
"author_login": "mitya57",
"committed_at": "2024-01-14T22:33:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08dacae618775831243f6bbab47d9be590d511f2",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.5.2",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-01-10T15:17:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e466f381d09692f484f8ff022273e2ac8cea0b16",
"body": "As with most implementations, we now pass through bogus comments (as\r\ndefined by the HTML Spec) unaltered except that they are HTML escaped.\r\nThis deviates from the reference implementation which completely ignores\r\nthem. As the reference implementation seems to not have even contemplated\r\ntheir existence, it is not being used as a reference in this instance.\r\nFixes #1425.",
"is_bot": false,
"headline": "Fix handling of bogus comments.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2024-01-03T18:24:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2a9c53ea262ea0d39e76aa18430ce071fbe68d5",
"body": null,
"is_bot": false,
"headline": "Update change log link in README.md",
"author_name": "Dan Bader",
"author_login": "dbader",
"committed_at": "2023-12-05T18:44:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cef5afeb959d11e1ad5566fefa1f9a71136c1050",
"body": null,
"is_bot": false,
"headline": "Update Changelog URL",
"author_name": "Eric",
"author_login": "eric-rm",
"committed_at": "2023-11-20T18:25:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d7f2559c31844f788ea41132f40ace7555518e6",
"body": "Fixes #1416.",
"is_bot": false,
"headline": "Fix missing search in docs",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2023-11-13T19:42:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc14d5917b2943b438af930ae61fe27c31581375",
"body": "Also fix a typo (`path=>paths`).",
"is_bot": false,
"headline": "Split changelog workflows to separate logic on when each gets run.",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-11-06T16:42:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b06df2cff3602c98a77601d95d639ceacedb07d",
"body": null,
"is_bot": false,
"headline": "ghp-import it not a command module",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-11-06T03:07:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dac7977458eb1f2ca27107e65bfa41aad3ac74bb",
"body": null,
"is_bot": false,
"headline": "Fix a minor oversight in #1407",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-11-06T02:34:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcd69b154b74a7818be433491896391058ea7e04",
"body": "The update in 5cbabe1 didn't provide for a .nojekyll file, which is necessary when publishing to GitHub Pages to avoid Jekyll messing with our statically generated documentation.\r\n\r\nAlso added a user input to the manual deploy script which allows deploying from any past reference (tag or commit).",
"is_bot": false,
"headline": "Update docs deploy scripts",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-11-06T01:30:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a63e6f3416f2e4fc7c2d5edb2768ceed9218df20",
"body": "If an inlineprocessor returns an AtomicString (even though that is pointless, a plain string is atomic in that context), there can be an exception in 2 separate places. The added test case was crashing before this change.",
"is_bot": false,
"headline": "Fix edge-case crash in InlineProcessor",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-03T14:20:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5b151ac899dd0e71bc689ecfce17ac6018789eb",
"body": "If there is an empty `<pre><code></code></pre>` inserted by another extension, there can be an exception. The added test case was crashing before this change.",
"is_bot": false,
"headline": "Fix edge-case crash in codehilite",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-03T13:53:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87249beb5257e7c8c2b84ccbedb3f126ab6840d2",
"body": "There are no other references to `content_indention`, and it seems that there were no problems with this only because the other line `self.content_indent = indent` kicks in in all relevant situations.",
"is_bot": false,
"headline": "Fix typo in attribute name",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-02T17:31:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "040b617a0dfed0f647582fffee5b0f3f64447184",
"body": null,
"is_bot": false,
"headline": "Remove legacy import needed only in Python 2",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-02T17:03:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85d0c18dc925c8e2758fe72145f0aeefd56a7fdb",
"body": null,
"is_bot": false,
"headline": "Add and improve type annotations",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-02T14:44:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cbabe1cc774d1e743d11ebc05d5c5c126ee8a7a",
"body": "Switch to a different action (cpina/github-action-push-to-another-repository) which has worked in testing (see https://github.com/waylan/test-repo-source).\r\n\r\nAlso updated the version of many actions in all workflows to eliminate various warnings we have been getting of late.",
"is_bot": false,
"headline": "Update Docs deployment",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-11-02T14:36:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e517de89015e6469e6829d98b6d7c55bd9fedf8",
"body": "* Correctly declare the parameter annotations as `BinaryIO`, because in fact it works only with byte-based buffers.\r\n\r\n* `sys.stdin.read()` is always a string, so remove the Python2-specific check.\r\n * Correct the patch in the test which incorrectly sets `sys.stdin` to a bytes buffer which it nev\n[…]\nc fallback.\r\n * Correct the patch in the test which incorrectly sets `sys.stdout` to a bytes buffer which it never is. And fix a matching mistake because this necessitated `stdout.read().decode()`.",
"is_bot": false,
"headline": "Correct the declarations of I/O buffers as bytes-based",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-11-01T15:18:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2932f183921943687ca3d72b3908a937bd495d24",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.5.1",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-10-31T19:57:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76af499a6771f0a120d5068119bd4af192ad8d79",
"body": "Every edit to the changelog must be validated so that an invalid changelog doesn't block a release.",
"is_bot": false,
"headline": "Update changelog validation (#1388)",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-10-31T18:46:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99425b47bc5b5cf5cda570c1ae5f739082370d8d",
"body": "The origins of these are three-fold:\r\n\r\n* Merging in stubs from https://github.com/python/typeshed/tree/main/stubs/Markdown using \"merge-pyi\"\r\n - Note: we can consider these annotations to be the important ones because it's what people have been adding according to their own need\r\n* Double-checkin\n[…]\ns with annotations that got added in this repository already\r\n + Taking the opportunity to declare a generic \"Registry of T\" class\r\n* Running mypy and eliminating the most glaring errors it reported",
"is_bot": false,
"headline": "Improve type annotations (add more and fix wrong ones)",
"author_name": "Oleh Prypin",
"author_login": "oprypin",
"committed_at": "2023-10-30T17:03:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c53d5d7e56062619d6805ecd117c1067227ae788",
"body": null,
"is_bot": false,
"headline": "Properly resolve relative paths in scripts/gen_ref_nav.py",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-10-27T15:28:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "524e4daa56ead7e551f2c9c0d5ea9460884ad521",
"body": "* Replace dynamic regex with string find operation\r\n* Add cache of where each line starts so we don't have quadratic behavior identifying line numbers when importing large chunks of html",
"is_bot": false,
"headline": "Speedup line_offset property (#1392)",
"author_name": "Eric Norige",
"author_login": "eanorige",
"committed_at": "2023-10-26T18:54:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f0b91abe1a954a72ab3c99c3e2b880ab36631fa",
"body": null,
"is_bot": false,
"headline": "Bump version to 3.5",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-10-06T19:02:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07cbf0a0538bf24d32ab9b2f91cec7fe3d22c689",
"body": "The API docs are auto-generated with mkdocstrings. The Google-style is used in docstrings to document parameters, return values, exceptions raised, etc..\r\n\r\nMost of the docstrings throughout the codebase have been rewritten to be included in the documentations. Most objects have had type annotations\n[…]\n significant portion of the code has received edits, there should be no changes to the code itself and therefore no changes in behavior.\r\n\r\nCo-authored-by @waylan who made most of the docstring edits.",
"is_bot": false,
"headline": "Add API docs to documentation",
"author_name": "Timothée Mazzucotelli",
"author_login": "pawamoy",
"committed_at": "2023-10-06T18:28:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5a2fee340845ee5a70f6570c35b53fd4a37ade1c",
"body": "Fix a corner case in admonitions where if an indented code block was\r\nprovided as the first block, the output would be malformed.\r\n\r\nFixes #1329.",
"is_bot": false,
"headline": "Fix admonition corner case with indented code blocks",
"author_name": "Isaac Muse",
"author_login": "facelessuser",
"committed_at": "2023-09-05T14:01:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25b64df6a9066b8eef7e68101567de938e38ea0e",
"body": "Fixes #1293.",
"is_bot": false,
"headline": "Add customizable TOC title class",
"author_name": "Paolo Melchiorre",
"author_login": "pauloxnet",
"committed_at": "2023-08-11T17:59:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "acdbdc19959f5c02c13f741413d76e23366b4aa5",
"body": "Use Python standard library's HTML_EMPTY which already contains the new tags. Fixes #1353.",
"is_bot": false,
"headline": "Update list of empty HTML tags",
"author_name": "nicbou",
"author_login": "nicbou",
"committed_at": "2023-08-11T17:29:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f50ac4702108e90448919d228d465cc192a58936",
"body": "New changelog is at `docs/changelog.md` and uses the format defined at\r\n<https://keepachangelog.com/>. It only contins releases in the 3.x series.\r\nThe old changelog at `docs/change_log/` remains in its old format as an\r\narchive and only contains older releases. The archive is removed from\r\nthe site\n[…]\nreflect the changes.\r\n\r\nUpdate the changelog validation workflow to use an action which understands the new format.\r\n\r\nUpdate deploy action to include release notes from changelog in a GitHub release.",
"is_bot": false,
"headline": "Refactor changelog",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-08-11T17:13:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8ae73a0580129dfa86e253f337e3da43537104c1",
"body": "Update default version for non-version specific tests (linters, etc)\r\nto PY-3.11 (previously used 3.7). Fixes #1357.\r\n\r\nSkip version isvalid test except when version is changed.",
"is_bot": false,
"headline": "Add PY3.12 & PYPY3.10 and drop 3.7",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-08-08T17:50:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fbb34ea825b5c29faf9490ed3bbd3aab0ad22dbe",
"body": "While we don't really need to upload release files to GitHub (as they\nare uploaded to PyPI), creating releases does provide a mechanism to\nnotify users that a new release is available. As GitHub will automaticaly\ncreate files from the repo when none are provided, we upload the official\ndistribution files instead. Fixes #1365.",
"is_bot": false,
"headline": "Add GitHub Releases action to deploy workflow",
"author_name": "Waylan Limberg",
"author_login": "waylan",
"committed_at": "2023-08-07T18:53:50Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 11,
"commits_last_year": 23,
"latest_release_at": "2026-02-09T14:57:29Z",
"latest_release_tag": "3.10.2",
"releases_from_tags": false,
"days_since_last_push": 13,
"active_weeks_last_year": 14,
"days_since_latest_release": 162,
"mean_days_between_releases": 84.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "Markdown",
"exists": true,
"license": "BSD-3-Clause",
"keywords": [
"markdown",
"markdown-parser",
"python-markdown",
"markdown-to-html",
"Development Status :: 5 - Production/Stable",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Communications :: Email :: Filters",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
"Topic :: Internet :: WWW/HTTP :: Site Management",
"Topic :: Software Development :: Documentation",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: Filters",
"Topic :: Text Processing :: Markup :: HTML",
"Topic :: Text Processing :: Markup :: Markdown"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/Markdown/",
"is_deprecated": false,
"latest_version": "3.10.2",
"repository_url": "https://github.com/Python-Markdown/markdown",
"versions_count": 60,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2008-02-18T02:14:25Z",
"latest_published_at": "2026-02-09T14:57:26.942957Z",
"latest_version_yanked": null,
"days_since_latest_publish": 162
}
]
},
"popularity": {
"forks": 902,
"stars": 4226,
"watchers": 75,
"fork_history": {
"days": [
{
"date": "2011-05-02",
"count": 1
},
{
"date": "2011-06-06",
"count": 1
},
{
"date": "2011-06-18",
"count": 1
},
{
"date": "2011-06-25",
"count": 1
},
{
"date": "2011-06-26",
"count": 1
},
{
"date": "2011-07-25",
"count": 1
},
{
"date": "2011-08-05",
"count": 1
},
{
"date": "2011-08-27",
"count": 1
},
{
"date": "2011-10-04",
"count": 2
},
{
"date": "2011-10-14",
"count": 2
},
{
"date": "2011-11-10",
"count": 1
},
{
"date": "2011-11-25",
"count": 1
},
{
"date": "2011-12-14",
"count": 1
},
{
"date": "2011-12-27",
"count": 1
},
{
"date": "2012-01-02",
"count": 1
},
{
"date": "2012-01-05",
"count": 1
},
{
"date": "2012-01-10",
"count": 1
},
{
"date": "2012-01-31",
"count": 1
},
{
"date": "2012-03-09",
"count": 1
},
{
"date": "2012-04-11",
"count": 1
},
{
"date": "2012-05-23",
"count": 1
},
{
"date": "2012-07-21",
"count": 1
},
{
"date": "2012-07-26",
"count": 1
},
{
"date": "2012-07-31",
"count": 1
},
{
"date": "2012-08-09",
"count": 1
},
{
"date": "2012-08-14",
"count": 1
},
{
"date": "2012-08-23",
"count": 1
},
{
"date": "2012-08-24",
"count": 1
},
{
"date": "2012-08-28",
"count": 1
},
{
"date": "2012-09-02",
"count": 1
},
{
"date": "2012-10-06",
"count": 1
},
{
"date": "2012-10-19",
"count": 2
},
{
"date": "2012-11-03",
"count": 1
},
{
"date": "2012-12-03",
"count": 1
},
{
"date": "2012-12-04",
"count": 1
},
{
"date": "2012-12-20",
"count": 1
},
{
"date": "2013-01-01",
"count": 1
},
{
"date": "2013-01-07",
"count": 1
},
{
"date": "2013-01-08",
"count": 1
},
{
"date": "2013-01-09",
"count": 1
},
{
"date": "2013-01-18",
"count": 1
},
{
"date": "2013-01-27",
"count": 1
},
{
"date": "2013-01-29",
"count": 1
},
{
"date": "2013-02-01",
"count": 1
},
{
"date": "2013-02-05",
"count": 1
},
{
"date": "2013-02-13",
"count": 1
},
{
"date": "2013-02-15",
"count": 1
},
{
"date": "2013-02-17",
"count": 1
},
{
"date": "2013-02-26",
"count": 2
},
{
"date": "2013-03-15",
"count": 1
},
{
"date": "2013-03-21",
"count": 1
},
{
"date": "2013-03-22",
"count": 1
},
{
"date": "2013-03-25",
"count": 1
},
{
"date": "2013-04-30",
"count": 1
},
{
"date": "2013-05-28",
"count": 1
},
{
"date": "2013-06-05",
"count": 2
},
{
"date": "2013-06-09",
"count": 1
},
{
"date": "2013-06-19",
"count": 1
},
{
"date": "2013-06-20",
"count": 1
},
{
"date": "2013-06-25",
"count": 1
},
{
"date": "2013-07-15",
"count": 1
},
{
"date": "2013-07-18",
"count": 1
},
{
"date": "2013-07-23",
"count": 1
},
{
"date": "2013-07-24",
"count": 1
},
{
"date": "2013-07-31",
"count": 1
},
{
"date": "2013-08-01",
"count": 1
},
{
"date": "2013-08-09",
"count": 1
},
{
"date": "2013-08-16",
"count": 1
},
{
"date": "2013-08-31",
"count": 1
},
{
"date": "2013-09-04",
"count": 1
},
{
"date": "2013-09-09",
"count": 1
},
{
"date": "2013-09-16",
"count": 1
},
{
"date": "2013-09-20",
"count": 1
},
{
"date": "2013-09-24",
"count": 1
},
{
"date": "2013-09-26",
"count": 2
},
{
"date": "2013-10-21",
"count": 1
},
{
"date": "2013-10-23",
"count": 1
},
{
"date": "2013-11-09",
"count": 1
},
{
"date": "2013-11-25",
"count": 1
},
{
"date": "2013-12-01",
"count": 2
},
{
"date": "2013-12-20",
"count": 1
},
{
"date": "2013-12-22",
"count": 1
},
{
"date": "2014-01-04",
"count": 1
},
{
"date": "2014-01-06",
"count": 1
},
{
"date": "2014-01-10",
"count": 1
},
{
"date": "2014-02-11",
"count": 1
},
{
"date": "2014-02-14",
"count": 1
},
{
"date": "2014-02-15",
"count": 1
},
{
"date": "2014-02-17",
"count": 1
},
{
"date": "2014-02-20",
"count": 1
},
{
"date": "2014-02-25",
"count": 2
},
{
"date": "2014-02-28",
"count": 1
},
{
"date": "2014-03-07",
"count": 1
},
{
"date": "2014-04-10",
"count": 1
},
{
"date": "2014-05-05",
"count": 1
},
{
"date": "2014-05-14",
"count": 1
},
{
"date": "2014-05-17",
"count": 1
},
{
"date": "2014-05-31",
"count": 1
},
{
"date": "2014-06-01",
"count": 1
},
{
"date": "2014-06-21",
"count": 1
},
{
"date": "2014-07-02",
"count": 1
},
{
"date": "2014-07-08",
"count": 1
},
{
"date": "2014-07-10",
"count": 1
},
{
"date": "2014-07-29",
"count": 1
},
{
"date": "2014-07-30",
"count": 1
},
{
"date": "2014-08-07",
"count": 1
},
{
"date": "2014-08-17",
"count": 1
},
{
"date": "2014-08-22",
"count": 1
},
{
"date": "2014-09-04",
"count": 1
},
{
"date": "2014-09-10",
"count": 1
},
{
"date": "2014-09-13",
"count": 1
},
{
"date": "2014-09-21",
"count": 1
},
{
"date": "2014-09-22",
"count": 1
},
{
"date": "2014-09-23",
"count": 1
},
{
"date": "2014-09-24",
"count": 2
},
{
"date": "2014-10-24",
"count": 1
},
{
"date": "2014-10-31",
"count": 1
},
{
"date": "2014-11-17",
"count": 1
},
{
"date": "2014-11-24",
"count": 1
},
{
"date": "2014-12-04",
"count": 1
},
{
"date": "2014-12-06",
"count": 2
},
{
"date": "2014-12-09",
"count": 1
},
{
"date": "2014-12-18",
"count": 1
},
{
"date": "2015-01-01",
"count": 1
},
{
"date": "2015-01-16",
"count": 1
},
{
"date": "2015-01-21",
"count": 1
},
{
"date": "2015-01-22",
"count": 1
},
{
"date": "2015-01-28",
"count": 1
},
{
"date": "2015-02-23",
"count": 1
},
{
"date": "2015-03-09",
"count": 1
},
{
"date": "2015-03-13",
"count": 1
},
{
"date": "2015-03-22",
"count": 1
},
{
"date": "2015-03-28",
"count": 1
},
{
"date": "2015-04-10",
"count": 1
},
{
"date": "2015-04-19",
"count": 1
},
{
"date": "2015-04-25",
"count": 1
},
{
"date": "2015-05-08",
"count": 1
},
{
"date": "2015-05-19",
"count": 1
},
{
"date": "2015-05-25",
"count": 1
},
{
"date": "2015-05-26",
"count": 1
},
{
"date": "2015-06-04",
"count": 1
},
{
"date": "2015-06-14",
"count": 1
},
{
"date": "2015-07-04",
"count": 1
},
{
"date": "2015-08-01",
"count": 1
},
{
"date": "2015-08-05",
"count": 1
},
{
"date": "2015-08-27",
"count": 1
},
{
"date": "2015-08-28",
"count": 1
},
{
"date": "2015-09-01",
"count": 1
},
{
"date": "2015-09-22",
"count": 1
},
{
"date": "2015-09-25",
"count": 1
},
{
"date": "2015-10-13",
"count": 1
},
{
"date": "2015-10-14",
"count": 1
},
{
"date": "2015-10-22",
"count": 1
},
{
"date": "2015-10-23",
"count": 1
},
{
"date": "2015-11-02",
"count": 1
},
{
"date": "2015-11-08",
"count": 1
},
{
"date": "2015-11-11",
"count": 1
},
{
"date": "2015-11-25",
"count": 2
},
{
"date": "2015-11-28",
"count": 2
},
{
"date": "2015-12-16",
"count": 1
},
{
"date": "2015-12-27",
"count": 1
},
{
"date": "2015-12-30",
"count": 1
},
{
"date": "2016-01-02",
"count": 1
},
{
"date": "2016-01-04",
"count": 1
},
{
"date": "2016-01-25",
"count": 1
},
{
"date": "2016-01-29",
"count": 1
},
{
"date": "2016-02-01",
"count": 1
},
{
"date": "2016-03-03",
"count": 1
},
{
"date": "2016-03-11",
"count": 1
},
{
"date": "2016-03-25",
"count": 1
},
{
"date": "2016-03-29",
"count": 2
},
{
"date": "2016-05-03",
"count": 1
},
{
"date": "2016-05-06",
"count": 1
},
{
"date": "2016-05-08",
"count": 1
},
{
"date": "2016-05-31",
"count": 1
},
{
"date": "2016-06-01",
"count": 1
},
{
"date": "2016-07-14",
"count": 1
},
{
"date": "2016-07-18",
"count": 1
},
{
"date": "2016-07-20",
"count": 1
},
{
"date": "2016-07-25",
"count": 1
},
{
"date": "2016-08-05",
"count": 1
},
{
"date": "2016-08-10",
"count": 1
},
{
"date": "2016-08-15",
"count": 1
},
{
"date": "2016-09-13",
"count": 1
},
{
"date": "2016-09-20",
"count": 1
},
{
"date": "2016-10-17",
"count": 1
},
{
"date": "2016-10-19",
"count": 1
},
{
"date": "2016-10-21",
"count": 1
},
{
"date": "2016-10-24",
"count": 1
},
{
"date": "2016-11-02",
"count": 1
},
{
"date": "2016-11-04",
"count": 1
},
{
"date": "2016-11-12",
"count": 1
},
{
"date": "2016-12-13",
"count": 1
},
{
"date": "2016-12-21",
"count": 1
},
{
"date": "2017-01-08",
"count": 1
},
{
"date": "2017-01-17",
"count": 2
},
{
"date": "2017-02-22",
"count": 1
},
{
"date": "2017-03-08",
"count": 1
},
{
"date": "2017-03-26",
"count": 1
},
{
"date": "2017-03-31",
"count": 1
},
{
"date": "2017-04-25",
"count": 1
},
{
"date": "2017-04-28",
"count": 1
},
{
"date": "2017-05-07",
"count": 1
},
{
"date": "2017-06-07",
"count": 1
},
{
"date": "2017-06-23",
"count": 1
},
{
"date": "2017-06-27",
"count": 1
},
{
"date": "2017-07-14",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-08-17",
"count": 1
},
{
"date": "2017-09-08",
"count": 3
},
{
"date": "2017-09-18",
"count": 1
},
{
"date": "2017-10-05",
"count": 1
},
{
"date": "2017-10-20",
"count": 1
},
{
"date": "2017-10-22",
"count": 1
},
{
"date": "2017-11-01",
"count": 1
},
{
"date": "2017-11-08",
"count": 1
},
{
"date": "2017-11-14",
"count": 1
},
{
"date": "2017-12-08",
"count": 1
},
{
"date": "2017-12-21",
"count": 1
},
{
"date": "2017-12-22",
"count": 2
},
{
"date": "2018-01-07",
"count": 1
},
{
"date": "2018-01-12",
"count": 1
},
{
"date": "2018-01-15",
"count": 1
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-31",
"count": 1
},
{
"date": "2018-02-01",
"count": 1
},
{
"date": "2018-02-07",
"count": 1
},
{
"date": "2018-02-08",
"count": 1
},
{
"date": "2018-02-20",
"count": 2
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-02-23",
"count": 1
},
{
"date": "2018-03-01",
"count": 1
},
{
"date": "2018-03-06",
"count": 1
},
{
"date": "2018-03-11",
"count": 1
},
{
"date": "2018-04-04",
"count": 1
},
{
"date": "2018-04-09",
"count": 1
},
{
"date": "2018-04-11",
"count": 1
},
{
"date": "2018-04-15",
"count": 1
},
{
"date": "2018-04-18",
"count": 1
},
{
"date": "2018-04-24",
"count": 2
},
{
"date": "2018-04-26",
"count": 1
},
{
"date": "2018-04-29",
"count": 1
},
{
"date": "2018-05-07",
"count": 1
},
{
"date": "2018-05-08",
"count": 1
},
{
"date": "2018-05-18",
"count": 1
},
{
"date": "2018-05-19",
"count": 1
},
{
"date": "2018-05-29",
"count": 2
},
{
"date": "2018-06-01",
"count": 1
},
{
"date": "2018-06-10",
"count": 1
},
{
"date": "2018-06-12",
"count": 1
},
{
"date": "2018-06-18",
"count": 1
},
{
"date": "2018-06-19",
"count": 1
},
{
"date": "2018-07-10",
"count": 1
},
{
"date": "2018-07-28",
"count": 1
},
{
"date": "2018-08-03",
"count": 1
},
{
"date": "2018-08-10",
"count": 1
},
{
"date": "2018-08-25",
"count": 1
},
{
"date": "2018-08-27",
"count": 1
},
{
"date": "2018-08-31",
"count": 1
},
{
"date": "2018-09-02",
"count": 1
},
{
"date": "2018-09-07",
"count": 1
},
{
"date": "2018-09-13",
"count": 1
},
{
"date": "2018-09-23",
"count": 1
},
{
"date": "2018-10-11",
"count": 1
},
{
"date": "2018-10-19",
"count": 1
},
{
"date": "2018-10-26",
"count": 1
},
{
"date": "2018-11-06",
"count": 1
},
{
"date": "2018-11-08",
"count": 2
},
{
"date": "2018-11-13",
"count": 1
},
{
"date": "2018-11-18",
"count": 2
},
{
"date": "2018-11-21",
"count": 1
},
{
"date": "2018-11-29",
"count": 1
},
{
"date": "2018-12-01",
"count": 2
},
{
"date": "2018-12-22",
"count": 1
},
{
"date": "2018-12-27",
"count": 1
},
{
"date": "2019-01-04",
"count": 1
},
{
"date": "2019-01-05",
"count": 1
},
{
"date": "2019-01-10",
"count": 1
},
{
"date": "2019-01-16",
"count": 2
},
{
"date": "2019-01-18",
"count": 1
},
{
"date": "2019-01-20",
"count": 1
},
{
"date": "2019-01-29",
"count": 2
},
{
"date": "2019-02-01",
"count": 1
},
{
"date": "2019-02-08",
"count": 1
},
{
"date": "2019-02-17",
"count": 1
},
{
"date": "2019-02-21",
"count": 1
},
{
"date": "2019-03-06",
"count": 2
},
{
"date": "2019-03-07",
"count": 2
},
{
"date": "2019-03-08",
"count": 1
},
{
"date": "2019-03-13",
"count": 1
},
{
"date": "2019-03-23",
"count": 1
},
{
"date": "2019-03-27",
"count": 2
},
{
"date": "2019-03-31",
"count": 1
},
{
"date": "2019-04-09",
"count": 3
},
{
"date": "2019-04-16",
"count": 1
},
{
"date": "2019-04-23",
"count": 1
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-04-27",
"count": 2
},
{
"date": "2019-04-28",
"count": 1
},
{
"date": "2019-04-29",
"count": 1
},
{
"date": "2019-04-30",
"count": 1
},
{
"date": "2019-05-10",
"count": 1
},
{
"date": "2019-05-12",
"count": 1
},
{
"date": "2019-05-16",
"count": 1
},
{
"date": "2019-05-20",
"count": 1
},
{
"date": "2019-05-22",
"count": 1
},
{
"date": "2019-05-31",
"count": 1
},
{
"date": "2019-06-06",
"count": 1
},
{
"date": "2019-06-16",
"count": 1
},
{
"date": "2019-06-17",
"count": 1
},
{
"date": "2019-07-02",
"count": 1
},
{
"date": "2019-07-03",
"count": 1
},
{
"date": "2019-07-08",
"count": 1
},
{
"date": "2019-07-14",
"count": 1
},
{
"date": "2019-07-16",
"count": 1
},
{
"date": "2019-07-23",
"count": 2
},
{
"date": "2019-07-30",
"count": 1
},
{
"date": "2019-08-01",
"count": 1
},
{
"date": "2019-08-10",
"count": 1
},
{
"date": "2019-08-21",
"count": 1
},
{
"date": "2019-08-24",
"count": 1
},
{
"date": "2019-08-30",
"count": 1
},
{
"date": "2019-09-05",
"count": 1
},
{
"date": "2019-09-19",
"count": 1
},
{
"date": "2019-09-29",
"count": 2
},
{
"date": "2019-10-08",
"count": 1
},
{
"date": "2019-10-10",
"count": 1
},
{
"date": "2019-10-14",
"count": 1
},
{
"date": "2019-10-17",
"count": 1
},
{
"date": "2019-10-22",
"count": 1
},
{
"date": "2019-10-23",
"count": 3
},
{
"date": "2019-10-24",
"count": 1
},
{
"date": "2019-10-26",
"count": 1
},
{
"date": "2019-10-27",
"count": 1
},
{
"date": "2019-10-29",
"count": 1
},
{
"date": "2019-10-30",
"count": 1
},
{
"date": "2019-10-31",
"count": 1
},
{
"date": "2019-11-09",
"count": 1
},
{
"date": "2019-12-03",
"count": 1
},
{
"date": "2019-12-07",
"count": 1
},
{
"date": "2019-12-08",
"count": 1
},
{
"date": "2019-12-17",
"count": 1
},
{
"date": "2019-12-20",
"count": 1
},
{
"date": "2019-12-24",
"count": 1
},
{
"date": "2019-12-27",
"count": 1
},
{
"date": "2020-01-08",
"count": 1
},
{
"date": "2020-01-14",
"count": 2
},
{
"date": "2020-01-29",
"count": 1
},
{
"date": "2020-01-31",
"count": 1
},
{
"date": "2020-02-04",
"count": 1
},
{
"date": "2020-02-05",
"count": 1
},
{
"date": "2020-02-22",
"count": 1
},
{
"date": "2020-02-27",
"count": 2
},
{
"date": "2020-03-03",
"count": 3
},
{
"date": "2020-03-05",
"count": 1
},
{
"date": "2020-03-08",
"count": 1
},
{
"date": "2020-03-09",
"count": 1
},
{
"date": "2020-03-10",
"count": 1
},
{
"date": "2020-03-11",
"count": 1
},
{
"date": "2020-03-16",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-21",
"count": 1
},
{
"date": "2020-03-22",
"count": 1
},
{
"date": "2020-03-23",
"count": 1
},
{
"date": "2020-03-31",
"count": 2
},
{
"date": "2020-04-03",
"count": 1
},
{
"date": "2020-04-04",
"count": 1
},
{
"date": "2020-04-08",
"count": 1
},
{
"date": "2020-04-10",
"count": 1
},
{
"date": "2020-04-11",
"count": 1
},
{
"date": "2020-04-14",
"count": 1
},
{
"date": "2020-04-16",
"count": 1
},
{
"date": "2020-04-19",
"count": 2
},
{
"date": "2020-04-26",
"count": 1
},
{
"date": "2020-04-27",
"count": 2
},
{
"date": "2020-05-01",
"count": 1
},
{
"date": "2020-05-06",
"count": 1
},
{
"date": "2020-05-09",
"count": 1
},
{
"date": "2020-05-10",
"count": 1
},
{
"date": "2020-05-18",
"count": 1
},
{
"date": "2020-05-20",
"count": 2
},
{
"date": "2020-05-21",
"count": 1
},
{
"date": "2020-05-28",
"count": 1
},
{
"date": "2020-06-03",
"count": 1
},
{
"date": "2020-06-11",
"count": 1
},
{
"date": "2020-06-12",
"count": 2
},
{
"date": "2020-06-21",
"count": 1
},
{
"date": "2020-06-22",
"count": 1
},
{
"date": "2020-06-24",
"count": 1
},
{
"date": "2020-06-25",
"count": 1
},
{
"date": "2020-07-01",
"count": 1
},
{
"date": "2020-07-07",
"count": 1
},
{
"date": "2020-07-08",
"count": 1
},
{
"date": "2020-07-23",
"count": 1
},
{
"date": "2020-08-03",
"count": 1
},
{
"date": "2020-08-16",
"count": 1
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-09-02",
"count": 2
},
{
"date": "2020-09-03",
"count": 1
},
{
"date": "2020-09-07",
"count": 1
},
{
"date": "2020-09-09",
"count": 1
},
{
"date": "2020-09-11",
"count": 1
},
{
"date": "2020-09-16",
"count": 1
},
{
"date": "2020-09-23",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-07",
"count": 2
},
{
"date": "2020-10-14",
"count": 1
},
{
"date": "2020-10-15",
"count": 2
},
{
"date": "2020-10-17",
"count": 1
},
{
"date": "2020-10-27",
"count": 1
},
{
"date": "2020-10-29",
"count": 1
},
{
"date": "2020-10-30",
"count": 1
},
{
"date": "2020-10-31",
"count": 1
},
{
"date": "2020-11-03",
"count": 1
},
{
"date": "2020-11-06",
"count": 1
},
{
"date": "2020-11-10",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2020-11-29",
"count": 1
},
{
"date": "2020-11-30",
"count": 1
},
{
"date": "2020-12-03",
"count": 1
},
{
"date": "2020-12-06",
"count": 1
},
{
"date": "2020-12-14",
"count": 1
},
{
"date": "2020-12-15",
"count": 1
},
{
"date": "2020-12-16",
"count": 1
},
{
"date": "2020-12-21",
"count": 1
},
{
"date": "2020-12-22",
"count": 1
},
{
"date": "2020-12-27",
"count": 2
},
{
"date": "2020-12-29",
"count": 1
},
{
"date": "2020-12-30",
"count": 1
},
{
"date": "2021-01-04",
"count": 1
},
{
"date": "2021-01-06",
"count": 1
},
{
"date": "2021-01-09",
"count": 2
},
{
"date": "2021-01-12",
"count": 1
},
{
"date": "2021-01-18",
"count": 1
},
{
"date": "2021-01-21",
"count": 1
},
{
"date": "2021-01-22",
"count": 1
},
{
"date": "2021-01-26",
"count": 2
},
{
"date": "2021-01-28",
"count": 1
},
{
"date": "2021-02-02",
"count": 1
},
{
"date": "2021-02-03",
"count": 1
},
{
"date": "2021-02-06",
"count": 1
},
{
"date": "2021-02-09",
"count": 1
},
{
"date": "2021-02-15",
"count": 3
},
{
"date": "2021-02-20",
"count": 2
},
{
"date": "2021-03-01",
"count": 1
},
{
"date": "2021-03-02",
"count": 1
},
{
"date": "2021-03-03",
"count": 1
},
{
"date": "2021-03-05",
"count": 2
},
{
"date": "2021-03-06",
"count": 1
},
{
"date": "2021-03-07",
"count": 1
},
{
"date": "2021-03-12",
"count": 1
},
{
"date": "2021-03-14",
"count": 1
},
{
"date": "2021-03-18",
"count": 1
},
{
"date": "2021-04-01",
"count": 1
},
{
"date": "2021-04-03",
"count": 1
},
{
"date": "2021-04-07",
"count": 1
},
{
"date": "2021-04-13",
"count": 1
},
{
"date": "2021-04-15",
"count": 3
},
{
"date": "2021-04-17",
"count": 1
},
{
"date": "2021-04-19",
"count": 1
},
{
"date": "2021-04-20",
"count": 1
},
{
"date": "2021-04-21",
"count": 1
},
{
"date": "2021-04-23",
"count": 1
},
{
"date": "2021-05-02",
"count": 1
},
{
"date": "2021-05-04",
"count": 1
},
{
"date": "2021-05-06",
"count": 2
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-05-13",
"count": 1
},
{
"date": "2021-05-18",
"count": 1
},
{
"date": "2021-05-20",
"count": 1
},
{
"date": "2021-05-22",
"count": 1
},
{
"date": "2021-05-24",
"count": 2
},
{
"date": "2021-05-26",
"count": 1
},
{
"date": "2021-05-29",
"count": 1
},
{
"date": "2021-06-01",
"count": 1
},
{
"date": "2021-06-03",
"count": 1
},
{
"date": "2021-06-06",
"count": 1
},
{
"date": "2021-06-10",
"count": 2
},
{
"date": "2021-06-12",
"count": 1
},
{
"date": "2021-06-13",
"count": 1
},
{
"date": "2021-06-15",
"count": 1
},
{
"date": "2021-06-23",
"count": 1
},
{
"date": "2021-07-08",
"count": 2
},
{
"date": "2021-07-14",
"count": 1
},
{
"date": "2021-07-15",
"count": 2
},
{
"date": "2021-07-17",
"count": 1
},
{
"date": "2021-07-23",
"count": 1
},
{
"date": "2021-07-27",
"count": 1
},
{
"date": "2021-07-28",
"count": 2
},
{
"date": "2021-07-30",
"count": 1
},
{
"date": "2021-08-01",
"count": 1
},
{
"date": "2021-08-06",
"count": 1
},
{
"date": "2021-08-08",
"count": 1
},
{
"date": "2021-08-09",
"count": 1
},
{
"date": "2021-08-19",
"count": 1
},
{
"date": "2021-08-21",
"count": 1
},
{
"date": "2021-08-22",
"count": 1
},
{
"date": "2021-08-23",
"count": 3
},
{
"date": "2021-08-25",
"count": 2
},
{
"date": "2021-08-26",
"count": 1
},
{
"date": "2021-08-29",
"count": 1
},
{
"date": "2021-08-30",
"count": 2
},
{
"date": "2021-09-02",
"count": 1
},
{
"date": "2021-09-03",
"count": 2
},
{
"date": "2021-09-04",
"count": 1
},
{
"date": "2021-09-05",
"count": 1
},
{
"date": "2021-09-14",
"count": 1
},
{
"date": "2021-09-26",
"count": 1
},
{
"date": "2021-10-05",
"count": 1
},
{
"date": "2021-10-06",
"count": 1
},
{
"date": "2021-10-09",
"count": 1
},
{
"date": "2021-10-12",
"count": 1
},
{
"date": "2021-10-13",
"count": 2
},
{
"date": "2021-10-15",
"count": 1
},
{
"date": "2021-10-16",
"count": 1
},
{
"date": "2021-10-24",
"count": 1
},
{
"date": "2021-10-25",
"count": 1
},
{
"date": "2021-10-27",
"count": 2
},
{
"date": "2021-10-28",
"count": 1
},
{
"date": "2021-10-29",
"count": 1
},
{
"date": "2021-11-08",
"count": 1
},
{
"date": "2021-11-17",
"count": 2
},
{
"date": "2021-11-20",
"count": 1
},
{
"date": "2021-11-25",
"count": 1
},
{
"date": "2021-11-30",
"count": 1
},
{
"date": "2021-12-01",
"count": 1
},
{
"date": "2021-12-10",
"count": 1
},
{
"date": "2021-12-14",
"count": 1
},
{
"date": "2021-12-15",
"count": 1
},
{
"date": "2021-12-20",
"count": 1
},
{
"date": "2021-12-31",
"count": 1
},
{
"date": "2022-01-09",
"count": 1
},
{
"date": "2022-01-11",
"count": 1
},
{
"date": "2022-01-22",
"count": 1
},
{
"date": "2022-01-24",
"count": 1
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-01-27",
"count": 1
},
{
"date": "2022-02-02",
"count": 1
},
{
"date": "2022-02-03",
"count": 1
},
{
"date": "2022-02-05",
"count": 1
},
{
"date": "2022-02-08",
"count": 1
},
{
"date": "2022-02-12",
"count": 1
},
{
"date": "2022-02-16",
"count": 1
},
{
"date": "2022-02-18",
"count": 1
},
{
"date": "2022-02-21",
"count": 1
},
{
"date": "2022-02-23",
"count": 2
},
{
"date": "2022-02-25",
"count": 1
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-03",
"count": 2
},
{
"date": "2022-03-06",
"count": 1
},
{
"date": "2022-03-18",
"count": 1
},
{
"date": "2022-03-21",
"count": 1
},
{
"date": "2022-03-24",
"count": 1
},
{
"date": "2022-04-01",
"count": 1
},
{
"date": "2022-04-02",
"count": 1
},
{
"date": "2022-04-05",
"count": 2
},
{
"date": "2022-04-06",
"count": 1
},
{
"date": "2022-04-07",
"count": 1
},
{
"date": "2022-04-10",
"count": 1
},
{
"date": "2022-04-22",
"count": 1
},
{
"date": "2022-04-28",
"count": 1
},
{
"date": "2022-05-05",
"count": 1
},
{
"date": "2022-05-12",
"count": 1
},
{
"date": "2022-05-13",
"count": 1
},
{
"date": "2022-05-15",
"count": 2
},
{
"date": "2022-05-17",
"count": 1
},
{
"date": "2022-05-22",
"count": 1
},
{
"date": "2022-05-25",
"count": 1
},
{
"date": "2022-05-26",
"count": 1
},
{
"date": "2022-05-31",
"count": 1
},
{
"date": "2022-06-02",
"count": 1
},
{
"date": "2022-06-07",
"count": 1
},
{
"date": "2022-06-11",
"count": 1
},
{
"date": "2022-06-13",
"count": 1
},
{
"date": "2022-06-15",
"count": 1
},
{
"date": "2022-06-22",
"count": 1
},
{
"date": "2022-07-02",
"count": 1
},
{
"date": "2022-07-03",
"count": 1
},
{
"date": "2022-07-06",
"count": 1
},
{
"date": "2022-07-07",
"count": 1
},
{
"date": "2022-07-08",
"count": 2
},
{
"date": "2022-07-09",
"count": 1
},
{
"date": "2022-07-11",
"count": 1
},
{
"date": "2022-07-19",
"count": 1
},
{
"date": "2022-07-20",
"count": 1
},
{
"date": "2022-07-23",
"count": 2
},
{
"date": "2022-07-30",
"count": 1
},
{
"date": "2022-08-05",
"count": 1
},
{
"date": "2022-08-08",
"count": 2
},
{
"date": "2022-08-11",
"count": 1
},
{
"date": "2022-08-19",
"count": 1
},
{
"date": "2022-08-25",
"count": 1
},
{
"date": "2022-08-27",
"count": 1
},
{
"date": "2022-08-30",
"count": 1
},
{
"date": "2022-09-02",
"count": 1
},
{
"date": "2022-09-09",
"count": 1
},
{
"date": "2022-09-11",
"count": 1
},
{
"date": "2022-09-13",
"count": 2
},
{
"date": "2022-09-18",
"count": 1
},
{
"date": "2022-09-25",
"count": 1
},
{
"date": "2022-09-28",
"count": 2
},
{
"date": "2022-10-03",
"count": 1
},
{
"date": "2022-10-07",
"count": 1
},
{
"date": "2022-10-08",
"count": 1
},
{
"date": "2022-10-10",
"count": 2
},
{
"date": "2022-10-13",
"count": 2
},
{
"date": "2022-11-01",
"count": 1
},
{
"date": "2022-11-02",
"count": 1
},
{
"date": "2022-11-05",
"count": 1
},
{
"date": "2022-11-09",
"count": 1
},
{
"date": "2022-11-12",
"count": 1
},
{
"date": "2022-11-24",
"count": 1
},
{
"date": "2022-11-28",
"count": 1
},
{
"date": "2022-11-29",
"count": 1
},
{
"date": "2022-11-30",
"count": 1
},
{
"date": "2022-12-06",
"count": 1
},
{
"date": "2022-12-12",
"count": 1
},
{
"date": "2022-12-19",
"count": 2
},
{
"date": "2022-12-24",
"count": 1
},
{
"date": "2022-12-29",
"count": 1
},
{
"date": "2023-01-03",
"count": 1
},
{
"date": "2023-01-08",
"count": 1
},
{
"date": "2023-01-12",
"count": 1
},
{
"date": "2023-01-17",
"count": 1
},
{
"date": "2023-01-21",
"count": 2
},
{
"date": "2023-02-03",
"count": 2
},
{
"date": "2023-02-04",
"count": 1
},
{
"date": "2023-02-08",
"count": 1
},
{
"date": "2023-02-11",
"count": 1
},
{
"date": "2023-02-13",
"count": 1
},
{
"date": "2023-02-21",
"count": 1
},
{
"date": "2023-02-25",
"count": 1
},
{
"date": "2023-02-26",
"count": 1
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-03-02",
"count": 2
},
{
"date": "2023-03-04",
"count": 2
},
{
"date": "2023-03-05",
"count": 1
},
{
"date": "2023-03-09",
"count": 1
},
{
"date": "2023-03-14",
"count": 1
},
{
"date": "2023-03-15",
"count": 1
},
{
"date": "2023-03-17",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-03",
"count": 1
},
{
"date": "2023-04-15",
"count": 1
},
{
"date": "2023-04-17",
"count": 2
},
{
"date": "2023-04-25",
"count": 1
},
{
"date": "2023-05-02",
"count": 1
},
{
"date": "2023-05-03",
"count": 1
},
{
"date": "2023-05-12",
"count": 1
},
{
"date": "2023-05-14",
"count": 1
},
{
"date": "2023-05-17",
"count": 1
},
{
"date": "2023-05-26",
"count": 1
},
{
"date": "2023-06-04",
"count": 1
},
{
"date": "2023-06-15",
"count": 1
},
{
"date": "2023-06-20",
"count": 1
},
{
"date": "2023-07-01",
"count": 1
},
{
"date": "2023-07-19",
"count": 1
},
{
"date": "2023-07-26",
"count": 1
},
{
"date": "2023-08-11",
"count": 2
},
{
"date": "2023-08-14",
"count": 1
},
{
"date": "2023-08-22",
"count": 1
},
{
"date": "2023-08-28",
"count": 1
},
{
"date": "2023-09-25",
"count": 1
},
{
"date": "2023-10-05",
"count": 1
},
{
"date": "2023-10-09",
"count": 1
},
{
"date": "2023-10-20",
"count": 1
},
{
"date": "2023-10-21",
"count": 1
},
{
"date": "2023-10-31",
"count": 1
},
{
"date": "2023-11-16",
"count": 2
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-23",
"count": 1
},
{
"date": "2023-11-29",
"count": 2
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-05",
"count": 2
},
{
"date": "2023-12-13",
"count": 1
},
{
"date": "2023-12-15",
"count": 1
},
{
"date": "2023-12-17",
"count": 1
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2023-12-24",
"count": 1
},
{
"date": "2024-01-12",
"count": 1
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-18",
"count": 1
},
{
"date": "2024-01-20",
"count": 1
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-27",
"count": 1
},
{
"date": "2024-02-02",
"count": 1
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-21",
"count": 2
},
{
"date": "2024-03-07",
"count": 1
},
{
"date": "2024-03-13",
"count": 1
},
{
"date": "2024-03-15",
"count": 1
},
{
"date": "2024-03-28",
"count": 1
},
{
"date": "2024-04-04",
"count": 1
},
{
"date": "2024-04-22",
"count": 1
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-28",
"count": 1
},
{
"date": "2024-05-08",
"count": 1
},
{
"date": "2024-05-27",
"count": 1
},
{
"date": "2024-06-05",
"count": 1
},
{
"date": "2024-06-08",
"count": 1
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-07-01",
"count": 1
},
{
"date": "2024-07-09",
"count": 1
},
{
"date": "2024-07-10",
"count": 1
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-12",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-25",
"count": 1
},
{
"date": "2024-09-03",
"count": 1
},
{
"date": "2024-09-07",
"count": 1
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-04",
"count": 1
},
{
"date": "2024-10-12",
"count": 1
},
{
"date": "2024-10-23",
"count": 1
},
{
"date": "2024-11-04",
"count": 1
},
{
"date": "2024-12-10",
"count": 1
},
{
"date": "2024-12-13",
"count": 1
},
{
"date": "2024-12-18",
"count": 1
},
{
"date": "2024-12-23",
"count": 1
},
{
"date": "2025-01-09",
"count": 1
},
{
"date": "2025-01-19",
"count": 1
},
{
"date": "2025-01-21",
"count": 1
},
{
"date": "2025-01-25",
"count": 1
},
{
"date": "2025-02-03",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-21",
"count": 1
},
{
"date": "2025-03-16",
"count": 1
},
{
"date": "2025-04-09",
"count": 1
},
{
"date": "2025-04-10",
"count": 1
},
{
"date": "2025-04-17",
"count": 1
},
{
"date": "2025-04-27",
"count": 1
},
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2025-05-07",
"count": 1
},
{
"date": "2025-05-16",
"count": 1
},
{
"date": "2025-05-23",
"count": 1
},
{
"date": "2025-05-25",
"count": 1
},
{
"date": "2025-06-04",
"count": 1
},
{
"date": "2025-06-06",
"count": 1
},
{
"date": "2025-06-27",
"count": 1
},
{
"date": "2025-07-02",
"count": 1
},
{
"date": "2025-07-10",
"count": 2
},
{
"date": "2025-07-11",
"count": 1
},
{
"date": "2025-07-22",
"count": 1
},
{
"date": "2025-07-24",
"count": 1
},
{
"date": "2025-08-07",
"count": 1
},
{
"date": "2025-08-23",
"count": 2
},
{
"date": "2025-09-14",
"count": 1
},
{
"date": "2025-09-15",
"count": 1
},
{
"date": "2025-09-17",
"count": 1
},
{
"date": "2025-09-26",
"count": 1
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-27",
"count": 3
},
{
"date": "2025-10-30",
"count": 2
},
{
"date": "2025-10-31",
"count": 1
},
{
"date": "2025-11-04",
"count": 1
},
{
"date": "2025-11-09",
"count": 1
},
{
"date": "2025-11-10",
"count": 1
},
{
"date": "2025-11-11",
"count": 1
},
{
"date": "2025-11-28",
"count": 1
},
{
"date": "2025-12-10",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-29",
"count": 1
},
{
"date": "2026-01-18",
"count": 1
},
{
"date": "2026-02-01",
"count": 1
},
{
"date": "2026-02-02",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-04-13",
"count": 3
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-22",
"count": 2
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-19",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-07-11",
"count": 1
}
],
"complete": true,
"collected": 883,
"total_forks": 902
},
"star_history": {
"days": [
{
"date": "2023-08-21",
"count": 2
},
{
"date": "2023-08-22",
"count": 1
},
{
"date": "2023-08-25",
"count": 1
},
{
"date": "2023-08-26",
"count": 3
},
{
"date": "2023-08-28",
"count": 3
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-08-30",
"count": 3
},
{
"date": "2023-08-31",
"count": 3
},
{
"date": "2023-09-01",
"count": 2
},
{
"date": "2023-09-02",
"count": 3
},
{
"date": "2023-09-03",
"count": 1
},
{
"date": "2023-09-04",
"count": 1
},
{
"date": "2023-09-06",
"count": 1
},
{
"date": "2023-09-09",
"count": 1
},
{
"date": "2023-09-10",
"count": 1
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-09-12",
"count": 1
},
{
"date": "2023-09-13",
"count": 1
},
{
"date": "2023-09-14",
"count": 1
},
{
"date": "2023-09-18",
"count": 1
},
{
"date": "2023-09-19",
"count": 1
},
{
"date": "2023-09-20",
"count": 1
},
{
"date": "2023-09-22",
"count": 1
},
{
"date": "2023-09-24",
"count": 1
},
{
"date": "2023-09-25",
"count": 3
},
{
"date": "2023-09-26",
"count": 1
},
{
"date": "2023-09-27",
"count": 4
},
{
"date": "2023-09-28",
"count": 3
},
{
"date": "2023-09-29",
"count": 2
},
{
"date": "2023-09-30",
"count": 1
},
{
"date": "2023-10-01",
"count": 1
},
{
"date": "2023-10-02",
"count": 2
},
{
"date": "2023-10-03",
"count": 1
},
{
"date": "2023-10-04",
"count": 2
},
{
"date": "2023-10-05",
"count": 1
},
{
"date": "2023-10-06",
"count": 2
},
{
"date": "2023-10-09",
"count": 1
},
{
"date": "2023-10-10",
"count": 1
},
{
"date": "2023-10-11",
"count": 1
},
{
"date": "2023-10-12",
"count": 2
},
{
"date": "2023-10-13",
"count": 2
},
{
"date": "2023-10-14",
"count": 1
},
{
"date": "2023-10-15",
"count": 2
},
{
"date": "2023-10-16",
"count": 1
},
{
"date": "2023-10-17",
"count": 1
},
{
"date": "2023-10-18",
"count": 1
},
{
"date": "2023-10-19",
"count": 1
},
{
"date": "2023-10-21",
"count": 1
},
{
"date": "2023-10-23",
"count": 2
},
{
"date": "2023-10-24",
"count": 2
},
{
"date": "2023-10-29",
"count": 2
},
{
"date": "2023-10-30",
"count": 1
},
{
"date": "2023-10-31",
"count": 4
},
{
"date": "2023-11-01",
"count": 1
},
{
"date": "2023-11-03",
"count": 1
},
{
"date": "2023-11-04",
"count": 1
},
{
"date": "2023-11-05",
"count": 1
},
{
"date": "2023-11-06",
"count": 2
},
{
"date": "2023-11-07",
"count": 1
},
{
"date": "2023-11-09",
"count": 2
},
{
"date": "2023-11-11",
"count": 2
},
{
"date": "2023-11-12",
"count": 1
},
{
"date": "2023-11-13",
"count": 4
},
{
"date": "2023-11-14",
"count": 2
},
{
"date": "2023-11-17",
"count": 2
},
{
"date": "2023-11-18",
"count": 1
},
{
"date": "2023-11-19",
"count": 1
},
{
"date": "2023-11-21",
"count": 2
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-23",
"count": 3
},
{
"date": "2023-11-24",
"count": 1
},
{
"date": "2023-11-25",
"count": 1
},
{
"date": "2023-11-27",
"count": 1
},
{
"date": "2023-11-29",
"count": 1
},
{
"date": "2023-11-30",
"count": 2
},
{
"date": "2023-12-01",
"count": 2
},
{
"date": "2023-12-02",
"count": 1
},
{
"date": "2023-12-03",
"count": 1
},
{
"date": "2023-12-04",
"count": 1
},
{
"date": "2023-12-05",
"count": 2
},
{
"date": "2023-12-06",
"count": 2
},
{
"date": "2023-12-07",
"count": 2
},
{
"date": "2023-12-08",
"count": 1
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2023-12-12",
"count": 1
},
{
"date": "2023-12-13",
"count": 2
},
{
"date": "2023-12-15",
"count": 2
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2023-12-20",
"count": 1
},
{
"date": "2023-12-21",
"count": 1
},
{
"date": "2023-12-23",
"count": 2
},
{
"date": "2023-12-25",
"count": 1
},
{
"date": "2023-12-26",
"count": 1
},
{
"date": "2023-12-27",
"count": 1
},
{
"date": "2023-12-29",
"count": 2
},
{
"date": "2023-12-30",
"count": 3
},
{
"date": "2024-01-01",
"count": 2
},
{
"date": "2024-01-04",
"count": 2
},
{
"date": "2024-01-05",
"count": 2
},
{
"date": "2024-01-08",
"count": 2
},
{
"date": "2024-01-10",
"count": 1
},
{
"date": "2024-01-11",
"count": 1
},
{
"date": "2024-01-12",
"count": 1
},
{
"date": "2024-01-14",
"count": 1
},
{
"date": "2024-01-17",
"count": 2
},
{
"date": "2024-01-18",
"count": 1
},
{
"date": "2024-01-19",
"count": 1
},
{
"date": "2024-01-21",
"count": 1
},
{
"date": "2024-01-23",
"count": 3
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-25",
"count": 1
},
{
"date": "2024-01-27",
"count": 2
},
{
"date": "2024-01-28",
"count": 1
},
{
"date": "2024-01-30",
"count": 4
},
{
"date": "2024-02-01",
"count": 2
},
{
"date": "2024-02-02",
"count": 2
},
{
"date": "2024-02-03",
"count": 3
},
{
"date": "2024-02-05",
"count": 2
},
{
"date": "2024-02-08",
"count": 4
},
{
"date": "2024-02-09",
"count": 2
},
{
"date": "2024-02-10",
"count": 3
},
{
"date": "2024-02-13",
"count": 1
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-15",
"count": 1
},
{
"date": "2024-02-16",
"count": 2
},
{
"date": "2024-02-18",
"count": 4
},
{
"date": "2024-02-19",
"count": 1
},
{
"date": "2024-02-20",
"count": 1
},
{
"date": "2024-02-22",
"count": 2
},
{
"date": "2024-02-25",
"count": 1
},
{
"date": "2024-02-26",
"count": 3
},
{
"date": "2024-02-28",
"count": 1
},
{
"date": "2024-03-01",
"count": 2
},
{
"date": "2024-03-02",
"count": 1
},
{
"date": "2024-03-03",
"count": 3
},
{
"date": "2024-03-04",
"count": 1
},
{
"date": "2024-03-05",
"count": 1
},
{
"date": "2024-03-06",
"count": 1
},
{
"date": "2024-03-09",
"count": 1
},
{
"date": "2024-03-10",
"count": 2
},
{
"date": "2024-03-12",
"count": 2
},
{
"date": "2024-03-13",
"count": 2
},
{
"date": "2024-03-15",
"count": 2
},
{
"date": "2024-03-17",
"count": 3
},
{
"date": "2024-03-18",
"count": 2
},
{
"date": "2024-03-21",
"count": 1
},
{
"date": "2024-03-22",
"count": 1
},
{
"date": "2024-03-23",
"count": 1
},
{
"date": "2024-03-24",
"count": 1
},
{
"date": "2024-03-25",
"count": 2
},
{
"date": "2024-04-03",
"count": 3
},
{
"date": "2024-04-05",
"count": 1
},
{
"date": "2024-04-06",
"count": 2
},
{
"date": "2024-04-10",
"count": 2
},
{
"date": "2024-04-11",
"count": 2
},
{
"date": "2024-04-12",
"count": 1
},
{
"date": "2024-04-13",
"count": 3
},
{
"date": "2024-04-14",
"count": 2
},
{
"date": "2024-04-15",
"count": 2
},
{
"date": "2024-04-16",
"count": 2
},
{
"date": "2024-04-18",
"count": 1
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-04-20",
"count": 2
},
{
"date": "2024-04-21",
"count": 4
},
{
"date": "2024-04-22",
"count": 4
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-04-25",
"count": 1
},
{
"date": "2024-04-26",
"count": 2
},
{
"date": "2024-04-27",
"count": 1
},
{
"date": "2024-04-28",
"count": 1
},
{
"date": "2024-04-29",
"count": 1
},
{
"date": "2024-04-30",
"count": 1
},
{
"date": "2024-05-02",
"count": 1
},
{
"date": "2024-05-03",
"count": 2
},
{
"date": "2024-05-04",
"count": 1
},
{
"date": "2024-05-06",
"count": 1
},
{
"date": "2024-05-07",
"count": 2
},
{
"date": "2024-05-08",
"count": 2
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-11",
"count": 1
},
{
"date": "2024-05-13",
"count": 2
},
{
"date": "2024-05-14",
"count": 3
},
{
"date": "2024-05-15",
"count": 1
},
{
"date": "2024-05-17",
"count": 1
},
{
"date": "2024-05-18",
"count": 1
},
{
"date": "2024-05-20",
"count": 2
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-22",
"count": 2
},
{
"date": "2024-05-23",
"count": 2
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-25",
"count": 2
},
{
"date": "2024-05-26",
"count": 3
},
{
"date": "2024-05-27",
"count": 2
},
{
"date": "2024-05-28",
"count": 1
},
{
"date": "2024-05-29",
"count": 1
},
{
"date": "2024-05-31",
"count": 1
},
{
"date": "2024-06-01",
"count": 1
},
{
"date": "2024-06-02",
"count": 1
},
{
"date": "2024-06-03",
"count": 1
},
{
"date": "2024-06-05",
"count": 1
},
{
"date": "2024-06-06",
"count": 3
},
{
"date": "2024-06-11",
"count": 1
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-06-13",
"count": 1
},
{
"date": "2024-06-14",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-06-16",
"count": 1
},
{
"date": "2024-06-17",
"count": 3
},
{
"date": "2024-06-18",
"count": 2
},
{
"date": "2024-06-20",
"count": 1
},
{
"date": "2024-06-21",
"count": 1
},
{
"date": "2024-06-22",
"count": 1
},
{
"date": "2024-06-23",
"count": 3
},
{
"date": "2024-06-24",
"count": 1
},
{
"date": "2024-06-26",
"count": 1
},
{
"date": "2024-06-27",
"count": 2
},
{
"date": "2024-06-28",
"count": 1
},
{
"date": "2024-06-29",
"count": 1
},
{
"date": "2024-06-30",
"count": 1
},
{
"date": "2024-07-01",
"count": 1
},
{
"date": "2024-07-02",
"count": 1
},
{
"date": "2024-07-03",
"count": 1
},
{
"date": "2024-07-05",
"count": 3
},
{
"date": "2024-07-07",
"count": 1
},
{
"date": "2024-07-08",
"count": 2
},
{
"date": "2024-07-09",
"count": 2
},
{
"date": "2024-07-11",
"count": 2
},
{
"date": "2024-07-15",
"count": 2
},
{
"date": "2024-07-16",
"count": 1
},
{
"date": "2024-07-17",
"count": 2
},
{
"date": "2024-07-18",
"count": 2
},
{
"date": "2024-07-19",
"count": 2
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-07-24",
"count": 1
},
{
"date": "2024-07-25",
"count": 1
},
{
"date": "2024-07-26",
"count": 2
},
{
"date": "2024-07-28",
"count": 1
},
{
"date": "2024-07-29",
"count": 1
},
{
"date": "2024-07-30",
"count": 1
},
{
"date": "2024-08-01",
"count": 2
},
{
"date": "2024-08-02",
"count": 1
},
{
"date": "2024-08-04",
"count": 3
},
{
"date": "2024-08-05",
"count": 2
},
{
"date": "2024-08-06",
"count": 2
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-09",
"count": 2
},
{
"date": "2024-08-11",
"count": 2
},
{
"date": "2024-08-12",
"count": 4
},
{
"date": "2024-08-15",
"count": 3
},
{
"date": "2024-08-16",
"count": 4
},
{
"date": "2024-08-17",
"count": 1
},
{
"date": "2024-08-19",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-21",
"count": 3
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-08-23",
"count": 1
},
{
"date": "2024-08-24",
"count": 2
},
{
"date": "2024-08-25",
"count": 2
},
{
"date": "2024-08-26",
"count": 2
},
{
"date": "2024-08-29",
"count": 4
},
{
"date": "2024-08-31",
"count": 1
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-04",
"count": 2
},
{
"date": "2024-09-05",
"count": 1
},
{
"date": "2024-09-06",
"count": 4
},
{
"date": "2024-09-08",
"count": 1
},
{
"date": "2024-09-09",
"count": 4
},
{
"date": "2024-09-10",
"count": 2
},
{
"date": "2024-09-13",
"count": 2
},
{
"date": "2024-09-16",
"count": 1
},
{
"date": "2024-09-17",
"count": 1
},
{
"date": "2024-09-18",
"count": 1
},
{
"date": "2024-09-19",
"count": 4
},
{
"date": "2024-09-22",
"count": 2
},
{
"date": "2024-09-23",
"count": 3
},
{
"date": "2024-09-24",
"count": 2
},
{
"date": "2024-09-26",
"count": 1
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-28",
"count": 1
},
{
"date": "2024-09-29",
"count": 4
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-01",
"count": 2
},
{
"date": "2024-10-03",
"count": 2
},
{
"date": "2024-10-04",
"count": 1
},
{
"date": "2024-10-07",
"count": 2
},
{
"date": "2024-10-08",
"count": 1
},
{
"date": "2024-10-09",
"count": 3
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-10-12",
"count": 1
},
{
"date": "2024-10-14",
"count": 1
},
{
"date": "2024-10-16",
"count": 3
},
{
"date": "2024-10-17",
"count": 2
},
{
"date": "2024-10-19",
"count": 1
},
{
"date": "2024-10-21",
"count": 4
},
{
"date": "2024-10-22",
"count": 1
},
{
"date": "2024-10-23",
"count": 1
},
{
"date": "2024-10-24",
"count": 1
},
{
"date": "2024-10-25",
"count": 1
},
{
"date": "2024-10-28",
"count": 3
},
{
"date": "2024-10-29",
"count": 1
},
{
"date": "2024-10-30",
"count": 3
},
{
"date": "2024-11-01",
"count": 1
},
{
"date": "2024-11-03",
"count": 1
},
{
"date": "2024-11-04",
"count": 1
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2024-11-10",
"count": 1
},
{
"date": "2024-11-13",
"count": 3
},
{
"date": "2024-11-14",
"count": 1
},
{
"date": "2024-11-15",
"count": 3
},
{
"date": "2024-11-17",
"count": 1
},
{
"date": "2024-11-22",
"count": 4
},
{
"date": "2024-11-23",
"count": 1
},
{
"date": "2024-11-25",
"count": 2
},
{
"date": "2024-11-26",
"count": 4
},
{
"date": "2024-11-27",
"count": 1
},
{
"date": "2024-12-03",
"count": 2
},
{
"date": "2024-12-04",
"count": 1
},
{
"date": "2024-12-09",
"count": 2
},
{
"date": "2024-12-10",
"count": 1
},
{
"date": "2024-12-11",
"count": 1
},
{
"date": "2024-12-13",
"count": 2
},
{
"date": "2024-12-15",
"count": 2
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2024-12-18",
"count": 1
},
{
"date": "2024-12-20",
"count": 2
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2024-12-22",
"count": 3
},
{
"date": "2024-12-23",
"count": 2
},
{
"date": "2024-12-24",
"count": 2
},
{
"date": "2024-12-26",
"count": 3
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2024-12-28",
"count": 1
},
{
"date": "2024-12-29",
"count": 3
},
{
"date": "2024-12-30",
"count": 2
},
{
"date": "2024-12-31",
"count": 1
},
{
"date": "2025-01-01",
"count": 1
},
{
"date": "2025-01-02",
"count": 2
},
{
"date": "2025-01-04",
"count": 1
},
{
"date": "2025-01-05",
"count": 1
},
{
"date": "2025-01-06",
"count": 3
},
{
"date": "2025-01-07",
"count": 3
},
{
"date": "2025-01-10",
"count": 1
},
{
"date": "2025-01-11",
"count": 1
},
{
"date": "2025-01-13",
"count": 2
},
{
"date": "2025-01-14",
"count": 1
},
{
"date": "2025-01-16",
"count": 1
},
{
"date": "2025-01-17",
"count": 1
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-01-19",
"count": 2
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-01-22",
"count": 2
},
{
"date": "2025-01-23",
"count": 1
},
{
"date": "2025-01-24",
"count": 1
},
{
"date": "2025-01-25",
"count": 1
},
{
"date": "2025-01-26",
"count": 1
},
{
"date": "2025-01-27",
"count": 1
},
{
"date": "2025-01-28",
"count": 1
},
{
"date": "2025-01-29",
"count": 2
},
{
"date": "2025-01-30",
"count": 2
},
{
"date": "2025-01-31",
"count": 4
},
{
"date": "2025-02-03",
"count": 2
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-06",
"count": 2
},
{
"date": "2025-02-07",
"count": 1
},
{
"date": "2025-02-08",
"count": 2
},
{
"date": "2025-02-09",
"count": 1
},
{
"date": "2025-02-10",
"count": 1
},
{
"date": "2025-02-11",
"count": 1
},
{
"date": "2025-02-13",
"count": 1
},
{
"date": "2025-02-14",
"count": 1
},
{
"date": "2025-02-16",
"count": 3
},
{
"date": "2025-02-17",
"count": 1
},
{
"date": "2025-02-18",
"count": 3
},
{
"date": "2025-02-19",
"count": 1
},
{
"date": "2025-02-21",
"count": 3
},
{
"date": "2025-02-22",
"count": 3
},
{
"date": "2025-02-23",
"count": 3
},
{
"date": "2025-02-24",
"count": 3
},
{
"date": "2025-02-26",
"count": 1
},
{
"date": "2025-02-27",
"count": 2
},
{
"date": "2025-02-28",
"count": 3
},
{
"date": "2025-03-01",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-05",
"count": 1
},
{
"date": "2025-03-08",
"count": 2
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-03-11",
"count": 3
},
{
"date": "2025-03-14",
"count": 1
},
{
"date": "2025-03-15",
"count": 1
},
{
"date": "2025-03-18",
"count": 3
},
{
"date": "2025-03-20",
"count": 4
},
{
"date": "2025-03-21",
"count": 2
},
{
"date": "2025-03-23",
"count": 3
},
{
"date": "2025-03-25",
"count": 2
},
{
"date": "2025-03-26",
"count": 1
},
{
"date": "2025-03-27",
"count": 2
},
{
"date": "2025-03-28",
"count": 1
},
{
"date": "2025-03-31",
"count": 2
},
{
"date": "2025-04-02",
"count": 1
},
{
"date": "2025-04-04",
"count": 1
},
{
"date": "2025-04-06",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-08",
"count": 1
},
{
"date": "2025-04-09",
"count": 2
},
{
"date": "2025-04-10",
"count": 1
},
{
"date": "2025-04-12",
"count": 2
},
{
"date": "2025-04-15",
"count": 1
},
{
"date": "2025-04-17",
"count": 1
},
{
"date": "2025-04-22",
"count": 1
},
{
"date": "2025-04-23",
"count": 3
},
{
"date": "2025-04-26",
"count": 2
},
{
"date": "2025-04-29",
"count": 1
},
{
"date": "2025-04-30",
"count": 1
},
{
"date": "2025-05-04",
"count": 2
},
{
"date": "2025-05-05",
"count": 1
},
{
"date": "2025-05-06",
"count": 2
},
{
"date": "2025-05-10",
"count": 2
},
{
"date": "2025-05-12",
"count": 2
},
{
"date": "2025-05-15",
"count": 2
},
{
"date": "2025-05-16",
"count": 3
},
{
"date": "2025-05-19",
"count": 1
},
{
"date": "2025-05-20",
"count": 1
},
{
"date": "2025-05-21",
"count": 1
},
{
"date": "2025-05-22",
"count": 2
},
{
"date": "2025-05-24",
"count": 1
},
{
"date": "2025-05-25",
"count": 1
},
{
"date": "2025-05-26",
"count": 2
},
{
"date": "2025-05-27",
"count": 1
},
{
"date": "2025-05-28",
"count": 3
},
{
"date": "2025-05-30",
"count": 2
},
{
"date": "2025-06-03",
"count": 1
},
{
"date": "2025-06-04",
"count": 5
},
{
"date": "2025-06-06",
"count": 1
},
{
"date": "2025-06-07",
"count": 1
},
{
"date": "2025-06-08",
"count": 2
},
{
"date": "2025-06-09",
"count": 3
},
{
"date": "2025-06-12",
"count": 1
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-19",
"count": 1
},
{
"date": "2025-06-20",
"count": 1
},
{
"date": "2025-06-21",
"count": 1
},
{
"date": "2025-06-22",
"count": 2
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-06-27",
"count": 3
},
{
"date": "2025-06-28",
"count": 1
},
{
"date": "2025-06-29",
"count": 2
},
{
"date": "2025-06-30",
"count": 1
},
{
"date": "2025-07-01",
"count": 1
},
{
"date": "2025-07-03",
"count": 1
},
{
"date": "2025-07-06",
"count": 2
},
{
"date": "2025-07-08",
"count": 1
},
{
"date": "2025-07-10",
"count": 2
},
{
"date": "2025-07-11",
"count": 2
},
{
"date": "2025-07-12",
"count": 2
},
{
"date": "2025-07-15",
"count": 4
},
{
"date": "2025-07-18",
"count": 3
},
{
"date": "2025-07-19",
"count": 3
},
{
"date": "2025-07-20",
"count": 1
},
{
"date": "2025-07-23",
"count": 2
},
{
"date": "2025-07-25",
"count": 1
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-07-28",
"count": 1
},
{
"date": "2025-07-29",
"count": 3
},
{
"date": "2025-07-30",
"count": 4
},
{
"date": "2025-07-31",
"count": 1
},
{
"date": "2025-08-03",
"count": 2
},
{
"date": "2025-08-06",
"count": 3
},
{
"date": "2025-08-08",
"count": 1
},
{
"date": "2025-08-09",
"count": 1
},
{
"date": "2025-08-11",
"count": 2
},
{
"date": "2025-08-12",
"count": 1
},
{
"date": "2025-08-14",
"count": 1
},
{
"date": "2025-08-16",
"count": 1
},
{
"date": "2025-08-18",
"count": 2
},
{
"date": "2025-08-24",
"count": 1
},
{
"date": "2025-08-26",
"count": 2
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-08-29",
"count": 2
},
{
"date": "2025-08-30",
"count": 1
},
{
"date": "2025-08-31",
"count": 1
},
{
"date": "2025-09-01",
"count": 1
},
{
"date": "2025-09-03",
"count": 2
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-06",
"count": 1
},
{
"date": "2025-09-08",
"count": 2
},
{
"date": "2025-09-09",
"count": 3
},
{
"date": "2025-09-10",
"count": 1
},
{
"date": "2025-09-12",
"count": 2
},
{
"date": "2025-09-13",
"count": 3
},
{
"date": "2025-09-14",
"count": 1
},
{
"date": "2025-09-18",
"count": 2
},
{
"date": "2025-09-19",
"count": 1
},
{
"date": "2025-09-20",
"count": 1
},
{
"date": "2025-09-21",
"count": 1
},
{
"date": "2025-09-24",
"count": 2
},
{
"date": "2025-09-26",
"count": 2
},
{
"date": "2025-09-27",
"count": 1
},
{
"date": "2025-09-28",
"count": 1
},
{
"date": "2025-09-29",
"count": 1
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-01",
"count": 3
},
{
"date": "2025-10-09",
"count": 1
},
{
"date": "2025-10-13",
"count": 1
},
{
"date": "2025-10-14",
"count": 1
},
{
"date": "2025-10-16",
"count": 1
},
{
"date": "2025-10-19",
"count": 1
},
{
"date": "2025-10-20",
"count": 1
},
{
"date": "2025-10-23",
"count": 1
},
{
"date": "2025-10-27",
"count": 1
},
{
"date": "2025-10-29",
"count": 1
},
{
"date": "2025-10-31",
"count": 4
},
{
"date": "2025-11-02",
"count": 2
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-11-06",
"count": 1
},
{
"date": "2025-11-08",
"count": 1
},
{
"date": "2025-11-11",
"count": 1
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-16",
"count": 1
},
{
"date": "2025-11-24",
"count": 1
},
{
"date": "2025-11-25",
"count": 2
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-11-28",
"count": 1
},
{
"date": "2025-11-30",
"count": 2
},
{
"date": "2025-12-03",
"count": 3
},
{
"date": "2025-12-04",
"count": 2
},
{
"date": "2025-12-10",
"count": 1
},
{
"date": "2025-12-12",
"count": 1
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-18",
"count": 1
},
{
"date": "2025-12-21",
"count": 1
},
{
"date": "2025-12-23",
"count": 1
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-25",
"count": 1
},
{
"date": "2025-12-26",
"count": 1
},
{
"date": "2026-01-02",
"count": 1
},
{
"date": "2026-01-04",
"count": 2
},
{
"date": "2026-01-06",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-10",
"count": 1
},
{
"date": "2026-01-12",
"count": 2
},
{
"date": "2026-01-16",
"count": 1
},
{
"date": "2026-01-18",
"count": 1
},
{
"date": "2026-01-19",
"count": 5
},
{
"date": "2026-01-20",
"count": 2
},
{
"date": "2026-01-21",
"count": 3
},
{
"date": "2026-01-23",
"count": 2
},
{
"date": "2026-01-24",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-01-31",
"count": 2
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-04",
"count": 1
},
{
"date": "2026-02-12",
"count": 2
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-17",
"count": 1
},
{
"date": "2026-02-19",
"count": 3
},
{
"date": "2026-02-20",
"count": 1
},
{
"date": "2026-02-21",
"count": 2
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-02-24",
"count": 1
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-27",
"count": 2
},
{
"date": "2026-02-28",
"count": 1
},
{
"date": "2026-03-01",
"count": 2
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-07",
"count": 2
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-09",
"count": 2
},
{
"date": "2026-03-10",
"count": 1
},
{
"date": "2026-03-13",
"count": 2
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-03-15",
"count": 1
},
{
"date": "2026-03-16",
"count": 2
},
{
"date": "2026-03-19",
"count": 1
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-24",
"count": 2
},
{
"date": "2026-03-26",
"count": 1
},
{
"date": "2026-03-27",
"count": 2
},
{
"date": "2026-04-04",
"count": 1
},
{
"date": "2026-04-05",
"count": 1
},
{
"date": "2026-04-09",
"count": 1
},
{
"date": "2026-04-10",
"count": 1
},
{
"date": "2026-04-11",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-04-25",
"count": 1
},
{
"date": "2026-04-27",
"count": 1
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-04-29",
"count": 2
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-04",
"count": 2
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-12",
"count": 2
},
{
"date": "2026-05-17",
"count": 1
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-23",
"count": 1
},
{
"date": "2026-05-25",
"count": 1
},
{
"date": "2026-05-26",
"count": 2
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-07",
"count": 1
},
{
"date": "2026-06-08",
"count": 2
},
{
"date": "2026-06-11",
"count": 2
},
{
"date": "2026-06-12",
"count": 2
},
{
"date": "2026-06-23",
"count": 2
},
{
"date": "2026-06-28",
"count": 2
},
{
"date": "2026-07-01",
"count": 1
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-08",
"count": 1
},
{
"date": "2026-07-09",
"count": 1
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-11",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-14",
"count": 1
},
{
"date": "2026-07-17",
"count": 2
}
],
"complete": false,
"collected": 1000,
"total_stars": 4226
},
"open_issues_and_prs": 27
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 60063,
"source_files_sampled": 71,
"oversized_source_files": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"pyproject.toml"
],
"advisories": {
"error": "No resolved dependencies to assess",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [],
"collected": true,
"truncated": false,
"total_count": 0,
"direct_count": 0,
"indirect_count": 0
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 478,
"open_issues": 26,
"closed_ratio": 0.973,
"closed_issues": 933,
"closed_unmerged_prs": 165
},
"bus_factor": 2,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "waylan",
"commits": 355,
"avatar_url": "https://avatars.githubusercontent.com/u/78846?v=4"
},
{
"type": "User",
"login": "mitya57",
"commits": 78,
"avatar_url": "https://avatars.githubusercontent.com/u/1381584?v=4"
},
{
"type": "User",
"login": "yuri",
"commits": 73,
"avatar_url": "https://avatars.githubusercontent.com/u/2119?v=4"
},
{
"type": "User",
"login": "facelessuser",
"commits": 62,
"avatar_url": "https://avatars.githubusercontent.com/u/1055125?v=4"
},
{
"type": "User",
"login": "oprypin",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/371383?v=4"
},
{
"type": "User",
"login": "lahwaacz",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/1289205?v=4"
},
{
"type": "User",
"login": "slig",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/37779?v=4"
},
{
"type": "User",
"login": "lama7",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/1053237?v=4"
},
{
"type": "User",
"login": "mdirolf",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/3546?v=4"
},
{
"type": "User",
"login": "ryneeverett",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/3280280?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.46
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"changelog-enforcer.yml",
"changelog-validator.yml",
"deploy.yml",
"manual_deploy.yml",
"tox.yml",
"version_check.yml"
],
"has_docs_dir": true,
"linter_configs": [
"tox.ini"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": 9,
"reason": "26 out of 27 merged PRs checked by a CI test -- score normalized to 9",
"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": 7,
"reason": "Found 20/28 approved changesets -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 38 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": 10,
"reason": "project is 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": "4 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "8453df010daf9547efcc20a05bb12c0e2fd2016a",
"ran_at": "2026-07-22T01:32:45Z",
"aggregate_score": 5.6,
"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-08T18:21:23Z",
"oldest_open_prs": [
{
"number": 1557,
"created_at": "2025-09-26T10:13:19Z",
"last_comment_at": "2025-09-26T16:24:38Z",
"last_comment_author": "mondeja"
}
],
"last_merged_pr_at": "2026-07-08T18:19:24Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 53,
"created_at": "2011-11-16T14:04:12Z",
"last_comment_at": "2015-10-02T01:01:43Z",
"last_comment_author": "waylan"
},
{
"number": 495,
"created_at": "2016-09-20T20:58:12Z",
"last_comment_at": "2026-05-04T20:22:40Z",
"last_comment_author": "waylan"
},
{
"number": 760,
"created_at": "2018-11-27T19:10:53Z",
"last_comment_at": "2021-04-21T09:02:14Z",
"last_comment_author": "Nirzak"
},
{
"number": 798,
"created_at": "2019-03-06T02:34:50Z",
"last_comment_at": "2024-02-17T04:23:23Z",
"last_comment_author": "stsewd"
},
{
"number": 815,
"created_at": "2019-04-12T19:12:08Z",
"last_comment_at": "2019-06-13T15:54:55Z",
"last_comment_author": "waylan"
},
{
"number": 845,
"created_at": "2019-07-12T11:08:02Z",
"last_comment_at": "2026-01-05T14:10:17Z",
"last_comment_author": "waylan"
},
{
"number": 921,
"created_at": "2020-03-18T15:38:04Z",
"last_comment_at": "2020-03-20T20:14:52Z",
"last_comment_author": "waylan"
},
{
"number": 954,
"created_at": "2020-05-05T07:44:30Z",
"last_comment_at": "2026-05-24T08:56:30Z",
"last_comment_author": "jbbqqf"
},
{
"number": 1067,
"created_at": "2020-11-15T19:27:15Z",
"last_comment_at": "2020-11-16T16:18:44Z",
"last_comment_author": "waylan"
},
{
"number": 1096,
"created_at": "2021-01-12T17:11:02Z",
"last_comment_at": "2021-01-12T20:52:01Z",
"last_comment_author": "facelessuser"
},
{
"number": 1103,
"created_at": "2021-02-06T18:11:08Z",
"last_comment_at": "2022-09-17T23:10:59Z",
"last_comment_author": "raylutz"
},
{
"number": 1123,
"created_at": "2021-03-26T14:21:14Z",
"last_comment_at": "2023-03-16T13:57:47Z",
"last_comment_author": "waylan"
},
{
"number": 1178,
"created_at": "2021-08-24T10:50:16Z",
"last_comment_at": "2024-03-06T02:37:01Z",
"last_comment_author": "j-davis-2022"
},
{
"number": 1238,
"created_at": "2022-03-26T02:35:04Z",
"last_comment_at": "2022-03-28T15:47:06Z",
"last_comment_author": "timmc"
},
{
"number": 1244,
"created_at": "2022-04-09T18:15:46Z",
"last_comment_at": "2022-04-10T19:28:32Z",
"last_comment_author": "waylan"
},
{
"number": 1246,
"created_at": "2022-04-28T01:57:34Z",
"last_comment_at": "2025-07-09T14:32:18Z",
"last_comment_author": "waylan"
},
{
"number": 1383,
"created_at": "2023-10-01T15:51:57Z",
"last_comment_at": "2025-10-01T02:57:42Z",
"last_comment_author": "wigging"
},
{
"number": 1389,
"created_at": "2023-10-09T15:44:50Z",
"last_comment_at": "2023-11-08T20:22:55Z",
"last_comment_author": "waylan"
},
{
"number": 1412,
"created_at": "2023-11-10T16:04:11Z",
"last_comment_at": "2023-11-19T13:08:14Z",
"last_comment_author": "pawamoy"
},
{
"number": 1432,
"created_at": "2024-01-18T19:29:40Z",
"last_comment_at": "2024-02-02T18:57:04Z",
"last_comment_author": "waylan"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Python-Markdown/markdown",
"host": "github.com",
"name": "markdown",
"owner": "Python-Markdown"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"security": 56,
"vitality": 66,
"community": 93,
"governance": 74,
"engineering": 89
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 66,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"commits_last_year": 23,
"human_commit_share": 1,
"days_since_last_push": 13,
"active_weeks_last_year": 14
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 13 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 13
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "14/52 weeks with commits",
"points": 9.7,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 14
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "23 commits in the last year",
"points": 12.4,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 23
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "4 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"releases_count": 11,
"latest_release_tag": "3.10.2",
"releases_from_tags": false,
"days_since_latest_release": 162,
"mean_days_between_releases": 84.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "11 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 11
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 162 days ago",
"points": 27,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 162
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~84.6 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 84.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": 13,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 13 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 13
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 93,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 94,
"inputs": {
"forks": 902,
"stars": 4226,
"watchers": 75,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "4,226 stars",
"points": 58.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 4226
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "902 forks",
"points": 24.6,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 902
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "75 watchers",
"points": 10.4,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 75
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (BSD-3-Clause)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "BSD-3-Clause"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 74,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 100,
"top_contributor_share": 0.46
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 46% of commits",
"points": 12.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 46
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 38 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"merged_prs": 478,
"open_issues": 26,
"closed_issues": 933,
"issue_closed_ratio": 0.973,
"closed_unmerged_prs": 165
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "97% of issues closed",
"points": 45.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 97
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "478/643 decided PRs merged",
"points": 28.4,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 478,
"decided": 643
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 20/28 approved changesets -- score normalized to 7",
"points": 10.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"followers": 68,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Python-Markdown",
"public_repos": 4,
"account_age_days": 4159
},
"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": "68 followers of Python-Markdown",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 68,
"login": "Python-Markdown"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "4 public repos, account ~11 yr old",
"points": 17.1,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 4
}
},
{
"code": "account_age_years",
"params": {
"years": 11
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"Markdown"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 162
},
"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 162 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 162
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "60 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 60
}
}
],
"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": 89,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "tox.ini",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tox.ini"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "26 out of 27 merged PRs checked by a CI test -- score normalized to 9",
"points": 18,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"python-markdown",
"markdown",
"markdown-parser",
"markdown-to-html",
"python",
"python3"
],
"has_wiki": true,
"homepage": "https://python-markdown.github.io/",
"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://python-markdown.github.io/",
"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": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"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": "moderate",
"name": "Security",
"value": 56,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 56,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 5.6
},
"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": "26 out of 27 merged PRs checked by a CI test -- score normalized to 9",
"points": 2.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 20/28 approved changesets -- score normalized to 7",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 38 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 fuzzed",
"points": 5,
"status": "met",
"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": "4 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 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": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 8
},
"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": 42,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 24,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.45,
"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": "45 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 24,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 45,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"makefile"
],
"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": "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": "tox.ini",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tox.ini"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": 54,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 60063,
"source_files_sampled": 71,
"oversized_source_files": 1
},
"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": "1/71 source files over 60KB",
"points": 54.2,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 71,
"oversized": 1
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [],
"report_type": "repository",
"generated_at": "2026-07-22T01:33:11.474254Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/Python-Markdown/markdown.svg",
"full_name": "Python-Markdown/markdown",
"license_state": "standard",
"license_spdx": "BSD-3-Clause"
}