Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"programming-language",
"python",
"quantum-computing"
],
"is_fork": false,
"size_kb": 12487,
"has_wiki": true,
"homepage": "https://guppylang.org",
"languages": {
"Nix": 604,
"Just": 3125,
"Rust": 3122,
"Shell": 66,
"Python": 2004493,
"WebAssembly": 1302,
"Jupyter Notebook": 83992
},
"pushed_at": "2026-08-03T16:03:04Z",
"created_at": "2023-04-24T09:48:07Z",
"owner_type": "Organization",
"updated_at": "2026-08-03T15:06:18Z",
"description": "Pythonic quantum-classical programming language",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "http://www.quantinuum.com",
"name": "Quantinuum Ltd",
"type": "Organization",
"login": "Quantinuum",
"company": null,
"location": "Cambridge, UK",
"followers": 328,
"avatar_url": "https://avatars.githubusercontent.com/u/15688781?v=4",
"created_at": "2015-11-06T12:30:50Z",
"is_verified": null,
"public_repos": 203,
"account_age_days": 3923
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "guppylang-internals-v1.0.0",
"kind": "other",
"published_at": "2026-08-03T16:04:06Z"
},
{
"tag": "guppylang-v1.0.0",
"kind": "other",
"published_at": "2026-08-03T16:04:27Z"
},
{
"tag": "guppylang-internals-v1.0.0-rc2",
"kind": "other",
"published_at": "2026-07-17T12:19:20Z"
},
{
"tag": "guppylang-v1.0.0-rc2",
"kind": "other",
"published_at": "2026-07-17T11:17:27Z"
},
{
"tag": "guppylang-internals-v1.0.0-rc1",
"kind": "other",
"published_at": "2026-07-08T14:29:56Z"
},
{
"tag": "guppylang-v1.0.0-rc1",
"kind": "other",
"published_at": "2026-07-08T14:30:07Z"
},
{
"tag": "guppylang-internals-v1.0.0-rc0",
"kind": "other",
"published_at": "2026-07-02T13:00:12Z"
},
{
"tag": "guppylang-v1.0.0-rc0",
"kind": "other",
"published_at": "2026-07-02T13:00:26Z"
},
{
"tag": "guppylang-v1.0.0-a8",
"kind": "other",
"published_at": "2026-06-30T15:50:16Z"
},
{
"tag": "guppylang-internals-v1.0.0-a8",
"kind": "other",
"published_at": "2026-06-30T15:50:04Z"
},
{
"tag": "guppylang-internals-v1.1",
"kind": "other",
"published_at": "2026-06-25T15:33:32Z"
},
{
"tag": "guppylang-v1.0.0-a7",
"kind": "other",
"published_at": "2026-06-25T15:33:46Z"
},
{
"tag": "guppylang-internals-v1.0",
"kind": "other",
"published_at": "2026-06-24T17:02:10Z"
},
{
"tag": "guppylang-v1.0.0-a6",
"kind": "other",
"published_at": "2026-06-24T17:02:37Z"
},
{
"tag": "guppylang-v1.0.0-a5",
"kind": "other",
"published_at": "2026-06-15T16:29:46Z"
},
{
"tag": "guppylang-internals-v1.0.0-a5",
"kind": "other",
"published_at": "2026-06-15T16:03:25Z"
},
{
"tag": "guppylang-v1.0.0-a4",
"kind": "other",
"published_at": "2026-06-12T11:02:00Z"
},
{
"tag": "guppylang-internals-v1.0.0-a4",
"kind": "other",
"published_at": "2026-06-12T10:41:20Z"
},
{
"tag": "guppylang-v1.0.0-a3",
"kind": "other",
"published_at": "2026-06-10T14:19:32Z"
},
{
"tag": "guppylang-internals-v1.0.0-a3",
"kind": "other",
"published_at": "2026-06-10T13:53:32Z"
},
{
"tag": "guppylang-v1.0.0-a2",
"kind": "other",
"published_at": "2026-06-08T16:00:42Z"
},
{
"tag": "guppylang-internals-v1.0.0-a2",
"kind": "other",
"published_at": "2026-06-08T15:33:33Z"
},
{
"tag": "guppylang-v1.0.0-a1",
"kind": "other",
"published_at": "2026-06-04T14:54:17Z"
},
{
"tag": "guppylang-v0.21.16",
"kind": "other",
"published_at": "2026-06-04T14:55:34Z"
},
{
"tag": "guppylang-internals-v0.36.1",
"kind": "other",
"published_at": "2026-06-04T14:49:26Z"
},
{
"tag": "guppylang-internals-v1.0.0-a1",
"kind": "other",
"published_at": "2026-06-04T14:34:27Z"
},
{
"tag": "guppylang-v1.0.0-a0",
"kind": "other",
"published_at": "2026-06-01T09:04:07Z"
},
{
"tag": "guppylang-internals-v1.0.0-a0",
"kind": "other",
"published_at": "2026-05-29T13:50:10Z"
},
{
"tag": "guppylang-v0.21.15",
"kind": "other",
"published_at": "2026-05-18T11:24:37Z"
},
{
"tag": "guppylang-internals-v0.36.0",
"kind": "other",
"published_at": "2026-05-18T09:53:36Z"
},
{
"tag": "guppylang-v0.21.14",
"kind": "other",
"published_at": "2026-05-01T11:13:38Z"
},
{
"tag": "guppylang-internals-v0.35.0",
"kind": "other",
"published_at": "2026-05-01T10:23:12Z"
},
{
"tag": "guppylang-v0.21.13",
"kind": "other",
"published_at": "2026-04-21T11:00:07Z"
},
{
"tag": "guppylang-internals-v0.34.0",
"kind": "other",
"published_at": "2026-04-21T10:18:36Z"
},
{
"tag": "guppylang-v0.21.12",
"kind": "other",
"published_at": "2026-04-16T14:21:22Z"
},
{
"tag": "guppylang-internals-v0.33.0",
"kind": "other",
"published_at": "2026-04-16T14:00:27Z"
},
{
"tag": "guppylang-v0.21.11",
"kind": "other",
"published_at": "2026-04-01T13:19:55Z"
},
{
"tag": "guppylang-internals-v0.32.0",
"kind": "other",
"published_at": "2026-04-01T12:42:11Z"
},
{
"tag": "guppylang-v0.21.10",
"kind": "other",
"published_at": "2026-03-23T14:46:20Z"
},
{
"tag": "guppylang-internals-v0.31.0",
"kind": "other",
"published_at": "2026-03-23T14:10:34Z"
},
{
"tag": "guppylang-v0.21.9",
"kind": "other",
"published_at": "2026-02-18T16:44:14Z"
},
{
"tag": "guppylang-internals-v0.30.0",
"kind": "other",
"published_at": "2026-02-18T15:13:21Z"
},
{
"tag": "guppylang-internals-v0.29.0",
"kind": "other",
"published_at": "2026-02-11T16:53:49Z"
},
{
"tag": "guppylang-internals-v0.28.0",
"kind": "other",
"published_at": "2026-02-05T15:41:25Z"
},
{
"tag": "guppylang-v0.21.8",
"kind": "other",
"published_at": "2026-01-09T12:01:52Z"
},
{
"tag": "guppylang-internals-v0.27.0",
"kind": "other",
"published_at": "2026-01-09T10:57:44Z"
},
{
"tag": "guppylang-v0.21.7",
"kind": "other",
"published_at": "2025-12-15T14:25:50Z"
},
{
"tag": "guppylang-internals-v0.26.0",
"kind": "other",
"published_at": "2025-12-15T13:50:07Z"
},
{
"tag": "guppylang-v0.21.6",
"kind": "other",
"published_at": "2025-10-30T17:36:39Z"
},
{
"tag": "guppylang-internals-v0.25.0",
"kind": "other",
"published_at": "2025-10-29T15:12:49Z"
},
{
"tag": "guppylang-v0.21.5",
"kind": "other",
"published_at": "2025-09-22T14:33:37Z"
},
{
"tag": "guppylang-v0.21.4",
"kind": "other",
"published_at": "2025-09-19T15:47:37Z"
},
{
"tag": "guppylang-internals-v0.24.0",
"kind": "other",
"published_at": "2025-09-19T15:21:57Z"
},
{
"tag": "guppylang-v0.21.3",
"kind": "other",
"published_at": "2025-08-19T18:32:54Z"
},
{
"tag": "guppylang-internals-v0.23.0",
"kind": "other",
"published_at": "2025-08-19T18:00:41Z"
},
{
"tag": "guppylang-v0.21.2",
"kind": "other",
"published_at": "2025-08-11T16:51:29Z"
},
{
"tag": "guppylang-internals-v0.22.0",
"kind": "other",
"published_at": "2025-08-11T16:35:44Z"
},
{
"tag": "guppylang-internals-v0.21.2",
"kind": "other",
"published_at": "2025-08-11T14:37:09Z"
},
{
"tag": "guppylang-v0.21.1",
"kind": "other",
"published_at": "2025-08-05T13:06:51Z"
},
{
"tag": "guppylang-internals-v0.21.1",
"kind": "other",
"published_at": "2025-08-05T12:51:35Z"
},
{
"tag": "guppylang-v0.21.0",
"kind": "other",
"published_at": "2025-08-04T22:51:15Z"
},
{
"tag": "guppylang-internals-v0.21.0",
"kind": "other",
"published_at": "2025-08-04T22:32:47Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2025-06-19T14:22:41Z"
},
{
"tag": "v0.19.1",
"kind": "patch",
"published_at": "2025-05-27T11:17:29Z"
},
{
"tag": "v0.19.0",
"kind": "minor",
"published_at": "2025-05-22T16:53:30Z"
},
{
"tag": "v0.18.2",
"kind": "patch",
"published_at": "2025-05-19T12:43:13Z"
},
{
"tag": "v0.18.1",
"kind": "patch",
"published_at": "2025-04-29T13:00:19Z"
},
{
"tag": "v0.18.0",
"kind": "minor",
"published_at": "2025-03-25T12:27:45Z"
},
{
"tag": "v0.17.1",
"kind": "patch",
"published_at": "2025-03-24T15:32:19Z"
},
{
"tag": "v0.17.0",
"kind": "minor",
"published_at": "2025-03-18T15:01:18Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2025-02-20T10:18:54Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2025-02-12T14:42:01Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2024-12-19T12:28:57Z"
},
{
"tag": "v0.13.1",
"kind": "patch",
"published_at": "2024-11-15T13:42:17Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2024-11-12T17:08:10Z"
},
{
"tag": "v0.12.2",
"kind": "patch",
"published_at": "2024-10-21T13:53:37Z"
},
{
"tag": "v0.12.1",
"kind": "patch",
"published_at": "2024-09-23T17:16:46Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2024-09-18T13:26:49Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2024-09-11T15:10:00Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2024-09-11T08:34:44Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2024-08-12T14:15:19Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2024-08-08T14:42:44Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2024-07-31T08:13:27Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2024-07-25T08:40:26Z"
},
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2024-07-10T13:13:00Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2024-07-09T16:17:48Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2024-07-02T08:22:55Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2024-06-13T10:01:55Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2024-06-12T12:33:17Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2024-06-10T13:52:46Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2024-05-30T10:08:49Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2024-05-22T14:20:38Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2024-04-11T09:50:57Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2024-01-19T16:55:25Z"
}
],
"recent_commits": [
{
"oid": "1ace5b92f0848ee7455b35ca5d617a6423e96b97",
"body": null,
"is_bot": false,
"headline": "fix: (Don't) Handle kwargs in dummy decorator (#2154)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-08-03T14:53:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76eef1a3962e160d5c48d4def6ac133ef781612f",
"body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: port cannonical QPE example to use Guppy modifiers (#1939)",
"author_name": "Callum Macpherson",
"author_login": "CalMacCQ",
"committed_at": "2026-08-03T14:33:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cebd1aff57047a3cee4fd516256e8b8c9093014f",
"body": "…140)",
"is_bot": false,
"headline": "fix: Make most builtin functions + struct constructors daggerable (#2…",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-08-03T13:37:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb886d296922ac878c73b98a9f884ac3a54ca575",
"body": "…(#2126)",
"is_bot": false,
"headline": "feat: Add optional `debug_mode` argument to `compile` and `emulator` …",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-08-03T13:22:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca59a1bd38058f71bc9e28830d1208a9e15142c5",
"body": null,
"is_bot": false,
"headline": "docs: Fix broken code blocks in emulator docs (#2149)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-08-03T12:58:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5fc38237158ae6b58b4de6b9178461c5c1cbb22",
"body": null,
"is_bot": false,
"headline": "feat: Add RemoveRedundancies pass to default compilation (#2130)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-08-03T12:06:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08a0251a050df224b48158806234d1c6e7f55608",
"body": "…. (#2137)",
"is_bot": false,
"headline": "fix: address missing API docs members from the std.collections module…",
"author_name": "Callum Macpherson",
"author_login": "CalMacCQ",
"committed_at": "2026-08-03T11:36:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc824f47a53e46501d7c6ea4e7570e01b52ca740",
"body": "…#2125)",
"is_bot": false,
"headline": "docs: add entrypoint arguments and target platform to emulator docs (…",
"author_name": "Seyon Sivarajah",
"author_login": "ss2165",
"committed_at": "2026-08-03T11:07:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb95025b4382a4ee91a89aa1e6e488aedb77a3e1",
"body": "Co-authored-by: Craig Roy <croyzor@users.noreply.github.com>",
"is_bot": false,
"headline": "fix: Assign a `FunctionDefType` to nested functions (#2116)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-08-03T09:08:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f91145ca2c8f9cd9cfdcbb55e29366b13bdff4dc",
"body": null,
"is_bot": false,
"headline": "fix: Preserve generic parameters in modifier blocks (#2115)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-08-03T08:23:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5efc973891c2ea0f3c406672c2731f44a7253fc5",
"body": null,
"is_bot": false,
"headline": "feat: Update examples with playpond links (#2107)",
"author_name": "Aidan",
"author_login": "aidanCQ",
"committed_at": "2026-08-03T07:33:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16f84cc6847d6d768e877993282eed6129651759",
"body": null,
"is_bot": false,
"headline": "docs: fix emulator argument formatting (#2124)",
"author_name": "Seyon Sivarajah",
"author_login": "ss2165",
"committed_at": "2026-07-31T16:16:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e04c6d22a431dc2ef412cc9149ee9b643f3a5db7",
"body": "Co-authored-by: Callum Macpherson <93673602+CalMacCQ@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: Optimization module docs (#2121)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-07-31T15:06:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06031de598b6977978978d1f41b02d017ef1402b",
"body": null,
"is_bot": false,
"headline": "fix: False type error when checking `Callable` protocol (#2120)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-07-31T12:18:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0573a82cec38af580694ed58067f6c5b6004490e",
"body": "…ay round (#2118)",
"is_bot": false,
"headline": "fix!: Type args to Either/Result factory methods `right`/`err` same w…",
"author_name": "Alan Lawrence",
"author_login": "acl-cqc",
"committed_at": "2026-07-31T10:14:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bca2da08625dd0b92ea293fcf058454c49bec9c",
"body": null,
"is_bot": false,
"headline": "fix: Add debug info to nested function definitions (#2112)",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-29T13:43:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ce4321c0e499b31b242e18970df55e636152780",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump setuptools from 82.0.1 to 83.0.0 (#2111)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-29T11:37:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81ace8a06343fca4cde4d92aee1f91df322ee7b9",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump mistune from 3.2.1 to 3.3.0 (#2110)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-29T11:20:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e2e9048b1e027a326cfa2b3ac70797ae3b07d8d",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump pillow from 12.2.0 to 12.3.0 (#2109)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-29T11:05:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7342da59fe818d5f10522aa94bf9e5713e63aeb4",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump gitpython from 3.1.50 to 3.1.54 (#2108)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-29T11:03:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0eed5ef20c81a454783211fa56b296a0bbd899f",
"body": null,
"is_bot": false,
"headline": "fix: Correctly parse modifier protocol bounds (#2098)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-29T10:21:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91eeb62ef4a7626b275be6ef38689e767b3d9bc5",
"body": "…(#2105)\n\nCo-authored-by: Maximilian Rüsch <78490564+maximilianruesch@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: more specific std.qsystem documentation including ion identity …",
"author_name": "Seyon Sivarajah",
"author_login": "ss2165",
"committed_at": "2026-07-28T13:57:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47205e950e86cce0acd73a9f57a85a46df3a4078",
"body": "…ide DataflowOp (#2024)",
"is_bot": false,
"headline": "refactor: remove EXTENSION_OPS_WITH_SIDE_EFFECTS, pass effects alongs…",
"author_name": "Alan Lawrence",
"author_login": "acl-cqc",
"committed_at": "2026-07-28T12:04:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d182404fb0d1b87b88016745a70675a4e380a040",
"body": "Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: Document expected qubits in emulator API (#2099)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-28T07:34:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfc817787a813af492889dbff04ee32d854fdb9f",
"body": "…t (#2100)",
"is_bot": false,
"headline": "chore: Upgrade pytest-notebook to fix compatibility with latest pytes…",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-27T15:59:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce6e3574ae69d81cc14a2ed0f399c9c19f143cdd",
"body": "…(#2096)",
"is_bot": false,
"headline": "fix!: Stop treating protocol bounds as always copyable and droppable …",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-27T15:38:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4fbcabb754dacc668ed519f7f10bf4a574554dd0",
"body": null,
"is_bot": false,
"headline": "fix: Correctly derive linearity of structs from their fields (#2050)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-27T10:38:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "647ad5efb755cef13c77147393cbf422bff2c299",
"body": null,
"is_bot": false,
"headline": "feat: Smarter coercions in array constructor (#2049)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-27T10:37:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a3d64d634c1873054cca03917d7c43bf7555b0e",
"body": null,
"is_bot": false,
"headline": "chore: Update to selene-sim 0.3.0 (#2088)",
"author_name": "Alec Edgington",
"author_login": "cqc-alec",
"committed_at": "2026-07-27T10:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8fa3b436a002962b037e122105a6420feb05939",
"body": "…(#2037)",
"is_bot": false,
"headline": "refactor: Remove inheritance of CompiledCallableDef from CallableDef …",
"author_name": "Alan Lawrence",
"author_login": "acl-cqc",
"committed_at": "2026-07-24T08:21:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5244a3737637a3453634532a3223f4a2022e6072",
"body": "…ct.toml` (#2085)",
"is_bot": false,
"headline": "chore: Remove 3.10/3.11 classifiers from guppylang-internals `pyproje…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-22T09:49:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad5709c5fbfd372839b1aba865435f52bf6b4ffd",
"body": null,
"is_bot": false,
"headline": "fix: Unitary checker skips invalid function calls in arguments (#2081)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-07-22T09:47:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5903c946b43058e28f0d267c56901e39c464b6c5",
"body": "… functions (#2046)",
"is_bot": false,
"headline": "fix: Fix comptime inout updates for `state_output` (and other custom)…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-22T08:58:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ef99cdfe8689d087c337479d4a8414bf6ea4479",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump wasmtime from 46.0.1 to 47.0.1 (#2076)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-21T08:03:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efb0e8314e35ce6c0136b1f87ba38ac5a8333876",
"body": "…t keep tket dependency bump (#2071)",
"is_bot": false,
"headline": "feat: Revert \"feat: Add quantum pass to default opt level (#2063)\" bu…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-17T10:19:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd788ef9209cb7883c2649072cf832f6ebc21ed3",
"body": null,
"is_bot": false,
"headline": "chore: Update qis-compiler to 0.4.2 (#2069)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-07-16T16:21:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2970cb5ce9445896c12e3cbc84d76368dd7f4d7d",
"body": null,
"is_bot": false,
"headline": "feat: Add quantum pass to default opt level (#2063)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-07-16T14:57:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15215d1e13984573ca86db0fd07b51e90f0a6748",
"body": "…s are used in dagger cotext (#2061)\n\nCo-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(guppylang)!: Raise an error if non daggerable classical function…",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-07-16T13:25:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b06ee5d25a2d2dec9e14906ac6121461063a86b1",
"body": null,
"is_bot": false,
"headline": "chore: Bump selene to 0.3.0a2 (#2062)",
"author_name": "Jake Arkinstall",
"author_login": "jake-arkinstall",
"committed_at": "2026-07-16T13:15:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d3b2fd4461b6b2de2235b076fdb3677279b20b8",
"body": "…s (#2059)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump the patch group across 1 directory with 2 update…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-16T10:21:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0bae264982341ecbc61b19c365ba4af05bc2114c",
"body": null,
"is_bot": false,
"headline": "feat: Update hugr to `0.18.2`, implement value ext resolution (#2058)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-07-16T09:15:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "218651f0e33ab9dc0e742fb80155ef3ef0c0821d",
"body": null,
"is_bot": false,
"headline": "refactor: Remove ProtocolCall (#2034)",
"author_name": "Alan Lawrence",
"author_login": "acl-cqc",
"committed_at": "2026-07-15T21:13:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "305973de9efcef410785a88945ec91341dfba6d1",
"body": null,
"is_bot": false,
"headline": "test: fixture for enabling experimental features selectively (#2048)",
"author_name": "Fernando Betanzo Sanchez",
"author_login": "ferbetanzo",
"committed_at": "2026-07-15T08:03:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "939492eebd511d7b0338943fd0782f80cb722265",
"body": "…(#2040)",
"is_bot": false,
"headline": "fix: Fix diagnostics rendering for type aliases in Jupyter notebooks …",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-14T10:09:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5441710e83c44fccce9ec3beb411f04ec40b5de",
"body": null,
"is_bot": false,
"headline": "fix: Disallow Callable as return type (#2045)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-14T10:08:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75ed748103d984f9f756567161bf43121fc3c02c",
"body": null,
"is_bot": false,
"headline": "fix: Don't emit coercion hint for temporary variables (#2025)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-13T15:42:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ae5b0b3f5c8686244bf57b3326cff7fd3dabfc9",
"body": "…2004)\n\nCo-authored-by: Agustín Borgna <agustin.borgna@quantinuum.com>\nCo-authored-by: nicolaassolini-qntm <nicola.assolini@quantinuum.com>",
"is_bot": false,
"headline": "chore: update to tket 0.15.2, turn on NormalizeGuppy optimizations (#…",
"author_name": "Alan Lawrence",
"author_login": "acl-cqc",
"committed_at": "2026-07-13T09:23:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc0977af918569ef9747bb07ca17fdfcbe8376e9",
"body": null,
"is_bot": false,
"headline": "test: Improve debug info tests (#2010)",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-10T11:04:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41e16b7b9dcd39fc8d84404445b8c18f81d7a8f3",
"body": null,
"is_bot": false,
"headline": "refactor: Remove deprecated qsystem extension usage (#2023)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-09T09:51:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d0530881fd659aa007baf9f59f04a73a5769673",
"body": null,
"is_bot": false,
"headline": "chore: Add @tatiana-s to release approvers (#2026)",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-08T13:03:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b0f2c89a2f60439a239ddf06d795a1bddab68c0",
"body": "…(#2013)",
"is_bot": false,
"headline": "feat: Emit hint when branch type mismatch can be fixed via coercions …",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-07-08T08:26:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ae1caa26548b63f205dccc1f464055f8a93215d",
"body": null,
"is_bot": false,
"headline": "test: Add integration test for protocols in comptime (#2018)",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-08T07:27:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "247031dfed97af47c88c1093a880257460fcbdf5",
"body": null,
"is_bot": false,
"headline": "chore: Omit internals from semver break CI (#2021)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-07T16:22:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f83c410873731aac71f1edd51bc8623638d88ecd",
"body": null,
"is_bot": false,
"headline": "fix!: Dagger flags cancelation inside `daggarable` functions (#2003)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-07-07T11:53:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91cd238e3f0ad91e2c7d50a71cf0e8fff13a007f",
"body": null,
"is_bot": false,
"headline": "fix: correct docstring indentation in EmulatorBuilder.build (#2011)",
"author_name": "Callum Macpherson",
"author_login": "CalMacCQ",
"committed_at": "2026-07-07T11:39:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b5d36c9536c5071f2d670e6bda2a13d402edbd0",
"body": "…inor group across 1 directory (#2014)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>",
"is_bot": true,
"headline": "chore(deps-py): bump typing-extensions from 4.15.0 to 4.16.0 in the m…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-07T11:13:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b35a19157393a222b5ab0dffab2830983b53441",
"body": "…e (#1983)",
"is_bot": false,
"headline": "chore: Add guidance on backporting and clean up patch release guidanc…",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-07T11:01:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "428cb536ace8488eb6c65d7c6fc036b5fd720d12",
"body": null,
"is_bot": false,
"headline": "fix: correct formatting in GuppyLibrary docstring (#2009)",
"author_name": "Callum Macpherson",
"author_login": "CalMacCQ",
"committed_at": "2026-07-07T09:50:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "beb9961e7b77ec32ffc3d86f689fb2cb0871357f",
"body": "…s (#2006)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump the patch group across 1 directory with 2 update…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-07T09:36:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47800483763aee89b7d4d65a1572f22d4d530fd6",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "ci(deps): bump actions/checkout from 6 to 7 (#2005)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-07T09:26:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7115120fddb498876f5138a8272836181f452d1",
"body": null,
"is_bot": false,
"headline": "fix: Make auto type params for protocol bounds unique (#1997)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-07-02T16:10:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f3212e605e2e43c7451bdcdb9558a853debf04b",
"body": null,
"is_bot": false,
"headline": "refactor: Remove version guards for Python 3.12 lower bound (#1973)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-07-02T13:59:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12a2c25d3ddbc290ecee1dcf34b709950b903502",
"body": null,
"is_bot": false,
"headline": "chore: Run missing CI on release branches (#1988)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-02T12:35:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf3a615db3e0e9906cf77eaa09abeaa4d7772cb7",
"body": null,
"is_bot": false,
"headline": "chore: Run PR title workflow on release branches (#1987)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-02T11:49:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac2209cb6675de74deb357d965fc22c473a7732e",
"body": null,
"is_bot": false,
"headline": "feat!: Drop support for Python 3.10 and 3.11 (#1971)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-02T10:56:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcd97b60ae29ea7b245d7592e1ffa5e98e0e364d",
"body": "… (#1981)",
"is_bot": false,
"headline": "fix: Fix inout updates for overloaded functions in a comptime context…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-07-02T10:05:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6433f284d442b957b90b0efc50c79c9f9c1685f5",
"body": null,
"is_bot": false,
"headline": "feat: Add in-place array reverse (#1949)",
"author_name": "Gregory Boyd",
"author_login": "GBoydQ",
"committed_at": "2026-07-01T16:59:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "803aa21a189354bc17d5a343642448b091317c9a",
"body": null,
"is_bot": false,
"headline": "chore: Remove version section from the release PR description (#1982)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-01T13:59:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b3a02163bb8efe33815b97bd521fd48793c6a62",
"body": null,
"is_bot": false,
"headline": "chore: Enable verbose and duration logging for benchmarks (#1979)",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-07-01T13:24:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5ca042bcaa56c8fa7ffa4bdef0c17ef34d464f9",
"body": null,
"is_bot": false,
"headline": "refactor!: Remove `max_qubits` from `GuppyKwargs` TypedDict (#1977)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-07-01T13:02:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cd04591b3033c0e9b44c81e9e395139a3be6d84",
"body": "Co-authored-by: Nicola Assolini <nicola.assolini@quantinuum.com>",
"is_bot": false,
"headline": "fix: Assumption check for ModifiableFunctionProtocol (#1974)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-07-01T11:10:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90bd0f78bcccf77d5501aa5894578d61250e6ad8",
"body": null,
"is_bot": false,
"headline": "feat: Allow setting optimization level (#1885)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-06-30T17:54:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "272c1de729da36ffaab49724682070767f9f5e2b",
"body": "…#1945)",
"is_bot": false,
"headline": "feat: Choose a valid protocol when multiple protocols give a method (…",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-06-30T16:15:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba591343515ec0e6c756b35018034f61a2249ef9",
"body": null,
"is_bot": false,
"headline": "chore: Update to tket 0.15.1 (#1966)",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-06-30T16:11:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18ae48007179cedf2445b67508b3fd60a2c7b738",
"body": null,
"is_bot": false,
"headline": "feat: Disallow protocols as return types (#1967)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-06-30T15:53:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c234f806f2eae9b99561a3426ee6b7082a3cee60",
"body": "Co-authored-by: hugrbot <hugrbot@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>",
"is_bot": false,
"headline": "chore: release guppylang and guppylang-internals 1.0.0-a8 (#1940)",
"author_name": "hugrbot",
"author_login": "hugrbot",
"committed_at": "2026-06-30T15:32:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cbd603cae008d3c60ff8a47469ffebdeb22caf2c",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>\nCo-authored-by: tatiana-s <\n[…]\ny <croyzor@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <78490564+maximilianruesch@users.noreply.github.com>\nCo-authored-by: Agustín Borgna <121866228+aborgna-q@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: runtime entrypoint arguments for the emulator (#1890)",
"author_name": "Seyon Sivarajah",
"author_login": "ss2165",
"committed_at": "2026-06-30T14:54:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "df20e0597db46842f2fadd55ff8553abef03c8f3",
"body": "…y via helptext (#1965)",
"is_bot": false,
"headline": "feat: Point users of native Python lists experimental feature to arra…",
"author_name": "Aidan",
"author_login": "aidanCQ",
"committed_at": "2026-06-30T14:28:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8cbe5fd3673e1605b599994a5341aadf3bbba816",
"body": null,
"is_bot": false,
"headline": "feat!: Turn modifiers into protocols (#1951)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-06-30T14:27:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a50e5fb8f6a347a17425738ceeb6e1101a7c47cc",
"body": "… (#1942)",
"is_bot": false,
"headline": "feat!: Add `@expected_qubits` decorator and remove `max_qubits` kwarg…",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-06-30T13:16:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb7a66ad0bb8f704aac83bd3cfa8fab7491181bf",
"body": "…the minor group across 1 directory (#1959)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump selene-hugr-qis-compiler from 0.3.2 to 0.4.0 in …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-30T12:09:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb9094333158b52f717acf7a24c998e389e59756",
"body": "…963)",
"is_bot": false,
"headline": "feat!: Bump `hugr` and `tket` dependencies to 0.18 and 0.15 resp. (#1…",
"author_name": "Agustín Borgna",
"author_login": "aborgna-q",
"committed_at": "2026-06-30T11:57:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68119df0e4c4c08508b14b22f864bc6ffbaba1c3",
"body": "…ross 1 directory (#1958)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-py): bump ruff from 0.15.19 to 0.15.20 in the dev group ac…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-30T11:15:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9952692384866103f640285306eb2c4b5a35c48f",
"body": "…se rust-style release branches (#1953)",
"is_bot": false,
"headline": "chore: Sync up internals and main lang versioning schemes again and u…",
"author_name": "Maximilian Rüsch",
"author_login": "maximilianruesch",
"committed_at": "2026-06-30T10:18:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "636c74e4a310f16aa73b580fff08e304853f33bd",
"body": null,
"is_bot": false,
"headline": "feat!: Better error for Protocols as types in struct fields (#1952)",
"author_name": "Craig Roy",
"author_login": "croyzor",
"committed_at": "2026-06-30T09:47:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85d3b944782946580814d873eb2653a71cb03d2b",
"body": "… (#1955)",
"is_bot": false,
"headline": "feat: Add hint to error when passing `Measurement` values to `output`…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-06-30T09:31:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69755a232460c809063f37aa271543757f939701",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>",
"is_bot": true,
"headline": "chore(deps-py): bump wasmtime from 45.0.0 to 46.0.1 (#1960)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-30T09:20:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32162c9e530179a11b1ee6218ff944881843f3df",
"body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "ci(deps): bump actions/checkout from 6 to 7 (#1957)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-30T07:50:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a5a1e46ea1f62dc33871fb98eb62ce0c3d09d3c",
"body": "Co-authored-by: Mark Koch <mark.koch@quantinuum.com>\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat!: Implicit loading of Python values (#1944)",
"author_name": "Seyon Sivarajah",
"author_login": "ss2165",
"committed_at": "2026-06-29T16:54:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b7260b10a4128fcd7473a0421beb15fa9a127b8",
"body": "…on header (#1882)\n\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>",
"is_bot": false,
"headline": "fix: Improve precision on span of missing return type error to functi…",
"author_name": "Luffy",
"author_login": "luffy-orf",
"committed_at": "2026-06-29T16:09:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "503063cd1341ce26665f84da8e3f2bbfea8cf261",
"body": null,
"is_bot": false,
"headline": "feat!: Add function item type (#1950)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-06-29T14:32:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "728baedac4c80336249c91f25b1ff1174ad8641a",
"body": null,
"is_bot": false,
"headline": "feat!: Add `@link_name` decorator (#1941)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-06-29T12:38:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a0f2cc431006639022797f35a18fcf8b67f7ec9",
"body": null,
"is_bot": false,
"headline": "fix: allow 'frozen' kwarg in _DummyGuppy mock class (#1946)",
"author_name": "Callum Macpherson",
"author_login": "CalMacCQ",
"committed_at": "2026-06-29T10:20:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "975105ec691160a8fc0e12ca52e07004613f8308",
"body": "…1907)",
"is_bot": false,
"headline": "fix!: Make modifier block names stable under repeated compilations (#…",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-06-26T10:42:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5231e3976394ba1ec12655612a8f5d217a5c018f",
"body": "Co-authored-by: Craig Roy <craig.roy@quantinuum.com>",
"is_bot": false,
"headline": "feat!: Add `Callable` protocol (#1929)",
"author_name": "Mark Koch",
"author_login": "mark-koch",
"committed_at": "2026-06-26T10:27:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "206d309b01798ea9cb3feae37bc03aa94efb88bb",
"body": null,
"is_bot": false,
"headline": "feat!: Add `@metadata` decorator (#1937)",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-06-26T10:13:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a1c1d31f5a00a0f628e0d9b7ede2055eac21102",
"body": "…1938)",
"is_bot": false,
"headline": "fix: Improve error message for struct type application in comptime (#…",
"author_name": "tatiana-s",
"author_login": "tatiana-s",
"committed_at": "2026-06-25T15:53:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2acbe90e76364f89dc2275d8c317164d8c92ddaf",
"body": "Co-authored-by: hugrbot <hugrbot@users.noreply.github.com>\nCo-authored-by: Maximilian Rüsch <maximilian.ruesch@quantinuum.com>",
"is_bot": false,
"headline": "chore: release guppylang 1.0.0-a7 (internals 1.1) (#1931)",
"author_name": "hugrbot",
"author_login": "hugrbot",
"committed_at": "2026-06-25T15:24:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d3d36f6e600591def66358d117688593d58f9de",
"body": null,
"is_bot": false,
"headline": "feat: Render diagnostics when stringifying `GuppyError` (#1936)",
"author_name": "Henry Semenenko",
"author_login": "hsemenenko",
"committed_at": "2026-06-25T14:19:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "029bb20d5fefc7bdf2122ffcfb24125dc94a4bf6",
"body": "…tests (#1933)\n\nCo-authored-by: Maximilian Rüsch <78490564+maximilianruesch@users.noreply.github.com>",
"is_bot": false,
"headline": "chore: Update tket dependency from 0.14.1 to 0.14.2 and fix modifier …",
"author_name": "Nicola Assolini",
"author_login": "nicolaassolini-qntm",
"committed_at": "2026-06-25T13:36:09Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 94,
"commits_last_year": 518,
"latest_release_at": "2026-08-03T16:04:06Z",
"latest_release_tag": "guppylang-internals-v1.0.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 51,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.8
},
"artifacts": {
"collected": true,
"structure": [
"tree.cargo_lib"
],
"declarations": [
{
"name": null,
"path": "Cargo.toml",
"tokens": [
"cargo.workspace"
],
"ecosystem": "crates"
},
{
"name": "miette-py",
"path": "miette-py/Cargo.toml",
"tokens": [
"cargo.lib",
"cargo.cdylib",
"cargo.publish_false"
],
"ecosystem": "crates"
}
]
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [],
"total": 0,
"header": 0,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": false,
"health_percentage": 37,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "guppylang",
"exists": true,
"license": null,
"keywords": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Software Development :: Compilers"
],
"ecosystem": "pypi",
"categories": [],
"matches_repo": true,
"registry_url": "https://pypi.org/project/guppylang/",
"declared_type": null,
"is_deprecated": false,
"latest_version": "1.0.0",
"repository_url": "https://github.com/quantinuum/guppylang",
"versions_count": 62,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 58804,
"first_published_at": "2024-01-19T16:47:14.969088Z",
"latest_published_at": "2026-08-03T16:05:31.620147Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
},
{
"name": "guppylang-internals",
"exists": true,
"license": null,
"keywords": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"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",
"Topic :: Software Development :: Compilers"
],
"ecosystem": "pypi",
"categories": [],
"matches_repo": null,
"registry_url": "https://pypi.org/project/guppylang-internals/",
"declared_type": null,
"is_deprecated": false,
"latest_version": "1.1",
"repository_url": null,
"versions_count": 31,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 52168,
"first_published_at": "2025-08-04T22:41:53.510917Z",
"latest_published_at": "2026-06-25T15:34:25.547619Z",
"latest_version_yanked": null,
"days_since_latest_publish": 39
}
]
},
"popularity": {
"forks": 39,
"stars": 140,
"watchers": 12,
"fork_history": {
"days": [
{
"date": "2024-06-17",
"count": 1
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-17",
"count": 1
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-05-28",
"count": 1
},
{
"date": "2025-06-01",
"count": 1
},
{
"date": "2025-06-05",
"count": 1
},
{
"date": "2025-06-07",
"count": 1
},
{
"date": "2025-06-10",
"count": 1
},
{
"date": "2025-06-28",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-09-02",
"count": 1
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-21",
"count": 1
},
{
"date": "2025-10-27",
"count": 1
},
{
"date": "2025-11-08",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-11-24",
"count": 1
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-15",
"count": 1
},
{
"date": "2025-12-16",
"count": 1
},
{
"date": "2025-12-31",
"count": 1
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-28",
"count": 1
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-06-03",
"count": 5
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-05",
"count": 1
},
{
"date": "2026-07-24",
"count": 1
}
],
"complete": true,
"collected": 39,
"total_forks": 39
},
"star_history": null,
"open_issues_and_prs": 208
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples",
"notebooks"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"justfile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"guppylang-internals/src/guppylang_internals/py.typed",
"guppylang/src/guppylang/py.typed",
"miette-py/py.typed"
],
"toolchain_manifests": [
"Cargo.toml",
"miette-py/Cargo.toml"
],
"largest_source_bytes": 80281,
"source_files_sampled": 1119,
"oversized_source_files": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Cargo.toml",
"guppylang-internals/pyproject.toml",
"guppylang/pyproject.toml",
"miette-py/Cargo.toml",
"miette-py/pyproject.toml",
"pyproject.toml"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "gitpython",
"direct": false,
"version": "3.1.54",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-94p4-4cq8-9g67"
],
"fixed_version": "3.1.55",
"advisory_count": 1,
"oldest_advisory_days": 9
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 227,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 15,
"direct_affected_count": 0
},
"ecosystems": [
"crates",
"pypi"
],
"dependencies": [
{
"name": "typing-extensions",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4.9.0,<5"
},
{
"name": "tket-exts",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~= 0.14.0"
},
{
"name": "hugr",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~= 0.18.2"
},
{
"name": "wasmtime",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=47.0.1,<47.1"
},
{
"name": "pytket",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.18.1"
},
{
"name": "tket",
"manifest": "guppylang-internals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~=0.15.6"
},
{
"name": "guppylang-internals",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "==1.0.0-a8"
},
{
"name": "numpy",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~=2.5"
},
{
"name": "selene-hugr-qis-compiler",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~=0.4.2"
},
{
"name": "selene-sim",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": "~=0.3.0"
},
{
"name": "tqdm",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4.68.4"
},
{
"name": "pytket",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.7.0"
},
{
"name": "types-tqdm",
"manifest": "guppylang/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4.67.0.20250809"
},
{
"name": "miette",
"manifest": "miette-py/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "7.0"
},
{
"name": "pyo3",
"manifest": "miette-py/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "miette",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "miette",
"direct": true,
"version": "7.6.0",
"ecosystem": "crates"
},
{
"name": "pyo3",
"direct": true,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "guppylang-internals",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "guppylang-internals",
"direct": true,
"version": "1.0.0-a8",
"ecosystem": "pypi"
},
{
"name": "guppylang-internals",
"direct": true,
"version": "1.0.0a8",
"ecosystem": "pypi"
},
{
"name": "hugr",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "hugr",
"direct": true,
"version": "0.18.3",
"ecosystem": "pypi"
},
{
"name": "numpy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "numpy",
"direct": true,
"version": "2.5.1",
"ecosystem": "pypi"
},
{
"name": "pytket",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pytket",
"direct": true,
"version": "2.18.1",
"ecosystem": "pypi"
},
{
"name": "selene-hugr-qis-compiler",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "selene-hugr-qis-compiler",
"direct": true,
"version": "0.4.2",
"ecosystem": "pypi"
},
{
"name": "selene-sim",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "selene-sim",
"direct": true,
"version": "0.3.0",
"ecosystem": "pypi"
},
{
"name": "tket",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tket",
"direct": true,
"version": "0.15.6",
"ecosystem": "pypi"
},
{
"name": "tket-exts",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tket-exts",
"direct": true,
"version": "0.14.0",
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": true,
"version": "4.68.4",
"ecosystem": "pypi"
},
{
"name": "types-tqdm",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "types-tqdm",
"direct": true,
"version": "4.68.0.20260608",
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": true,
"version": "4.16.0",
"ecosystem": "pypi"
},
{
"name": "wasmtime",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "wasmtime",
"direct": true,
"version": "47.0.1",
"ecosystem": "pypi"
},
{
"name": "addr2line",
"direct": false,
"version": "0.24.2",
"ecosystem": "crates"
},
{
"name": "adler2",
"direct": false,
"version": "2.0.1",
"ecosystem": "crates"
},
{
"name": "backtrace",
"direct": false,
"version": "0.3.75",
"ecosystem": "crates"
},
{
"name": "backtrace-ext",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "bitflags",
"direct": false,
"version": "2.9.1",
"ecosystem": "crates"
},
{
"name": "cfg-if",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "errno",
"direct": false,
"version": "0.3.12",
"ecosystem": "crates"
},
{
"name": "gimli",
"direct": false,
"version": "0.31.1",
"ecosystem": "crates"
},
{
"name": "heck",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "is_ci",
"direct": false,
"version": "1.2.0",
"ecosystem": "crates"
},
{
"name": "libc",
"direct": false,
"version": "0.2.172",
"ecosystem": "crates"
},
{
"name": "linux-raw-sys",
"direct": false,
"version": "0.9.4",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": false,
"version": "2.7.4",
"ecosystem": "crates"
},
{
"name": "miette-derive",
"direct": false,
"version": "7.6.0",
"ecosystem": "crates"
},
{
"name": "miniz_oxide",
"direct": false,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "object",
"direct": false,
"version": "0.36.7",
"ecosystem": "crates"
},
{
"name": "once_cell",
"direct": false,
"version": "1.21.3",
"ecosystem": "crates"
},
{
"name": "owo-colors",
"direct": false,
"version": "4.2.1",
"ecosystem": "crates"
},
{
"name": "portable-atomic",
"direct": false,
"version": "1.11.1",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.95",
"ecosystem": "crates"
},
{
"name": "pyo3-build-config",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-ffi",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-macros",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-macros-backend",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.40",
"ecosystem": "crates"
},
{
"name": "rustc-demangle",
"direct": false,
"version": "0.1.25",
"ecosystem": "crates"
},
{
"name": "rustix",
"direct": false,
"version": "1.0.7",
"ecosystem": "crates"
},
{
"name": "supports-color",
"direct": false,
"version": "3.0.2",
"ecosystem": "crates"
},
{
"name": "supports-hyperlinks",
"direct": false,
"version": "3.1.0",
"ecosystem": "crates"
},
{
"name": "supports-unicode",
"direct": false,
"version": "3.0.0",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "2.0.101",
"ecosystem": "crates"
},
{
"name": "target-lexicon",
"direct": false,
"version": "0.13.3",
"ecosystem": "crates"
},
{
"name": "terminal_size",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "textwrap",
"direct": false,
"version": "0.16.2",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "unicode-linebreak",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "unicode-width",
"direct": false,
"version": "0.1.14",
"ecosystem": "crates"
},
{
"name": "unicode-width",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.59.0",
"ecosystem": "crates"
},
{
"name": "windows-targets",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "accessible-pygments",
"direct": false,
"version": "0.0.5",
"ecosystem": "pypi"
},
{
"name": "alabaster",
"direct": false,
"version": "1.0.0",
"ecosystem": "pypi"
},
{
"name": "annotated-types",
"direct": false,
"version": "0.7.0",
"ecosystem": "pypi"
},
{
"name": "anyio",
"direct": false,
"version": "4.13.0",
"ecosystem": "pypi"
},
{
"name": "appnope",
"direct": false,
"version": "0.1.4",
"ecosystem": "pypi"
},
{
"name": "argon2-cffi",
"direct": false,
"version": "25.1.0",
"ecosystem": "pypi"
},
{
"name": "argon2-cffi-bindings",
"direct": false,
"version": "25.1.0",
"ecosystem": "pypi"
},
{
"name": "arrow",
"direct": false,
"version": "1.4.0",
"ecosystem": "pypi"
},
{
"name": "ast-serialize",
"direct": false,
"version": "0.5.0",
"ecosystem": "pypi"
},
{
"name": "asttokens",
"direct": false,
"version": "3.0.1",
"ecosystem": "pypi"
},
{
"name": "attrs",
"direct": false,
"version": "22.2.0",
"ecosystem": "pypi"
},
{
"name": "babel",
"direct": false,
"version": "2.18.0",
"ecosystem": "pypi"
},
{
"name": "beautifulsoup4",
"direct": false,
"version": "4.15.0",
"ecosystem": "pypi"
},
{
"name": "bleach",
"direct": false,
"version": "6.4.0",
"ecosystem": "pypi"
},
{
"name": "certifi",
"direct": false,
"version": "2026.5.20",
"ecosystem": "pypi"
},
{
"name": "cffi",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "cfgv",
"direct": false,
"version": "3.5.0",
"ecosystem": "pypi"
},
{
"name": "charset-normalizer",
"direct": false,
"version": "3.4.7",
"ecosystem": "pypi"
},
{
"name": "colorama",
"direct": false,
"version": "0.4.6",
"ecosystem": "pypi"
},
{
"name": "comm",
"direct": false,
"version": "0.2.3",
"ecosystem": "pypi"
},
{
"name": "contourpy",
"direct": false,
"version": "1.3.3",
"ecosystem": "pypi"
},
{
"name": "coverage",
"direct": false,
"version": "7.14.1",
"ecosystem": "pypi"
},
{
"name": "cycler",
"direct": false,
"version": "0.12.1",
"ecosystem": "pypi"
},
{
"name": "debugpy",
"direct": false,
"version": "1.8.21",
"ecosystem": "pypi"
},
{
"name": "decorator",
"direct": false,
"version": "5.3.1",
"ecosystem": "pypi"
},
{
"name": "defusedxml",
"direct": false,
"version": "0.8.0rc2",
"ecosystem": "pypi"
},
{
"name": "distlib",
"direct": false,
"version": "0.4.3",
"ecosystem": "pypi"
},
{
"name": "docutils",
"direct": false,
"version": "0.21.2",
"ecosystem": "pypi"
},
{
"name": "execnet",
"direct": false,
"version": "2.1.2",
"ecosystem": "pypi"
},
{
"name": "executing",
"direct": false,
"version": "2.2.1",
"ecosystem": "pypi"
},
{
"name": "fastjsonschema",
"direct": false,
"version": "2.21.2",
"ecosystem": "pypi"
},
{
"name": "filelock",
"direct": false,
"version": "3.29.4",
"ecosystem": "pypi"
},
{
"name": "fonttools",
"direct": false,
"version": "4.63.0",
"ecosystem": "pypi"
},
{
"name": "fqdn",
"direct": false,
"version": "1.5.1",
"ecosystem": "pypi"
},
{
"name": "furo",
"direct": false,
"version": "2025.12.19",
"ecosystem": "pypi"
},
{
"name": "gitdb",
"direct": false,
"version": "4.0.12",
"ecosystem": "pypi"
},
{
"name": "gitpython",
"direct": false,
"version": "3.1.54",
"ecosystem": "pypi"
},
{
"name": "graphviz",
"direct": false,
"version": "0.21",
"ecosystem": "pypi"
},
{
"name": "guppylang",
"direct": false,
"version": "1.0.0a8",
"ecosystem": "pypi"
},
{
"name": "hatchling",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "identify",
"direct": false,
"version": "2.6.19",
"ecosystem": "pypi"
},
{
"name": "idna",
"direct": false,
"version": "3.18",
"ecosystem": "pypi"
},
{
"name": "imagesize",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "iniconfig",
"direct": false,
"version": "2.3.0",
"ecosystem": "pypi"
},
{
"name": "ipykernel",
"direct": false,
"version": "7.3.0",
"ecosystem": "pypi"
},
{
"name": "ipython",
"direct": false,
"version": "9.14.1",
"ecosystem": "pypi"
},
{
"name": "ipython-pygments-lexers",
"direct": false,
"version": "1.1.1",
"ecosystem": "pypi"
},
{
"name": "isoduration",
"direct": false,
"version": "20.11.0",
"ecosystem": "pypi"
},
{
"name": "jedi",
"direct": false,
"version": "0.20.0",
"ecosystem": "pypi"
},
{
"name": "jinja2",
"direct": false,
"version": "3.1.6",
"ecosystem": "pypi"
},
{
"name": "jsonpointer",
"direct": false,
"version": "3.1.1",
"ecosystem": "pypi"
},
{
"name": "jsonschema",
"direct": false,
"version": "4.26.0",
"ecosystem": "pypi"
},
{
"name": "jsonschema-specifications",
"direct": false,
"version": "2025.9.1",
"ecosystem": "pypi"
},
{
"name": "jupyter-client",
"direct": false,
"version": "8.9.1",
"ecosystem": "pypi"
},
{
"name": "jupyter-core",
"direct": false,
"version": "5.9.1",
"ecosystem": "pypi"
},
{
"name": "jupyter-events",
"direct": false,
"version": "0.12.1",
"ecosystem": "pypi"
},
{
"name": "jupyter-server",
"direct": false,
"version": "2.20.0",
"ecosystem": "pypi"
},
{
"name": "jupyter-server-terminals",
"direct": false,
"version": "0.5.4",
"ecosystem": "pypi"
},
{
"name": "jupyterlab-pygments",
"direct": false,
"version": "0.3.0",
"ecosystem": "pypi"
},
{
"name": "kiwisolver",
"direct": false,
"version": "1.5.0",
"ecosystem": "pypi"
},
{
"name": "lark",
"direct": false,
"version": "1.3.1",
"ecosystem": "pypi"
},
{
"name": "librt",
"direct": false,
"version": "0.11.0",
"ecosystem": "pypi"
},
{
"name": "lief",
"direct": false,
"version": "0.17.6",
"ecosystem": "pypi"
},
{
"name": "llvmlite",
"direct": false,
"version": "0.45.1",
"ecosystem": "pypi"
},
{
"name": "llvmlite",
"direct": false,
"version": "0.48.0rc1",
"ecosystem": "pypi"
},
{
"name": "markdown-it-py",
"direct": false,
"version": "4.2.0",
"ecosystem": "pypi"
},
{
"name": "markupsafe",
"direct": false,
"version": "3.0.3",
"ecosystem": "pypi"
},
{
"name": "matplotlib",
"direct": false,
"version": "3.11.0",
"ecosystem": "pypi"
},
{
"name": "matplotlib-inline",
"direct": false,
"version": "0.2.2",
"ecosystem": "pypi"
},
{
"name": "maturin",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "mdurl",
"direct": false,
"version": "0.1.2",
"ecosystem": "pypi"
},
{
"name": "mistune",
"direct": false,
"version": "3.3.0",
"ecosystem": "pypi"
},
{
"name": "mpmath",
"direct": false,
"version": "1.3.0",
"ecosystem": "pypi"
},
{
"name": "mypy",
"direct": false,
"version": "2.1.0",
"ecosystem": "pypi"
},
{
"name": "mypy-extensions",
"direct": false,
"version": "1.1.0",
"ecosystem": "pypi"
},
{
"name": "nbclient",
"direct": false,
"version": "0.5.13",
"ecosystem": "pypi"
},
{
"name": "nbconvert",
"direct": false,
"version": "7.17.1",
"ecosystem": "pypi"
},
{
"name": "nbdime",
"direct": false,
"version": "4.0.4",
"ecosystem": "pypi"
},
{
"name": "nbformat",
"direct": false,
"version": "5.10.4",
"ecosystem": "pypi"
},
{
"name": "nest-asyncio",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "nest-asyncio2",
"direct": false,
"version": "1.7.2",
"ecosystem": "pypi"
},
{
"name": "networkx",
"direct": false,
"version": "3.6.1",
"ecosystem": "pypi"
},
{
"name": "nodeenv",
"direct": false,
"version": "1.10.0",
"ecosystem": "pypi"
},
{
"name": "packaging",
"direct": false,
"version": "26.2",
"ecosystem": "pypi"
},
{
"name": "pandocfilters",
"direct": false,
"version": "1.5.1",
"ecosystem": "pypi"
},
{
"name": "parso",
"direct": false,
"version": "0.8.7",
"ecosystem": "pypi"
},
{
"name": "pathspec",
"direct": false,
"version": "1.1.1",
"ecosystem": "pypi"
},
{
"name": "pexpect",
"direct": false,
"version": "4.9.0",
"ecosystem": "pypi"
},
{
"name": "pillow",
"direct": false,
"version": "12.3.0",
"ecosystem": "pypi"
},
{
"name": "platformdirs",
"direct": false,
"version": "4.10.0",
"ecosystem": "pypi"
},
{
"name": "pluggy",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "pre-commit",
"direct": false,
"version": "4.6.0",
"ecosystem": "pypi"
},
{
"name": "prometheus-client",
"direct": false,
"version": "0.25.0",
"ecosystem": "pypi"
},
{
"name": "prompt-toolkit",
"direct": false,
"version": "3.0.52",
"ecosystem": "pypi"
},
{
"name": "psutil",
"direct": false,
"version": "7.2.2",
"ecosystem": "pypi"
},
{
"name": "ptyprocess",
"direct": false,
"version": "0.7.0",
"ecosystem": "pypi"
},
{
"name": "pure-eval",
"direct": false,
"version": "0.2.3",
"ecosystem": "pypi"
},
{
"name": "py",
"direct": false,
"version": "1.11.0",
"ecosystem": "pypi"
},
{
"name": "py-cpuinfo",
"direct": false,
"version": "9.0.0",
"ecosystem": "pypi"
},
{
"name": "pycparser",
"direct": false,
"version": "3.0",
"ecosystem": "pypi"
},
{
"name": "pydantic",
"direct": false,
"version": "2.14.0a1",
"ecosystem": "pypi"
},
{
"name": "pydantic-core",
"direct": false,
"version": "2.47.0",
"ecosystem": "pypi"
},
{
"name": "pydantic-extra-types",
"direct": false,
"version": "2.11.1",
"ecosystem": "pypi"
},
{
"name": "pydot",
"direct": false,
"version": "4.0.1",
"ecosystem": "pypi"
},
{
"name": "pygments",
"direct": false,
"version": "2.20.0",
"ecosystem": "pypi"
},
{
"name": "pyparsing",
"direct": false,
"version": "3.3.2",
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": "9.0.3",
"ecosystem": "pypi"
},
{
"name": "pytest-benchmark",
"direct": false,
"version": "5.2.3",
"ecosystem": "pypi"
},
{
"name": "pytest-codspeed",
"direct": false,
"version": "5.0.3",
"ecosystem": "pypi"
},
{
"name": "pytest-cov",
"direct": false,
"version": "7.1.0",
"ecosystem": "pypi"
},
{
"name": "pytest-forked",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "pytest-notebook",
"direct": false,
"version": "0.11.0",
"ecosystem": "pypi"
},
{
"name": "pytest-snapshot",
"direct": false,
"version": "0.9.0",
"ecosystem": "pypi"
},
{
"name": "pytest-xdist",
"direct": false,
"version": "3.8.0",
"ecosystem": "pypi"
},
{
"name": "python-dateutil",
"direct": false,
"version": "2.9.0.post0",
"ecosystem": "pypi"
},
{
"name": "python-discovery",
"direct": false,
"version": "1.4.2",
"ecosystem": "pypi"
},
{
"name": "python-json-logger",
"direct": false,
"version": "4.1.0",
"ecosystem": "pypi"
},
{
"name": "pywinpty",
"direct": false,
"version": "3.0.5",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": false,
"version": "6.0.3",
"ecosystem": "pypi"
},
{
"name": "pyzmq",
"direct": false,
"version": "27.1.0",
"ecosystem": "pypi"
},
{
"name": "qwasm",
"direct": false,
"version": "1.0.1",
"ecosystem": "pypi"
},
{
"name": "referencing",
"direct": false,
"version": "0.37.0",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.34.2",
"ecosystem": "pypi"
},
{
"name": "rfc3339-validator",
"direct": false,
"version": "0.1.4",
"ecosystem": "pypi"
},
{
"name": "rfc3986-validator",
"direct": false,
"version": "0.1.1",
"ecosystem": "pypi"
},
{
"name": "rfc3987-syntax",
"direct": false,
"version": "1.1.0",
"ecosystem": "pypi"
},
{
"name": "rich",
"direct": false,
"version": "15.0.0",
"ecosystem": "pypi"
},
{
"name": "roman-numerals",
"direct": false,
"version": "4.1.0",
"ecosystem": "pypi"
},
{
"name": "roman-numerals-py",
"direct": false,
"version": "4.1.0",
"ecosystem": "pypi"
},
{
"name": "rpds-py",
"direct": false,
"version": "2026.5.1",
"ecosystem": "pypi"
},
{
"name": "ruff",
"direct": false,
"version": "0.15.21",
"ecosystem": "pypi"
},
{
"name": "scipy",
"direct": false,
"version": "1.18.0rc2",
"ecosystem": "pypi"
},
{
"name": "selene-core",
"direct": false,
"version": "0.3.0a1",
"ecosystem": "pypi"
},
{
"name": "semver",
"direct": false,
"version": "3.0.4",
"ecosystem": "pypi"
},
{
"name": "send2trash",
"direct": false,
"version": "2.1.0",
"ecosystem": "pypi"
},
{
"name": "setuptools",
"direct": false,
"version": "83.0.0",
"ecosystem": "pypi"
},
{
"name": "six",
"direct": false,
"version": "1.17.0",
"ecosystem": "pypi"
},
{
"name": "smmap",
"direct": false,
"version": "5.0.3",
"ecosystem": "pypi"
},
{
"name": "snowballstemmer",
"direct": false,
"version": "3.1.1",
"ecosystem": "pypi"
},
{
"name": "soupsieve",
"direct": false,
"version": "2.8.4",
"ecosystem": "pypi"
},
{
"name": "sphinx",
"direct": false,
"version": "8.2.3",
"ecosystem": "pypi"
},
{
"name": "sphinx-basic-ng",
"direct": false,
"version": "1.0.0b2",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-applehelp",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-devhelp",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-htmlhelp",
"direct": false,
"version": "2.1.0",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-jsmath",
"direct": false,
"version": "1.0.1",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-qthelp",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-serializinghtml",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "stack-data",
"direct": false,
"version": "0.6.3",
"ecosystem": "pypi"
},
{
"name": "sympy",
"direct": false,
"version": "1.14.0",
"ecosystem": "pypi"
},
{
"name": "terminado",
"direct": false,
"version": "0.18.1",
"ecosystem": "pypi"
},
{
"name": "tinycss2",
"direct": false,
"version": "1.5.1",
"ecosystem": "pypi"
},
{
"name": "tket-eccs",
"direct": false,
"version": "0.6.0",
"ecosystem": "pypi"
},
{
"name": "tornado",
"direct": false,
"version": "6.5.7",
"ecosystem": "pypi"
},
{
"name": "traitlets",
"direct": false,
"version": "5.15.1",
"ecosystem": "pypi"
},
{
"name": "types-requests",
"direct": false,
"version": "2.33.0.20260518",
"ecosystem": "pypi"
},
{
"name": "typing-inspection",
"direct": false,
"version": "0.4.2",
"ecosystem": "pypi"
},
{
"name": "tzdata",
"direct": false,
"version": "2026.2",
"ecosystem": "pypi"
},
{
"name": "uri-template",
"direct": false,
"version": "1.3.0",
"ecosystem": "pypi"
},
{
"name": "urllib3",
"direct": false,
"version": "2.7.0",
"ecosystem": "pypi"
},
{
"name": "virtualenv",
"direct": false,
"version": "21.5.0",
"ecosystem": "pypi"
},
{
"name": "wcwidth",
"direct": false,
"version": "0.8.1",
"ecosystem": "pypi"
},
{
"name": "webcolors",
"direct": false,
"version": "25.10.0",
"ecosystem": "pypi"
},
{
"name": "webencodings",
"direct": false,
"version": "0.5.1",
"ecosystem": "pypi"
},
{
"name": "websocket-client",
"direct": false,
"version": "1.9.0",
"ecosystem": "pypi"
},
{
"name": "ziglang",
"direct": false,
"version": "0.16.0",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 242,
"direct_count": 28,
"indirect_count": 214
}
},
"maintainership": {
"issues": {
"open_prs": 31,
"merged_prs": 1144,
"open_issues": 177,
"closed_ratio": 0.784,
"closed_issues": 642,
"closed_unmerged_prs": 116
},
"bus_factor": 3,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "mark-koch",
"commits": 266,
"avatar_url": "https://avatars.githubusercontent.com/u/48097969?v=4"
},
{
"type": "User",
"login": "ss2165",
"commits": 151,
"avatar_url": "https://avatars.githubusercontent.com/u/12997250?v=4"
},
{
"type": "User",
"login": "aborgna-q",
"commits": 89,
"avatar_url": "https://avatars.githubusercontent.com/u/121866228?v=4"
},
{
"type": "User",
"login": "maximilianruesch",
"commits": 67,
"avatar_url": "https://avatars.githubusercontent.com/u/78490564?v=4"
},
{
"type": "User",
"login": "croyzor",
"commits": 56,
"avatar_url": "https://avatars.githubusercontent.com/u/5727256?v=4"
},
{
"type": "User",
"login": "hugrbot",
"commits": 53,
"avatar_url": "https://avatars.githubusercontent.com/u/170723698?v=4"
},
{
"type": "User",
"login": "tatiana-s",
"commits": 51,
"avatar_url": "https://avatars.githubusercontent.com/u/21975430?v=4"
},
{
"type": "User",
"login": "nicolaassolini-qntm",
"commits": 47,
"avatar_url": "https://avatars.githubusercontent.com/u/248460982?v=4"
},
{
"type": "User",
"login": "CalMacCQ",
"commits": 27,
"avatar_url": "https://avatars.githubusercontent.com/u/93673602?v=4"
},
{
"type": "User",
"login": "qartik",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/130700862?v=4"
}
],
"contributors_sampled": 32,
"top_contributor_share": 0.287
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"add-to-project.yml",
"benchmarks_base.yml",
"benchmarks_pr.yml",
"docs.yml",
"pr-title.yml",
"pull-request.yaml",
"python-wheels.yml",
"release-branch-cut.yml",
"release-checks.yml",
"release-pr-changelog-preview.yml",
"release-pr.yml",
"release-publish.yml",
"release-version-guard.yml",
"semver-checks.yml"
],
"has_docs_dir": true,
"linter_configs": [
"ruff.toml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"Cargo.lock",
"uv.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 8,
"reason": "binaries present in source code",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 4,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 5 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 12 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": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "1ace5b92f0848ee7455b35ca5d617a6423e96b97",
"ran_at": "2026-08-03T16:10:08Z",
"aggregate_score": 6.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 41,
"decided_7d": 42,
"merged_30d": 50,
"authors_30d": 11,
"decided_30d": 51,
"sample_size": 60,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 11,
"newcomer_merged_30d": 0,
"bot_prs_excluded_30d": 8,
"newcomer_authors_30d": 0,
"newcomer_decided_30d": 0
},
"ci_last_run_at": "2026-08-03T15:06:44Z",
"oldest_open_prs": [
{
"number": 634,
"created_at": "2024-11-11T13:00:57Z",
"last_comment_at": "2024-11-11T13:03:57Z",
"last_comment_author": "codecov-commenter"
},
{
"number": 932,
"created_at": "2025-04-30T10:27:18Z",
"last_comment_at": "2025-04-30T10:33:16Z",
"last_comment_author": "ss2165"
},
{
"number": 1191,
"created_at": "2025-08-14T10:55:13Z",
"last_comment_at": "2025-08-14T11:06:03Z",
"last_comment_author": "ss2165"
},
{
"number": 1284,
"created_at": "2025-10-02T13:27:45Z",
"last_comment_at": "2025-10-02T14:28:04Z",
"last_comment_author": "ss2165"
},
{
"number": 1293,
"created_at": "2025-10-10T00:48:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1490,
"created_at": "2026-02-11T23:02:07Z",
"last_comment_at": "2026-03-17T03:39:13Z",
"last_comment_author": "rmfisher26"
},
{
"number": 1535,
"created_at": "2026-02-26T14:13:42Z",
"last_comment_at": "2026-02-26T14:20:57Z",
"last_comment_author": "github-actions"
},
{
"number": 1659,
"created_at": "2026-04-13T13:49:24Z",
"last_comment_at": "2026-04-13T13:54:14Z",
"last_comment_author": "codecov-commenter"
},
{
"number": 1660,
"created_at": "2026-04-13T14:56:19Z",
"last_comment_at": "2026-04-14T13:37:56Z",
"last_comment_author": "codecov-commenter"
},
{
"number": 1699,
"created_at": "2026-04-28T16:18:41Z",
"last_comment_at": "2026-07-29T16:15:51Z",
"last_comment_author": "GBoydQ"
},
{
"number": 1737,
"created_at": "2026-05-14T13:33:00Z",
"last_comment_at": "2026-05-14T13:55:47Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1846,
"created_at": "2026-06-11T14:28:38Z",
"last_comment_at": "2026-06-11T14:44:23Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1847,
"created_at": "2026-06-11T14:35:40Z",
"last_comment_at": "2026-06-11T14:52:00Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1854,
"created_at": "2026-06-12T16:21:32Z",
"last_comment_at": "2026-06-15T14:06:32Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1969,
"created_at": "2026-06-30T16:02:26Z",
"last_comment_at": "2026-06-30T16:44:41Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1976,
"created_at": "2026-07-01T12:37:20Z",
"last_comment_at": "2026-07-01T13:33:25Z",
"last_comment_author": "codspeed-hq"
},
{
"number": 1990,
"created_at": "2026-07-02T13:50:07Z",
"last_comment_at": "2026-07-08T08:45:37Z",
"last_comment_author": "croyzor"
},
{
"number": 1991,
"created_at": "2026-07-02T13:56:58Z",
"last_comment_at": "2026-07-02T13:57:37Z",
"last_comment_author": "hugrbot"
},
{
"number": 2008,
"created_at": "2026-07-07T02:49:32Z",
"last_comment_at": "2026-07-07T09:53:17Z",
"last_comment_author": "maximilianruesch"
},
{
"number": 2035,
"created_at": "2026-07-10T18:54:34Z",
"last_comment_at": "2026-07-10T21:48:46Z",
"last_comment_author": "codecov-commenter"
}
],
"last_merged_pr_at": "2026-08-03T16:02:44Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 23,
"created_at": "2023-09-26T14:58:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 89,
"created_at": "2024-01-11T10:32:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 90,
"created_at": "2024-01-11T11:33:17Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 94,
"created_at": "2024-01-12T13:50:39Z",
"last_comment_at": "2024-01-12T18:13:30Z",
"last_comment_author": "qartik"
},
{
"number": 95,
"created_at": "2024-01-12T14:01:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 98,
"created_at": "2024-01-15T10:19:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 131,
"created_at": "2024-01-22T16:07:12Z",
"last_comment_at": "2024-01-24T10:48:41Z",
"last_comment_author": "ss2165"
},
{
"number": 171,
"created_at": "2024-03-14T14:55:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 178,
"created_at": "2024-04-04T14:47:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 215,
"created_at": "2024-05-15T10:58:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 256,
"created_at": "2024-06-20T11:18:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 264,
"created_at": "2024-06-24T13:50:05Z",
"last_comment_at": "2024-06-24T14:56:00Z",
"last_comment_author": "qartik"
},
{
"number": 269,
"created_at": "2024-06-25T10:01:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 277,
"created_at": "2024-06-28T08:50:55Z",
"last_comment_at": "2024-07-17T09:33:01Z",
"last_comment_author": "croyzor"
},
{
"number": 286,
"created_at": "2024-07-05T10:48:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 301,
"created_at": "2024-07-15T08:07:47Z",
"last_comment_at": "2024-07-15T09:43:26Z",
"last_comment_author": "daniel-mills-cqc"
},
{
"number": 303,
"created_at": "2024-07-15T08:08:26Z",
"last_comment_at": "2024-07-22T07:12:54Z",
"last_comment_author": "doug-q"
},
{
"number": 304,
"created_at": "2024-07-15T08:09:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 305,
"created_at": "2024-07-15T16:00:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 308,
"created_at": "2024-07-18T09:32:35Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Quantinuum/guppylang",
"host": "github.com",
"name": "guppylang",
"owner": "Quantinuum"
},
"metrics": {
"overall": {
"key": "overall",
"band": "exceptional",
"name": "Overall health",
"note": "The weighted overall 82 is calibrated to 95 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 82,
"calibrated": 95,
"calibration": "2026-08-02"
}
}
],
"value": 95,
"inputs": {
"security": 70,
"vitality": 99,
"community": 60,
"governance": 83,
"calibration": "2026-08-02",
"engineering": 96,
"ai_readiness": 65,
"weighted_overall_raw": 82
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "exceptional",
"name": "Vitality",
"value": 99,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "exceptional",
"name": "Development activity",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"commits_last_year": 518,
"human_commit_share": 0.87,
"days_since_last_push": 0,
"active_weeks_last_year": 51
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "51/52 weeks with commits",
"points": 35.3,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 51
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "518 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 518
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "exceptional",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 94,
"latest_release_tag": "guppylang-internals-v1.0.0",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "94 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 94
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~3.8 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"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": 1,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 1 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 1
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 60,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"forks": 39,
"stars": 140,
"watchers": 12,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "140 stars",
"points": 34.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 140
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "39 forks",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 39
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "12 watchers",
"points": 5.8,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 12
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 0,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 84,
"inputs": {
"packages": [
"guppylang",
"guppylang-internals"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 110972
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "110,972 downloads/month across pypi",
"points": 67.3,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 110972,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "excellent",
"name": "Sustainability & Governance",
"value": 83,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"bus_factor": 3,
"contributors_sampled": 32,
"top_contributor_share": 0.287
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "3 contributor(s) cover half of all commits",
"points": 36,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 3
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 29% of commits",
"points": 16,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 29
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "32 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 32
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 86,
"inputs": {
"merged_prs": 1144,
"open_issues": 177,
"closed_issues": 642,
"prs_merged_7d": 41,
"prs_decided_7d": 42,
"prs_merged_30d": 50,
"prs_decided_30d": 51,
"issue_closed_ratio": 0.784,
"closed_unmerged_prs": 116,
"first_time_authors_30d": 0,
"first_time_prs_merged_30d": 0,
"first_time_prs_decided_30d": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "78% of issues closed",
"points": 32.9,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 78
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "1144/1260 decided PRs merged",
"points": 27.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1144,
"decided": 1260
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"followers": 328,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Quantinuum",
"public_repos": 203,
"account_age_days": 3923
},
"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": "328 followers of Quantinuum",
"points": 18.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 328,
"login": "Quantinuum"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "203 public repos, account ~10 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 203
}
},
{
"code": "account_age_years",
"params": {
"years": 10
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"guppylang",
"guppylang-internals"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "2 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 2,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "62 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 62
}
}
],
"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": "exceptional",
"name": "Engineering Quality",
"value": 96,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "exceptional",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 94,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "14 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 14
}
}
],
"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": "ruff.toml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "exceptional",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"programming-language",
"python",
"quantum-computing"
],
"has_wiki": true,
"homepage": "https://guppylang.org",
"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://guppylang.org",
"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": "3 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 3
}
}
],
"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": "good",
"name": "Security",
"value": 70,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 6.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 12 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": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "1 existing vulnerabilities detected",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 227 resolved dependencies against OSV; 15 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 227
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 15
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 227,
"unassessed_packages": 15,
"affected_by_severity": "high 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 227,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 7
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 65,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "weak",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"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": "87 of 87 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 87,
"sampled": 87
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 86,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock",
"uv.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"justfile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"guppylang-internals/src/guppylang_internals/py.typed",
"guppylang/src/guppylang/py.typed",
"miette-py/py.typed"
],
"agent_commit_share": 0.03,
"toolchain_manifests": [
"Cargo.toml",
"miette-py/Cargo.toml"
],
"dependency_bot_commit_share": 0.13
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "justfile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "justfile"
}
}
],
"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": "ruff.toml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "guppylang-internals/src/guppylang_internals/py.typed, guppylang/src/guppylang/py.typed, miette-py/py.typed",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "guppylang-internals/src/guppylang_internals/py.typed, guppylang/src/guppylang/py.typed, miette-py/py.typed"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "3 of the last 100 commits agent-authored or agent-credited",
"points": 6,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 3,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "13 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 13,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 80281,
"source_files_sampled": 1119,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python with type-check config (guppylang-internals/src/guppylang_internals/py.typed, guppylang/src/guppylang/py.typed, miette-py/py.typed)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "guppylang-internals/src/guppylang_internals/py.typed, guppylang/src/guppylang/py.typed, miette-py/py.typed",
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/1119 source files over 60KB",
"points": 55,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1119,
"oversized": 1
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples",
"notebooks"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples, notebooks",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples, notebooks"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"library"
],
"labels": [
"library"
],
"scores": {
"library": 15
},
"primary": "library",
"evidence": [
{
"tier": "declared",
"label": "library",
"source": "cargo.lib",
"weight": 6
},
{
"tier": "distribution",
"label": "library",
"source": "registry:pypi",
"weight": 6
},
{
"tier": "declared",
"label": "library",
"source": "cargo.cdylib",
"weight": 3.6
},
{
"tier": "declared",
"label": "library",
"source": "cargo.publish_false",
"weight": -3.6
},
{
"tier": "structure",
"label": "library",
"source": "tree.cargo_lib",
"weight": 3
}
],
"artifacts": [
{
"path": "Cargo.toml",
"labels": [],
"ecosystem": "crates"
},
{
"path": "miette-py/Cargo.toml",
"labels": [
"library"
],
"ecosystem": "crates"
}
],
"confidence": "high",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": true
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch crates package 'miette-py' from its registry",
"Could not fetch pypi package 'miette-py' from its registry",
"deps.dev does not index pypi:guppylang@1.0.0; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-08-03T16:10:43.816878Z",
"schema_version": "0.30.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/q/Quantinuum/guppylang.svg",
"full_name": "Quantinuum/guppylang",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}