Public record
Software health reportschema 0.26.0 · metrics 1.13.0 · 2026-07-22 01:51 UTC

networkx / networkx

Network Analysis in Python

PythonCustom license★ 17,109 stars⑂ 3,561 forkssince Sep 2010View on GitHub ↗

networkx/networkx holds a health index of 86 out of 100, placing it in the Excellent band. It scores highest on Engineering Quality (92/100) and lowest on AI Readiness (52/100). It was last updated 3 days ago. 3 contributors account for most of its recent work.

86
overall / 100
Excellent

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

86
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

NetworkXOrganization
449 followers17 public repossince Sep 2010

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
PyPInetworkx3.6.1277,214,05385225 days agonetworksgraph-theorymathematicsnetworkgraphdiscrete-mathematicsmath

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

87Excellent · 22% of overall
How it's scored
36/36Push recency — last push 3 days ago
35.3/36Commit cadence — 51/52 weeks with commits
18/18Commit volume — 323 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year323
human_commit_share0.96
days_since_last_push3
active_weeks_last_year51
How it's scored
27/27Ships releases — 65 releases published
16.2/36Release recency — latest release 225 days ago
19.8/27Release cadence — a release every ~67.9 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count65
latest_release_tagnetworkx-3.6.1
releases_from_tagsno
days_since_latest_release225
mean_days_between_releases67.9
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

89Excellent · 18% of overall
How it's scored
60/60Stars — 17,109 stars
25/25Forks — 3,561 forks
13.5/15Watchers — 272 watchers
Inputs used
forks3,561
stars17,109
watchers272
growth_stateorganic
growth_factor_pct100
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateyes
How it's scored
80/80Monthly downloads — 277,214,053 downloads/month across pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesnetworkx
dependents
ecosystemspypi
total_downloads
monthly_downloads277,214,053
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

80Good · 24% of overall
How it's scored
36/54Bus factor — 3 contributor(s) cover half of all commits
14.7/22.5Commit distribution — top contributor authored 34% of commits
13.5/13.5Contributor breadth — 99 contributors
10/10OpenSSF Scorecard: Contributors — project has 70 contributing companies or organizations
Inputs used
bus_factor3
contributors_sampled99
top_contributor_share0.345
How it's scored
44.8/46.8Issue resolution — 96% of issues closed
29.6/38.3PR acceptance — 3,501/4,531 decided PRs merged
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Inputs used
merged_prs3,501
open_issues144
closed_issues3,250
issue_closed_ratio0.958
closed_unmerged_prs1,030
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
19.1/25Owner reach — 449 followers of networkx
21.1/25Track record — 17 public repos, account ~15 yr old
Inputs used
followers449
owner_typeOrganization
is_verified
owner_loginnetworkx
public_repos17
account_age_days5,798
How it's scored
25/25Published & resolvable — 1 package(s) on pypi
26/35Publish recency — latest publish 225 days ago
20/20Version history — 85 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesnetworkx
ecosystemspypi
any_deprecatedno
min_days_since_publish225

Engineering Quality

Are baseline engineering and documentation practices in place?

92Excellent · 20% of overall
How it's scored
24/24CI workflows — 12 workflow(s)
24/24Tests present
16/16Linter config
9.6/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configyes

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://networkx.org
10/10Repository description
10/10Topics — 7 topics
0/10Wiki
Inputs used
topicspython, complex-networks, graph-theory, graph-algorithms, graph-analysis, graph-generation, graph-visualization
has_wikino
homepagehttps://networkx.org
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

82Good · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 70 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
5/5Fuzzing — project is fuzzed
2.2/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate7.8
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages1
unassessed_packages39
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 1 resolved dependencies against OSV. 39 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.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

52Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 94 of 96 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.979
agent_instruction_files
agent_instruction_max_bytes
How it's scored
18/18One-command bootstrap — doc/Makefile
22/22Automated tests
11/11Lint / format config
0/11Static type checking
0/10Reproducible environment
0/10Demonstrated agent practice — no agent-authored commits among the last 100
8/8Automated maintenance — 4 of the last 100 commits are automated dependency updates
7/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileno
typed_languageno
bootstrap_filesdoc/Makefile
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0.04
How it's scored
0/45Type-checkable code — Python without a type-check config
54.4/55Manageable file sizes — 8/694 source files over 60KB
Inputs used
primary_languagePython
largest_source_bytes104,256
source_files_sampled694
oversized_source_files8
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

17,109GitHub stars
99contributors
323commits, last 12 months
3days since last push
65releases
3bus factor
144open issues
PyPIpackage ecosystems

More detail

Star and fork history 17,109 ★ / 3,561 ⇿
17,109Stars
3,561Forks
18Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

Only the most recent history is shown — this repository exceeds the collection window, so the earliest history is not captured.

2,5005,0007,50010,00012,50015,00017,50017,1093,561292022-102024-092026-07
Major 0Minor 0Patch 0

Each point covers 4 days.

OpenSSF Scorecard 7.8 / 10
7.8aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-22 01:51 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 70 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
10Fuzzingproject is fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
7Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 7
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
10Vulnerabilities0 existing vulnerabilities detected
All dependencies 40

Full resolved dependency set from the GitHub dependency graph: 0 direct and 40 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
PyPIasvindirect
PyPIbuildindirect
PyPIcairocffiindirect
PyPIchangelist0.5indirect
PyPIcontextilyindirect
PyPIhiveplotlibindirect
PyPIigraphindirect
PyPIintersphinx-registryindirect
PyPIiplotxindirect
PyPIlxmlindirect
PyPImatplotlibindirect
PyPImomepyindirect
PyPImypyindirect
PyPImyst-nbindirect
PyPInumpyindirect
PyPInumpydocindirect
PyPIosmnxindirect
PyPIpandasindirect
PyPIpillowindirect
PyPIpre-commitindirect
PyPIpy-rattlerindirect
PyPIpydata-sphinx-themeindirect
PyPIpydotindirect
PyPIpygraphvizindirect
PyPIpytestindirect
PyPIpytest-covindirect
PyPIpytest-mplindirect
PyPIpytest-randomlyindirect
PyPIpytest-xdistindirect
PyPIscikit-learnindirect
PyPIscipyindirect
PyPIseabornindirect
PyPIsetuptoolsindirect
PyPIsphinxindirect
PyPIsphinx-galleryindirect
PyPIsympyindirect
PyPItexextindirect
PyPItwineindirect
PyPIvirtualenvindirect
PyPIwheelindirect
Dependency advisories 0

This repository publishes no package the index resolves, so its own dependency graph was assessed — 1 packages, which also include development and test pins that never ship: 0 carry known advisories, of which 0 are direct. 39 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "python",
        "complex-networks",
        "graph-theory",
        "graph-algorithms",
        "graph-analysis",
        "graph-generation",
        "graph-visualization"
      ],
      "is_fork": false,
      "size_kb": 98171,
      "has_wiki": false,
      "homepage": "https://networkx.org",
      "languages": {
        "Python": 6671923
      },
      "pushed_at": "2026-07-18T13:37:19Z",
      "created_at": "2010-09-06T00:53:44Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T14:40:26Z",
      "description": "Network Analysis in Python",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://networkx.org/",
      "name": "NetworkX",
      "type": "Organization",
      "login": "networkx",
      "company": null,
      "location": null,
      "followers": 449,
      "avatar_url": "https://avatars.githubusercontent.com/u/388785?v=4",
      "created_at": "2010-09-06T00:52:07Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 5798
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "networkx-3.6.1",
          "kind": "other",
          "published_at": "2025-12-08T17:03:31Z"
        },
        {
          "tag": "networkx-3.6",
          "kind": "other",
          "published_at": "2025-11-24T03:05:12Z"
        },
        {
          "tag": "networkx-3.6rc0",
          "kind": "other",
          "published_at": "2025-11-04T15:25:33Z"
        },
        {
          "tag": "networkx-3.5",
          "kind": "other",
          "published_at": "2025-05-29T11:58:31Z"
        },
        {
          "tag": "networkx-3.5rc0",
          "kind": "other",
          "published_at": "2025-05-09T15:57:06Z"
        },
        {
          "tag": "networkx-3.4.2",
          "kind": "other",
          "published_at": "2024-10-21T12:40:41Z"
        },
        {
          "tag": "networkx-3.4.1",
          "kind": "other",
          "published_at": "2024-10-11T21:25:42Z"
        },
        {
          "tag": "networkx-3.4",
          "kind": "other",
          "published_at": "2024-10-10T19:46:30Z"
        },
        {
          "tag": "networkx-3.4rc0",
          "kind": "other",
          "published_at": "2024-10-06T17:31:46Z"
        },
        {
          "tag": "networkx-3.3",
          "kind": "other",
          "published_at": "2024-04-06T13:09:07Z"
        },
        {
          "tag": "networkx-3.3rc0",
          "kind": "other",
          "published_at": "2024-03-22T20:13:07Z"
        },
        {
          "tag": "networkx-3.2.1",
          "kind": "other",
          "published_at": "2023-10-28T09:53:23Z"
        },
        {
          "tag": "networkx-3.2",
          "kind": "other",
          "published_at": "2023-10-19T04:10:50Z"
        },
        {
          "tag": "networkx-3.1",
          "kind": "other",
          "published_at": "2023-04-04T20:05:38Z"
        },
        {
          "tag": "networkx-3.1rc0",
          "kind": "other",
          "published_at": "2023-03-30T21:39:25Z"
        },
        {
          "tag": "networkx-3.0",
          "kind": "other",
          "published_at": "2023-01-08T00:03:20Z"
        },
        {
          "tag": "networkx-3.0rc1",
          "kind": "other",
          "published_at": "2022-11-11T21:23:58Z"
        },
        {
          "tag": "networkx-2.8.8",
          "kind": "other",
          "published_at": "2022-11-01T20:29:34Z"
        },
        {
          "tag": "networkx-3.0b1",
          "kind": "other",
          "published_at": "2022-10-12T18:29:10Z"
        },
        {
          "tag": "networkx-2.8.7",
          "kind": "other",
          "published_at": "2022-10-01T20:50:01Z"
        },
        {
          "tag": "networkx-2.8.6",
          "kind": "other",
          "published_at": "2022-08-22T13:43:23Z"
        },
        {
          "tag": "networkx-2.8.5",
          "kind": "other",
          "published_at": "2022-07-18T21:22:53Z"
        },
        {
          "tag": "networkx-2.8.4",
          "kind": "other",
          "published_at": "2022-06-14T04:02:03Z"
        },
        {
          "tag": "networkx-2.8.3",
          "kind": "other",
          "published_at": "2022-06-04T16:16:05Z"
        },
        {
          "tag": "networkx-2.8.2",
          "kind": "other",
          "published_at": "2022-05-21T15:29:00Z"
        },
        {
          "tag": "networkx-2.8.1",
          "kind": "other",
          "published_at": "2022-05-18T17:42:39Z"
        },
        {
          "tag": "networkx-2.8.1rc1",
          "kind": "other",
          "published_at": "2022-05-13T15:50:58Z"
        },
        {
          "tag": "networkx-2.8",
          "kind": "other",
          "published_at": "2022-04-09T22:35:15Z"
        },
        {
          "tag": "networkx-2.8rc1",
          "kind": "other",
          "published_at": "2022-04-05T04:43:48Z"
        },
        {
          "tag": "networkx-2.7.1",
          "kind": "other",
          "published_at": "2022-03-05T14:40:59Z"
        },
        {
          "tag": "networkx-2.7",
          "kind": "other",
          "published_at": "2022-02-28T22:34:59Z"
        },
        {
          "tag": "networkx-2.7rc1",
          "kind": "other",
          "published_at": "2022-02-19T23:25:14Z"
        },
        {
          "tag": "networkx-2.6.3",
          "kind": "other",
          "published_at": "2021-09-09T22:07:01Z"
        },
        {
          "tag": "networkx-2.6.2",
          "kind": "other",
          "published_at": "2021-07-27T02:13:50Z"
        },
        {
          "tag": "networkx-2.6.1",
          "kind": "other",
          "published_at": "2021-07-08T20:13:46Z"
        },
        {
          "tag": "networkx-2.6",
          "kind": "other",
          "published_at": "2021-07-08T16:55:15Z"
        },
        {
          "tag": "networkx-2.6rc2",
          "kind": "other",
          "published_at": "2021-06-23T06:33:40Z"
        },
        {
          "tag": "networkx-2.6rc1",
          "kind": "other",
          "published_at": "2021-05-31T20:27:46Z"
        },
        {
          "tag": "networkx-2.5.1",
          "kind": "other",
          "published_at": "2021-04-03T22:13:05Z"
        },
        {
          "tag": "networkx-2.5",
          "kind": "other",
          "published_at": "2020-08-22T20:10:33Z"
        },
        {
          "tag": "networkx-2.5rc1",
          "kind": "other",
          "published_at": "2020-08-16T15:39:03Z"
        },
        {
          "tag": "networkx-2.4",
          "kind": "other",
          "published_at": "2019-10-17T02:05:42Z"
        },
        {
          "tag": "networkx-2.4rc2",
          "kind": "other",
          "published_at": "2019-10-16T16:10:37Z"
        },
        {
          "tag": "networkx-2.4rc1",
          "kind": "other",
          "published_at": "2019-10-13T02:32:28Z"
        },
        {
          "tag": "networkx-2.3",
          "kind": "other",
          "published_at": "2019-04-11T20:55:32Z"
        },
        {
          "tag": "networkx-2.3rc3",
          "kind": "other",
          "published_at": "2019-04-04T23:05:08Z"
        },
        {
          "tag": "networkx-2.3rc2",
          "kind": "other",
          "published_at": "2019-04-04T21:35:23Z"
        },
        {
          "tag": "networkx-2.3rc1",
          "kind": "other",
          "published_at": "2019-03-31T01:27:59Z"
        },
        {
          "tag": "networkx-2.2",
          "kind": "other",
          "published_at": "2018-09-19T18:48:30Z"
        },
        {
          "tag": "networkx-2.2rc1",
          "kind": "other",
          "published_at": "2018-09-11T00:25:46Z"
        },
        {
          "tag": "networkx-2.1",
          "kind": "other",
          "published_at": "2018-01-22T07:32:24Z"
        },
        {
          "tag": "networkx-2.1rc1",
          "kind": "other",
          "published_at": "2018-01-16T19:34:04Z"
        },
        {
          "tag": "networkx-2.0",
          "kind": "other",
          "published_at": "2017-09-20T17:28:53Z"
        },
        {
          "tag": "networkx-2.0rc1",
          "kind": "other",
          "published_at": "2017-09-11T23:35:20Z"
        },
        {
          "tag": "networkx-2.0b2",
          "kind": "other",
          "published_at": "2017-08-28T01:38:13Z"
        },
        {
          "tag": "networkx-2.0b1",
          "kind": "other",
          "published_at": "2017-08-18T18:22:33Z"
        },
        {
          "tag": "networkx-1.11",
          "kind": "other",
          "published_at": "2016-01-30T22:37:39Z"
        },
        {
          "tag": "networkx-1.11rc1",
          "kind": "other",
          "published_at": "2015-12-26T17:18:34Z"
        },
        {
          "tag": "networkx-1.10",
          "kind": "other",
          "published_at": "2015-08-02T16:52:25Z"
        },
        {
          "tag": "networkx-1.10rc2",
          "kind": "other",
          "published_at": "2015-06-27T17:01:36Z"
        },
        {
          "tag": "networkx-1.10rc1",
          "kind": "other",
          "published_at": "2015-06-12T00:31:59Z"
        },
        {
          "tag": "networkx-1.9.1",
          "kind": "other",
          "published_at": "2014-09-20T18:47:56Z"
        },
        {
          "tag": "networkx-1.9.1rc1",
          "kind": "other",
          "published_at": "2014-08-06T23:01:08Z"
        },
        {
          "tag": "networkx-1.9",
          "kind": "other",
          "published_at": "2014-06-21T16:43:51Z"
        },
        {
          "tag": "networkx-1.9rc1",
          "kind": "other",
          "published_at": "2014-06-06T17:57:41Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e6dda2927abffecb7f5328b0905331bb158c6cfb",
          "body": "* CI: Add back --doctest-modules flag to base tests.\n\nAnother minor config wart from the pixi transition - should be running\nthe doctests in the dependency-less test environment.\n\nCaught this while looking at test failures in gh-8695, which should've been\nuniversal but were passing on the \\*-base runs.\n\n* MAINT: add densest_subgraph fn to numpy-doctest-skip list.",
          "is_bot": false,
          "headline": "CI: Add back --doctest-modules flag to base tests. (#8696)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-07-18T13:37:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b91b072be74b527241e54ac16d847b6b93a206af",
          "body": "* BENCH: Add clustering to undirected alg benchmarks.\n\n* BENCH: Add clustering benchmarks to directed graphs.\n\n* BENCH: more aggressive timeouts for directed benchmarks.",
          "is_bot": false,
          "headline": "BENCH: Add `clustering` to algorithm benchmarks (#8764)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-07-18T02:15:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a96bc5fd651aca3cadbef2b3add67a64127769f",
          "body": null,
          "is_bot": false,
          "headline": "DOC: minor tweaks to biconnected docstring examples. (#8765)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-07-18T02:14:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92392ba712131f01652a822b7dfb127e0762ee14",
          "body": "* MAINT: bump copyright before release.\n\n* DOC: Add a prerelease checklist to developer docs\n\nFirst task: doublecheck copyright.",
          "is_bot": false,
          "headline": "MAINT: bump copyright year before release. (#8766)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-07-18T02:12:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e89e669e428fa9f22d8f9b3a04e3f83d51afe77",
          "body": "… (#8761)\n\n* add example of floating point fixing for maximum_flow capacity\n\n* wording changes\n\n* make precision a variable in example",
          "is_bot": false,
          "headline": "DOC: Add example of floating point handling for maximum_flow capacity…",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-07-17T19:07:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a09d8028c00265dab53a801d5bc2ec8475e1e3b",
          "body": "* Avoid building the flow dict in maximum_flow_value\n\nmaximum_flow_value delegated to maximum_flow, so every call built the\nfull flow dictionary via build_flow_dict and discarded it. Call the\nflow function directly with value_only=True and return the flow value\nfrom the residual network, mirroring m\n[…]\now value in maximum_flow_value comes from\n\nAdd a comment noting that every flow function returns a residual\nnetwork that stores the maximum flow value in R.graph[\"flow_value\"],\nas requested in review.",
          "is_bot": false,
          "headline": "Avoid building the flow dict in maximum_flow_value (#8754)",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-07-17T18:55:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f77c3b6852fb2ec3ed6575d0f42cd028c9a9dcb0",
          "body": "…minimum_cut` partition (#8756)\n\n* Speed up the residual flow reset in edmonds_karp\n\nedmonds_karp zeroes the flow attribute of every residual edge before\neach run. Profiled on connectivity workloads that make thousands of\nsmall-cutoff flow computations on one reused residual network, this\nreset outw\n[…]\nlookup. This makes the breadth-first search itself 1.7-2.7x faster on\ngraphs where the traversal covers most nodes, and matches the raw _succ\niteration already used in the edmonds_karp residual reset.",
          "is_bot": false,
          "headline": "Speed up the residual flow reset in `edmonds_karp` and simplify the `…",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-07-17T18:53:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3b4c227fda1c5462e6c04ac1ed7e7b0d8f2eacd4",
          "body": "extend to 30m time with no output\n\nAttempt to deal with runtime variability in geospatial examples\ndue to asset downloads",
          "is_bot": false,
          "headline": "MAINT: avoid timeouts on circleci (#8758)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-07-14T08:12:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c003d0a9f6ca3e711d3a907e62c71e090ba897fe",
          "body": "* add test of infinite loop (runs forever when not fixed -- could fix with pytest-timeout)\n\n* fix infinite loop\n\n* ensure best_gain - remove_cost > 0\n\n* fix example with peteresen graph\n\n* add comments to clarify our efforts to avoid inf loops.",
          "is_bot": false,
          "headline": "MAINT: Avoid Louvain infinite loops (#8757)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-07-14T08:07:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "304b3ae481c2027f6b6ff493715cdeb7043cb90d",
          "body": "* escape tuple labels in generate_gml\n\n* gml: use f-string for tuple label, triple-quote test assert",
          "is_bot": false,
          "headline": "escape tuple labels in generate_gml (#8755)",
          "author_name": "Syed Abdul Khaliq",
          "author_login": "abdul-khaliq-khalid",
          "committed_at": "2026-07-14T03:24:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1f956344071ba1adfad17d56d62a7a78dfd37e6",
          "body": "- nameing -> naming (3 occurrences in nx_pylab.py docstring)\n- minimumm -> minimum (nx_pylab.py docstring)\n- non-existant -> non-existent (2 occurrences in nx_pylab.py comments)\n- shouls -> should (test_pylab.py comment)\n- positve -> positive (2 occurrences in graph_hashing.py docstrings)",
          "is_bot": false,
          "headline": "Fix typos in comments and docstrings (#8750)",
          "author_name": "max",
          "author_login": "maxtaran2010",
          "committed_at": "2026-07-10T07:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "306bbbcd9bac4b44c5b732eb3ff6ac1bb118c73e",
          "body": "* first set of adjustments of leiden\n\n* make modularity work when no edges in G\n\n* inline MG handling; rename old/new graph as G and H; rename refinement_mapping to node2com\n\n* rewrite delta_func to handle single nodes for nodes_to_add\n\n* redo comments in _merge_node_subset; other small adjustments\n\n[…]\n for single selfloop and two_m vs m in modularity and node_weights on graph for cpm\n\n* Use degrees over edge_wts, use two_m over m when needed, add agg_vals to graph H\n\n* apply suggestions from review",
          "is_bot": false,
          "headline": "Optimize Leiden data handling (#8715)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-07-08T04:48:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "590007a291d8d43c3678c549bb1326d68bb16809",
          "body": "lattice_reference has niter=5 in its signature, but the docstring\ndocumented default=1. The Parameters block was copied from the sibling\nrandom_reference (which really does default to niter=1) and the value\nwas never updated. Correct the documented default to 5.",
          "is_bot": false,
          "headline": "DOC: fix lattice_reference niter default (5, not 1) (#8744)",
          "author_name": "Dipak Chaudhari",
          "author_login": "dchaudhari7177",
          "committed_at": "2026-07-08T04:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8081795e1344c576590b214c2e4f264b5e87244",
          "body": "_generate_partition removed the union of all minimum cutsets in a\nsingle pass, dropping cutset nodes whose neighbors all belong to other\ncutsets; apply cutsets one at a time as in Moody and White (2003),\nappendix A. _reconstruct_k_components skipped propagating a component\ndown a level whenever the union of lower-level candidates covered its\nnodes, letting non-maximal fragments replace a genuine k-component;\ntest containment in a single component instead.",
          "is_bot": false,
          "headline": "BUG: Fix k_components losing or truncating k-components (#8734)",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-07-07T09:01:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "472a452c4db89c79efdebbdb20501b10fc726eae",
          "body": "* Warn when PageRank convergence check is ineffective\n\n* Fix ruff format and pytest.warns(None) compatibility\n\n* DOC: note PageRank tolerance convergence caveat\n\n* DOC: Move note to param description, shorten.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Warn when PageRank convergence check is ineffective (#8735)",
          "author_name": "Dresden",
          "author_login": "DresdenGman",
          "committed_at": "2026-07-07T01:05:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "340c286fd6dc7d43db29de485cd85187414abd3d",
          "body": "Bumps the actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi), [actions/setup-python](https://github.com/actions/setup-python) and [actions/attest-build-provenance](https://github.com/actions/attest-\n[…]\npe: version-update:semver-patch\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump the actions group with 4 updates (#8730)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-03T03:05:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4d3dc2cd2b7fdd14a570f2394c10e83bdee3c791",
          "body": "* Add DAG antichain width\n\n* format dag_antichain_width\n\n* Renamed antichain width function\n\n* Keep antichain_width in dag namespace\n\n* DOC: ref guide alphabetical, for new fn at least.\n\n* STY: update calling pattern in tests.\n\n* DOC: Minor docstring tweaks.\n\n* STY: rm nodes property.\n\n* MAINT: node\n[…]\non.\n\n---------\n\nCo-authored-by: AMEDODJIpierre <152869280+AMEDODJIpierre@users.noreply.github.com>\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "Add DAG antichain width (#8654)",
          "author_name": "Pierre Amedodji",
          "author_login": "pamedodji",
          "committed_at": "2026-07-02T21:36:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "474f73f1edac0730e95a1e876ff205c4521432c8",
          "body": "* Parametrize `find_cliques` tests\n\n* Get rid of `setup` method, use fixtures instead\n\n* Parametrize `node_clique_number` and `number_of_cliques` tests\n\n* Parametrize on graph type in directed graph tests, rename trivial -> null",
          "is_bot": false,
          "headline": "TST: Test maintenance for `test_clique.py` (#8214)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-07-02T16:53:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9eac8a7e04df0b9cdcff8ed1682b3971678f4ed",
          "body": "…(#8726)\n\n* fix bug with mean degree of S1 model\n\n* Update networkx/generators/tests/test_geometric.py\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Fix: bug with mean degree part of geometric_soft_configuration_model …",
          "author_name": "Robert Jankowski",
          "author_login": "robertjankowski",
          "committed_at": "2026-07-02T16:48:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "195092869192b762fa553ef3a9ca5758e1d83ee3",
          "body": "…ing typo (#8728)",
          "is_bot": false,
          "headline": "Align boruvka_mst_edges keys default with kruskal/prim and fix docstr…",
          "author_name": "Sreekant Baheti",
          "author_login": "Sreekant13",
          "committed_at": "2026-06-29T20:18:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b53714073a289832ab804dc201cf7385154cb807",
          "body": "update code of conduct form link to match NumFOCUS link",
          "is_bot": false,
          "headline": "MAINT: update code of conduct form link to match NumFOCUS link (#8729)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-06-29T20:17:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac0f942d7ca64f2af5e8e0fb88435db329b4bf67",
          "body": "…o the same target (#8704)\n\n* DOC: Clarify attribute behavior in relabel_nodes when mapping to existing nodes\n\n* Update networkx/relabel.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n* Update networkx/relabel.py\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\n\n* Move attribute note to \n[…]\nlinks.\n\n* Update networkx/relabel.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Clarify attribute behavior in relabel_nodes when multiple nodes map t…",
          "author_name": "Gitank Chandrakar",
          "author_login": "Gitank444",
          "committed_at": "2026-06-29T19:18:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64889ebaa10415f547d542ecc871ea55823c6ebd",
          "body": "* BENCH: Add hits alg benchmarks.\n\n* MAINT: rm unused random import.\n\nCo-authored-by: Mridul Seth <mail@mriduls.com>\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n* Apply suggestions from code review\n\nCo-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com>\n\n---------\n\nCo-authored-by: Mridul Seth <mail@mriduls.com>\nCo-authored-by: Dan Schult <dschult@colgate.edu>\nCo-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com>",
          "is_bot": false,
          "headline": "Add HITS algorithm benchmark to benchmark suite (#8625)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-28T20:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83311e2eefef7a892e6c122815ad5f90e14275fc",
          "body": "…8714)\n\n* add hiveplotlib to docs\n\n* Update requirements/example.txt\r\n\r\ndrop extra networkx + scipy deps\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\n\n* change dep in the right file\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "DOC: Add Hiveplotlib to Drawing Docs and External Examples Gallery (#…",
          "author_name": "Gary Koplik",
          "author_login": "gjkoplik",
          "committed_at": "2026-06-28T15:37:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8df70c027d3a26e2ba3fad072c79243d29304b78",
          "body": "* update docs in louvain.py\n\n* scale edge weights. rename vars and inline helpers\n\n* undo scaling changes to avoid backward breaking churn\n\n* add suggestions from review",
          "is_bot": false,
          "headline": "Louvain updates to docs and code readability (#8722)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-06-27T17:16:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bd6b7129cd98e482f8f3ef2e4dbb3ff9ef0b4ca",
          "body": "* DOC: Update install guide.\n\nMy primary goal here was to remove some outdated or duplicate\ninformation and instead delegate non-nx-specific instructions\nsuch as enviornment management to other docs sources like the\nscientific Python developer guide.\n\n* Update INSTALL.rst\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "DOC: Update install guide. (#8725)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-27T10:21:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a357de06dca19a2df2d532efa00c62762774d30",
          "body": "* Update pygraphviz\n\n* DEP: Rm extra dependency req on pygraphviz from pixi conf.\n\n* CI: Rm explicit graphviz incantation from workflow.\n\n* DOC: Rm comment about conda graphviz.\n\n* DOC: Update links to https\n\n* CI: rm graphviz invocation in doc deploy setup.\n\n* Rm mention of graphviz from roadmap.\n\n\n[…]\nhviz version requirement\n\n* run pre-commit\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Mridul Seth <mail@mriduls.com>\nCo-authored-by: Mridul Seth <git@mriduls.com>",
          "is_bot": false,
          "headline": "DEP: Update pygraphviz min version to 2.0",
          "author_name": "Jarrod Millman",
          "author_login": "jarrodmillman",
          "committed_at": "2026-06-25T20:43:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09d4ebed4fce80a6833017c9c2bdbb931a6fa87b",
          "body": "* escape quotes and backslashes in pajek make_qstr\n\n* STY: fix linter complaints.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "escape quotes and backslashes in pajek make_qstr (#8693)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-20T20:08:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc2ba5f087d291ead6c05568c12dc3551baada16",
          "body": null,
          "is_bot": false,
          "headline": "write xsd:boolean true/false for dynamic gexf attvalues (#8709)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-17T19:40:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ba50db2d08c828f1cfcb06394b895aac8bfeecf",
          "body": "* CI: Fix circleci artifact redirector permissions.\n\n* CI: Update name of redirector to distinguish doc/cov.",
          "is_bot": false,
          "headline": "CI: Fix circleci artifact redirector permissions. (#8707)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-15T02:04:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0672a25f2c94fc191588dbacf455897aced555ae",
          "body": "* TST: New skipping mechanism for pydot tests.\n\n* TST: Similar pattern for skipping doctests.",
          "is_bot": false,
          "headline": "TST, MAINT: explict graphviz check for test_pydot (#8702)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-13T23:52:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7465e31b16baeb88a318f24437c8538771c5d46",
          "body": "MAINT: Avoid subgraphs in forest recognition",
          "is_bot": false,
          "headline": "MAINT: Avoid subgraph views in `is_forest` (#8642)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-06-13T23:45:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1991745d65565170594acf662c95bb0a5cdb4c46",
          "body": "Add pytest-mpl tests specifically to the pre-release jobs so that\nimage comparison tests can catch any viz changes from prereleases\nof matplotlib.\n\nMotivated by gh-8697.",
          "is_bot": false,
          "headline": "CI: Add image comparison tests to pre-release workflows. (#8699)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-13T19:39:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "412e7aa988323d2c1c773ec0f833c67963c81d2b",
          "body": "AFAICT this is no longer needed as NX has fully migrated to pyproject.toml.\n\nTested locally with python -m build and twine check --strict which worked as\nexpected. Also grepped for explicit references to MANIFEST.in and didn't\nfind any.",
          "is_bot": false,
          "headline": "MAINT: Rm MANIFEST.in (#8700)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-13T19:39:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2622da75c08a3d12321904dfb97f7899e9010444",
          "body": "* DOC: Fix ambiguous link warnings.\n\n* DOC: Other minor docstring touchups.",
          "is_bot": false,
          "headline": "DOC: Fixups for Leiden docstrings (#8701)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-12T21:16:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1414c2116b3efe44af5d54348d5ca8ad9547df8a",
          "body": "* DOC: Minor docstring touchups.\n\n* Add comment about G.edges instead of adjacency.\n\n* MAINT: Update exception chaining pattern.\n\n* TST: Update exact exception message in doctest.",
          "is_bot": false,
          "headline": "MAINT: Minor touchups to lexicographical_toplogical_sort (#8695)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-12T21:12:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ebafb6fe7056af5be47ee2751ea10d2270cbe02",
          "body": null,
          "is_bot": false,
          "headline": "TST: Update pytest-mpl baselines for matplotlib v3.11 (#8698)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-12T15:05:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51d7a1802f3bb6de581bc9662c26e86eb4b7efeb",
          "body": null,
          "is_bot": false,
          "headline": "reject out-of-range bytes in graph6/sparse6 decoders (#8692)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-10T04:43:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92d8b758dc784d15c71dc47c0b7d870f27ee8ca9",
          "body": "* first attempt to use zizmor and fix security stuff. not complete\n\n* use action SHA; turn off persist-credentials; zizmor passes\n\n* add sha; turn off persist-credentials; permissions; For All workflows",
          "is_bot": false,
          "headline": "MAINT: Fix ci permissions (#8690)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-06-09T20:06:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "489d5e65af00cc61e49d4a150cb9302d45805332",
          "body": "* DOC: Clarify degree_centrality behavior for directed graphs\n\n* linting fixes and new sentence near top of docs re: directed\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "DOC: Clarify degree_centrality behavior for directed graphs (#8674)",
          "author_name": "Gitank Chandrakar",
          "author_login": "Gitank444",
          "committed_at": "2026-06-08T17:41:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78bcfe17fa515873b7ba17cebcb79b55416f1f0f",
          "body": "* proposed updates to roadmap draft for comments\n\n* spelling",
          "is_bot": false,
          "headline": "DOC: update to roadmap (#8684)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-06-07T22:30:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e187ba20b38583a329c960062e4b9e0f23c8fc74",
          "body": null,
          "is_bot": false,
          "headline": "BUG: Make argmap._lazy_compile thread-safe (#8659)",
          "author_name": "Mridul Seth",
          "author_login": "MridulS",
          "committed_at": "2026-06-07T22:29:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c98ede26f23b24c707e86ea1170661035729c962",
          "body": "* CI: Redo benchmarks to use pixi around asv\n\n* Fix pre-commit\n\n* DOC/DEP: Re-add virtualenv as a benchmarking option.\n\nDefault remains rattler.\n\n* Update fetch depth in benchmark workflow\n\nChange fetch depth to 0 for benchmark workflow.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "CI: Redo benchmarks to use pixi around asv (#8688)",
          "author_name": "Mridul Seth",
          "author_login": "MridulS",
          "committed_at": "2026-06-07T22:07:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04182014f181167f9638d7c02a7f17a971e26aaf",
          "body": "* make multigraph tests not just duplicate edges. update multigraph test, put better failure info in _equiv_parts\n\n* reduce time for tests by making smaller. skip resolution chg with q_mod\n\n* TST: rm indirection of _equivalent_partitions helper.\n\n* mark manually skipped tests as slow and keep them running\n\n* linting\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "TST: shorten leiden tests (#8687)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-06-07T20:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4197ef9a77975132b8ce3b98a606bfbdc73a58ad",
          "body": "* CI: Rm explicit label check job.\n\nSwitch to a non-programmatically-enforced policy on\nlabel application to improve user experience.\n\n* DOC: Add pre-merge requirements to core contributor guide.\n\n* DOC: Link to the special labels.",
          "is_bot": false,
          "headline": "DOC/CI: Update github label requirements for user experience (#8689)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-07T20:32:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e836284e648e33c39c465b59e4d66e8a848c40c9",
          "body": null,
          "is_bot": false,
          "headline": "CI: networkx default deps were leaking into the pixi default env (#8683)",
          "author_name": "Mridul Seth",
          "author_login": "MridulS",
          "committed_at": "2026-06-06T22:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40de805083bcef355a8fd68dade62ab04aa3175d",
          "body": "…#8679)\n\nBumps the actions group with 1 update: [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi).\n\n\nUpdates `prefix-dev/setup-pixi` from 0.9.5 to 0.9.6\n- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)\n- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v\n[…]\npe: version-update:semver-patch\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump prefix-dev/setup-pixi from 0.9.5 to 0.9.6 in the actions group (…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-05T10:09:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a4e355ecb11aa87aafb95b361d45df27fcd87db4",
          "body": null,
          "is_bot": false,
          "headline": "Remove unused dsum variable from havel_hakimi_graph (#8678)",
          "author_name": "Yorgos",
          "author_login": "toastmt",
          "committed_at": "2026-06-05T02:31:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d567560d0086765ef8a0f0949e29d8f9bc3c438f",
          "body": null,
          "is_bot": false,
          "headline": "TST: Add test cases for len(G) != 3 (#8675)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-06-03T07:22:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da42a10cb675bcef6378e218276d3c6d64bb4e01",
          "body": "* Avoid O(E) lookup nx.display\n\nAvoid O(E) lookup\n\nstore known node-edge attr-keys\n\nupdate known node attr pos\n\navoid O(E) lookup\n\nAvoid O(E) lookup and error #8639\n\n* rephrase parsing kwargs display",
          "is_bot": false,
          "headline": "Avoid O(E) lookup in nx.display -issue8639 (#8663)",
          "author_name": "Melcion",
          "author_login": "mcbosch",
          "committed_at": "2026-05-30T18:25:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbf7f112a2d9781317e6d13186746089d50e51a0",
          "body": "Fix star graph node count and grammar in dual_barabasi_albert_graph\n\nThe default initial graph is star_graph(max(m1, m2)), which has\nmax(m1, m2) + 1 nodes, since NetworkX star_graph(k) returns k + 1 nodes. The\ninline comment said \"max(m1, m2) nodes\", dropping the + 1; the single-m\nbarabasi_albert_graph comment already states \"(m + 1) nodes\" correctly. Also\nfix \"an star graph\" -> \"a star graph\" in the m_2 docstring.",
          "is_bot": false,
          "headline": "Fix star graph node count in dual_barabasi_albert_graph comment (#8665)",
          "author_name": "Parafee41",
          "author_login": "koriyoshi2041",
          "committed_at": "2026-05-30T02:49:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96ad598cbe41baf6424dfa4bb860f93569c353a9",
          "body": "- De-indirectify\n - Parametrize",
          "is_bot": false,
          "headline": "Cleanup butterflies tests. (#8664)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-05-27T14:27:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3a1ba46c5e497e0170e0f8d35cf85d43057dedb",
          "body": "MAINT: Avoid subgraph views in connected coloring",
          "is_bot": false,
          "headline": "MAINT: Avoid subgraph views in `strategy_connected_sequential` (#8643)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-05-25T05:42:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5513ad8c9822cb5b9ece0cf176b6bacf30d6c1fc",
          "body": "leiden: fix typos in the q_add comment\n\nComment read \"occurs wen the node u is added the the new community\".\nTwo small fixes: \"wen\" -> \"when\" and the duplicate \"the the\" needed\nto become \"to the\".\n\nSigned-off-by: Charlie Tonneslan <cst0520@gmail.com>",
          "is_bot": false,
          "headline": "leiden: fix \"wen\" + duplicate \"the the\" in q_add comment (#8662)",
          "author_name": "Charlie Tonneslan",
          "author_login": "c-tonneslan",
          "committed_at": "2026-05-24T17:55:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7d0f4bef90a4b4af3017e1bece1f62e5a8edb68",
          "body": "* Add butterfly counting (BFC-VP) for bipartite graphs\n\n- Implement vertex-priority wedge enumeration (Wang et al., 2023)\n- Add per-node attribution (extension of BFC-VP)\n- Improve docstring and terminology clarity\n- Fix nodes= handling and tests\n\nCloses #8589\n\n* Address review feedback from @dschul\n[…]\nn polish\n\n* Push up review comments.\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "Add butterflies() to bipartite cluster module (#8591)",
          "author_name": "Muhammad Mujtaba",
          "author_login": "mmujtaba0085",
          "committed_at": "2026-05-22T20:21:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58edf3456c3369246e0faa016f360c9e57cba156",
          "body": "* add year to citation reference in quality.py\n\n* reorg tests, parametrize over metric, add ground truth examples\n\n* MAINT: Fix test failures due to kwarg-only check.\n\n* STY: make ruff happy.\n\n* tweak example and add a change in resolution to show impact\n\n* give name for cpm in keyword description\n\n* add links to metric functions\n\n* adjust with review suggestions\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "ENH: leiden test and doc_string improvements (#8656)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-05-22T17:28:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a860184e7a2c4acfd0c6304e68d1adaa90aa0a26",
          "body": "* ENH: Add Shen's overlapping modularity quality function\n\nAdd `nx.community.overlapping_modularity` implementing Shen et al.'s\nextended modularity EQ (2009) as a quality function for overlapping\ncommunity covers. The implementation uses the community-sum form\n\n    EQ = sum_i [ L_tilde_C / m - gamma\n[…]\ng_modularity\n\nMake weight and resolution keyword-only, switch to defaultdict\nfor membership counting, generalize the k_clique_communities\nreference, and clarify the effect of the resolution parameter.",
          "is_bot": false,
          "headline": "ENH: Add Shen's overlapping modularity quality function (#8647)",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-05-14T18:06:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bf3013e0fa44d43ccc2b05ca2a481ff36074bb63",
          "body": "…(#8655)\n\n* Proof-of-concept: layout reflects community structure.\n\n* DOC: Incorporate conference data into viz.",
          "is_bot": false,
          "headline": "DOC: Add conference information to visualization in football example …",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-05-14T13:33:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "708ebfa8bc78178da401273e6bbd6310d0f360ce",
          "body": "* added constant_potts_model function\n\n* add tests for constant_potts_model\n\n* pre-commit format changes\n\n* leiden algorithm implemented with tests\n\n* doc string typo networkx/algorithms/community/quality.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n* Update networkx/algorithms/community/qu\n[…]\n* Apply suggestions from code review\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Implement Leiden Community Detection Algorithm (#8509)",
          "author_name": "dk-gh",
          "author_login": "dk-gh",
          "committed_at": "2026-05-12T17:44:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4857d9a2580810605facc26f3dc7d23f8c04c1cd",
          "body": null,
          "is_bot": false,
          "headline": "DOC: Add xref to nx-guides to gallery overview. (#8650)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-05-07T17:05:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c56ada4623c3ea4ede4ad4d2947de77c1bf08269",
          "body": null,
          "is_bot": false,
          "headline": "Optimize VF2 GMState frontier update by removing full core scan (#8649)",
          "author_name": "Mingyi Kang",
          "author_login": "jerrykcode",
          "committed_at": "2026-05-07T02:57:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50fa88d7fbfbabe6f7751bf1cdb9afa52c873840",
          "body": "Bumps the actions group with 2 updates: [actions/github-script](https://github.com/actions/github-script) and [scientific-python/upload-nightly-action](https://github.com/scientific-python/upload-nightly-action).\n\n\nUpdates `actions/github-script` from 8 to 9\n- [Release notes](https://github.com/acti\n[…]\npe: version-update:semver-patch\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump the actions group with 2 updates (#8646)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-06T02:17:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "24861327ed3bc9a45c28b38f6e4b2ec6c59e678f",
          "body": "* ENH: Add Barber's bipartite modularity quality function\n\nAdd `bipartite.modularity` implementing Barber's Q_B (2007) as a\nquality function for bipartite community partitions. The\nimplementation uses the community-sum form\n\n    Q_B = sum_c [ L_c/m - gamma * k_c * d_c / m^2 ]\n\nwhere k_c and d_c are \n[…]\n\n\n* DOC: Add new module/fn to ref guide.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Dan Schult <dschult@colgate.edu>\nCo-authored-by: evk <kevin.dunne@mailbox.org>",
          "is_bot": false,
          "headline": "ENH: Add Barber's bipartite modularity quality function (#8618)",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-04-30T02:16:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6f6bfab0336fa3339504929e2172731900811466",
          "body": "Handle insufficient degree Pearson samples",
          "is_bot": false,
          "headline": "MAINT: Handle insufficient degree Pearson samples (#8628)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-04-30T01:48:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d07f12b591ed77808de91f0fe1f275339e6d82a9",
          "body": "Remove unused imports and dead tests",
          "is_bot": false,
          "headline": "MAINT: remove unused imports and dead helpers (#8627)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-04-27T17:19:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9886d2d1c97a103350c1d63495e22f4196c0367a",
          "body": "* DOC: Share barycenter docstring with centroid\n\n* DOC: Add tree barycenter alias\n\n* DOC: Link tree and graph barycenter aliases\n\n* DOC: Prefer centroid in related docstrings\n\n* TST: Prefer centroid in helper docstring\n\n* DOC: Prefer centroid terminology\n\n* Revert \"DOC: Prefer centroid terminology\"\n\n[…]\n: Address centroid review comments\n\n* DOC: Remove barycenter from centroid see also\n\n* DOC: Remove tree centroid self-reference\n\n* DOC: Remove centroid self-reference\n\n* Apply suggestion from @Peiffap",
          "is_bot": false,
          "headline": "DOC: more `barycenter` and `centroid` equivalence (#8630)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-04-25T16:03:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e9a163b44f67502290cfa690c6e42ff43ce3593",
          "body": "fix import order",
          "is_bot": false,
          "headline": "Followup that fixes import order (#8634)",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-04-24T13:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28c5f9cd95f39557b4548ab9820afd4da8f23268",
          "body": "* CI: fix benchmark PR workflow checkout\n\n* CI: expose build requirements to ASV\n\n* Update pyproject.toml (add newline at end)\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "CI: fix benchmark PR workflow checkout (#8633)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-04-24T12:38:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0491a742a5e9416f1017a48d34d054776423f76",
          "body": "* Add description and keywords support to GEXF reader/writer\n\nRead and write `description` and `keywords` between graph\nattributes and the GEXF meta tag when available.\n\n* Clarify single-graph limitation in GEXF documentation\n\nDocument that NetworkX only supports reading and writing\na single graph per GEXF file.",
          "is_bot": false,
          "headline": "Add description and keywords support to GEXF reader/writer (#8629)",
          "author_name": "Karmanya Gupta",
          "author_login": "KarmanyaGupta1421",
          "committed_at": "2026-04-23T11:19:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc87a81fd3de0f17c03e611fd6e746994c66277c",
          "body": "* BUG: Handle small graphs in information_centrality\n\n* Update networkx/algorithms/centrality/current_flow_closeness.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "BUG: Handle small graphs in information_centrality (#7475)",
          "author_name": "Gilles Peiffer",
          "author_login": "Peiffap",
          "committed_at": "2026-04-22T18:19:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65becad79fd10dff170b49fa003a6052c291d27d",
          "body": "Co-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "API: Add centroid as alias to barycenter (#8622)",
          "author_name": "OliCheesman",
          "author_login": "OliCheesman",
          "committed_at": "2026-04-21T19:42:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a45cba696ffdf0bece9807ec8bb76c32274d042e",
          "body": "* DOC: Add note about connectionstyle effectiveness.\n\nconnectionstyle is ignored when edges are draw as a LineCollection.\nReference the arrows parameter description which describes in more\ndetail.\n\n* Update networkx/drawing/nx_pylab.py\n\nCo-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com>\n\n---------\n\nCo-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com>",
          "is_bot": false,
          "headline": "DOC: Add note about connectionstyle effectiveness. (#8623)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-04-17T23:26:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c039ceb47c5c9e7793fd44f519c4fe88f558f97",
          "body": "* DOC: clarify readwrite generator docstrings\n\n* STY: undo bot cruft.\n\n* Apply suggestions from code review\n\n* Add Yields to 2 other readwrite generators.\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Dan Schult <dschult@colgate.edu>\nCo-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com>",
          "is_bot": false,
          "headline": "DOC: clarify remaining readwrite generator docstrings (#8619)",
          "author_name": "Berqia Mouad",
          "author_login": "BerqiaMouad",
          "committed_at": "2026-04-17T21:28:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32b2c75e5179dedae57eee82580bd6b408485d77",
          "body": "…pp (#8616)\n\n* update tests to check mappings and probe symmetry failures\n\n* fix ismags.py to support multiedges and pass all tests\n\n* fix for vf2pp with multigraph when seeking a subgraph\n\n* add test of multigraph vs graph as well as a multipath graph\n\n* make degree 3-tuple for both graph and multigraph. Might not be best, but works\n\n* add more tests that compare multigraph vs simple",
          "is_bot": false,
          "headline": "fix multigraph isomorphism tests and fix support in ISMAGS and in VF2…",
          "author_name": "Dan Schult",
          "author_login": "dschult",
          "committed_at": "2026-04-17T03:35:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33d7236db9256990bf94753153c5f1105c0740cd",
          "body": "* State-of-the-art implementation of Tarjan's algorithm\n\n* Update networkx/algorithms/components/strongly_connected.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "State-of-the-art implementation of Tarjan's algorithm (#8615)",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-04-16T21:27:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c108b89cca6e9be80e9ec83ad2bf924bb5990770",
          "body": "…rip (#8552)\n\n* EHN: Add nonedge argument to from_numpy_array and complete the roundtrip\n\n* TST: Parametrize on sentinel.\n\n* STY: 0.0 -> 0.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "EHN: Add nonedge argument to from_numpy_array and complete the roundt…",
          "author_name": "Mridul Seth",
          "author_login": "MridulS",
          "committed_at": "2026-04-16T09:30:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1c468d521d6e5baccc0cc2b2a2b015a5d8ff02b",
          "body": "…p (#8460)\n\n* Optimize _build_paths_from_predecessors using iterator stack\n\n* Rename variables to node/preds\n\n* applied requested variable renames\n\n* updated loop logic for readability (Approach 1)\n\n* Added ASV benchmark for all_shortest_paths\n\n* used for loop for better readability\n\n* removed unnecessary imports",
          "is_bot": false,
          "headline": "Optimize _build_paths_from_predecessors stack logic for 30-40% speedu…",
          "author_name": "Buha Deep maheshbhai",
          "author_login": "DeepBuha06",
          "committed_at": "2026-04-15T03:30:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "951201eebb7d2fde94f70aff168d36a702599c90",
          "body": "… (#8609)\n\nfixed incorrect description of modularity formula for directed graphs",
          "is_bot": false,
          "headline": "Fixed incorrect description of modularity formula for directed graphs…",
          "author_name": "dk-gh",
          "author_login": "dk-gh",
          "committed_at": "2026-04-13T23:02:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05809740ff46c1bd03998bcef1d7686444048371",
          "body": "* Improving views exceptions\n\n* Improving exception tracking\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n* Limiting new errors for edge KeyErrors\n\n* Fixing exception raising\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "Improving views exceptions (#8588)",
          "author_name": "Alejandro Candioti",
          "author_login": "amcandio",
          "committed_at": "2026-04-12T21:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "641eef2987f4622a1d9aac3d442b6e1e8c4ec716",
          "body": "…8606)\n\n* DOC: clarify lazy exception behavior in topological_sort generator\n\n* Update networkx/algorithms/dag.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n* Simplify documentation in topological_generations function\n\nRemoved redundant notes about max-path-distance determination.\n\n* DOC: reorder Examples and merge duplicate Notes sections\n\nRemoved duplicate examples and notes sections for clarity.\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "DOC: clarify lazy exception behavior in topological_sort generator (#…",
          "author_name": "Aditya-Deshwal23",
          "author_login": "Aditya-Deshwal23",
          "committed_at": "2026-04-11T12:03:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9150d1ea446bca38bba165795a41330e0d758299",
          "body": "…ithm (#8586)\n\nFix all_node_cuts: correct Even-Tarjan reduction for Kanevsky's algorithm.\n\nThe Even-Tarjan auxiliary digraph built by\nbuild_auxiliary_node_connectivity sets capacity=1 on all edges. This is\ncorrect for computing the node connectivity value, but Kanevsky's\nalgorithm depends on the str\n[…]\ncal to igraph's C implementation at all tested sizes.\n\nFixes #7994.\n\nTests previously marked @pytest.mark.slow are now fast enough to run by\ndefault, and MAX_CUTSETS_TO_TEST is restored from 4 to 100.",
          "is_bot": false,
          "headline": "Fix all_node_cuts: correct Even-Tarjan reduction for Kanevsky's algor…",
          "author_name": "Jordi Torrents",
          "author_login": "jtorrents",
          "committed_at": "2026-04-10T19:55:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13b440d01a86767f3798233fa7bf3e7a6444f4a2",
          "body": null,
          "is_bot": false,
          "headline": "DOC: Remove redundant sphinx links (#8607)",
          "author_name": "Mridul Seth",
          "author_login": "MridulS",
          "committed_at": "2026-04-09T23:52:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a453c96a37d96c75dccbc03b5d867483e41bd308",
          "body": "* Added InvalidGexfAttributeType and round-trip tests\n\n* Throw ValueError instead\n\n* Stored type instead of element\n\n* Removed XML type checks",
          "is_bot": false,
          "headline": "Raise ValueError in `write_gexf` for mixed typed attributes (#8549)",
          "author_name": "Ishwer Kumar",
          "author_login": "roboGOD",
          "committed_at": "2026-04-09T21:17:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6478d123d921fbddb54bad3c2e6a7afdc21024e5",
          "body": "* Enhance has_cycle docstring with usage examples\n\nAdded examples to the docstring of the has_cycle function to illustrate its usage.\n\n* Update dag.py\n\n* Apply suggestions from code review\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Enhance has_cycle docstring with usage examples (#8583)",
          "author_name": "Siddhant",
          "author_login": "siddhants4-png",
          "committed_at": "2026-04-09T01:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46a639aeb9bd4db8da444bd6a532df567b9a73cc",
          "body": "…ly (#8584)\n\nEnable next(spanning_tree_iterator_instance) by moving priority queue\ninitialization from __iter__ to __next__",
          "is_bot": false,
          "headline": "BUG: fix SpanningTreeIterator AttributeError when using next() direct…",
          "author_name": "OliCheesman",
          "author_login": "OliCheesman",
          "committed_at": "2026-04-06T17:41:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d160909eeb42e9844496dd2bbd19b826d2242d7",
          "body": "* More context for initial print.\n\n* Remove unnecessary comments, more context for print.\n\n* Replace bespoke hist with degree_histogram.",
          "is_bot": false,
          "headline": "Gallery: Improve plot_degree_sequence example (#8601)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-04-04T20:02:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "194fdedd4702a698a0123e1ee890b1d6bee546dd",
          "body": "* Use subset_key as a dict rather than storing node attrs.\n\n* Use nx.draw with labels.",
          "is_bot": false,
          "headline": "Gallery: Improve plot_dag example (#8600)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-04-04T19:59:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51fb67a4b5faa13333b468202f0927fa68d30c09",
          "body": "…ings (#8598)\n\n* Close gh-8597.\n\n* Fix sphinx warning on underline length.",
          "is_bot": false,
          "headline": "Fix broken links in quotient_graph docstring and other minor doc warn…",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-04-04T19:26:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6628a781503211153d16f2a2ef184e75daba69e5",
          "body": "Bumps the actions group with 2 updates: [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) and [webfactory/ssh-agent](https://github.com/webfactory/ssh-agent).\n\n\nUpdates `prefix-dev/setup-pixi` from 0.9.4 to 0.9.5\n- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)\n- \n[…]\npe: version-update:semver-minor\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump the actions group with 2 updates (#8594)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-02T18:02:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "61d209875422f5c40600d2d425bd92fac9cc1b02",
          "body": "* Condense graph construction from edge list.\n\n* Replace draw_networkx with equivalent draw.\n\n* Pull directed drawing into separate example.\n\nThis way it gets its own thumbnail.",
          "is_bot": false,
          "headline": "Gallery: split simple graph example into two separate ones (#8567)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-26T01:02:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e19db3b5c0acea2260fb2bdd8ed6c86db056cad",
          "body": "* Replace dummy file with BytesIO.\n\n* Properly de-stringize and use result as layout.",
          "is_bot": false,
          "headline": "Gallery: Update basic read/write example (#8570)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-25T00:09:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c31d8f68dfe28856f0162956dcd89f6b913286eb",
          "body": "* MAINT: Rm transpose of 1D array.\n\n* MAINT: Compute dangling mask only once.",
          "is_bot": false,
          "headline": "MAINT: Minor readability tweaks to pagerank (#8582)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-25T00:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f0fa509fbf8c6e6f41e8e890ca4e0774e145332",
          "body": "* Add utility to extract faces from PlanarEmbedding\n\n* Style fixes from pre-commit\n\n* Fix typing and import order for faces_from_planar_embedding\n\n* Add faces() method to PlanarEmbedding\n\n* MAINT: Rm indirection.\n\n* Rm more indirection.\n\n* STY: Undo style changes.\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "Add utility to extract faces from PlanarEmbedding (#8512)",
          "author_name": "Varand Arakelian",
          "author_login": "VarandArakelian",
          "committed_at": "2026-03-24T08:38:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "620c37ef6ffe37b0bdc45c802b7a7287ee59eb91",
          "body": "…#8556)\n\n* Created find_all_optimal_spanning_trees\n\n* Rename to `optimal_spanning_trees`\n\n* doc string\n\n* Added example\n\n* Added tests\n\n* Update mst.py\n\n* Revert \"Added example\"\n\nThis reverts commit b364c93bd18ab26f27d7f02279d95e946ffce859.\n\nRevert \"Created find_all_optimal_spanning_trees\"\n\nThis rev\n[…]\ns.groupby for example.\n\nCo-authored-by: Alejandro Candioti <amcandio@gmail.com>\n\n---------\n\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>\nCo-authored-by: Alejandro Candioti <amcandio@gmail.com>",
          "is_bot": false,
          "headline": "Added example for `SpanningTreeIterator` to find min spanning trees (…",
          "author_name": "Ishwer Kumar",
          "author_login": "roboGOD",
          "committed_at": "2026-03-23T12:57:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee541721917014eec25f0aa19eed3b66f3d7f532",
          "body": "* Replace all-pairs spl custom with nx fn.\n\n* Fix bug in average shortest path length.\n\n* Replace bespoke recipe for dist hist with Counter.\n\n* Add nx.describe, clean up prints.\n\n* Add blurb about passing in pre-computed eccentricity.\n\n* Typo, un-cutify eccentricity.",
          "is_bot": false,
          "headline": "Gallery: Fix and update `basic_properties` example (#8568)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-21T16:17:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3c9b00aaab32ed74e5be79bf5960772d3e63467",
          "body": "…ck_model (#8557)\n\n* Fix sparse heuristic not applied to diagonal blocks in stochastic_block_model\n\nThe diagonal block (i==j) case consumed the edges iterator before the\nsparse/dense branching logic, so the sparse heuristic was never used for\ndiagonal blocks. Remove the premature edge addition so diagonal blocks\nflow into the same sparse/dense logic as off-diagonal blocks.\n\n* add specific test that ensures dense and sparse paths differ\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "Fix sparse heuristic not applied to diagonal blocks in stochastic_blo…",
          "author_name": "dean985",
          "author_login": "dean985",
          "committed_at": "2026-03-21T01:15:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17448435f2cac33018ceabba4d5faabdae768f0f",
          "body": "Add density to nx.describe defaults.",
          "is_bot": false,
          "headline": "Proposal: Add density to `nx.describe` defaults. (#8569)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-20T13:49:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af65195381ca94630239bd26139900b3c3ddcdd5",
          "body": "* DOC: Add some docstring examples to degree_histogram.\n\n* Minor wording tweaks.\n\n* STY: unused loop variable.\n\n* Another wording tweak.\n\n* Update networkx/classes/function.py\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>\n\n---------\n\nCo-authored-by: Dan Schult <dschult@colgate.edu>",
          "is_bot": false,
          "headline": "Add examples to `degree_histogram` docstring (#8571)",
          "author_name": "Ross Barnowski",
          "author_login": "rossbar",
          "committed_at": "2026-03-18T16:52:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1b678f4f768a2e51da83bd9e9de8bbaa1b30845",
          "body": "* MAINT: remove unused functions and imports\n\n* restore spectral_projection per maintainer feedback (#8575)",
          "is_bot": false,
          "headline": "MAINT: remove unused functions and imports (#8572)",
          "author_name": "oha",
          "author_login": "duriantaco",
          "committed_at": "2026-03-18T16:49:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4792afb8a8ef5812370398d5f543e8228e354ae8",
          "body": "* ENH: Add format parameter to adjacency_matrix\n\nAdd a 'format' parameter to adjacency_matrix() to allow specifying\nthe sparse format of the returned matrix, consistent with\nto_scipy_sparse_array(). This includes support for 'dense' format\nwhich returns a numpy ndarray.\n\nThe adjacency_matrix functio\n[…]\n* DOC: minor intersphinx tweak.\n\n* TST: Add test for ary format.\n\n---------\n\nSigned-off-by: edvatar <88481784+toroleapinc@users.noreply.github.com>\nCo-authored-by: Ross Barnowski <rossbar@caltech.edu>",
          "is_bot": false,
          "headline": "ENH: Add format parameter to adjacency_matrix (#8545)",
          "author_name": "edvatar",
          "author_login": "toroleapinc",
          "committed_at": "2026-03-15T02:24:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 65,
      "commits_last_year": 323,
      "latest_release_at": "2025-12-08T17:03:31Z",
      "latest_release_tag": "networkx-3.6.1",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 51,
      "days_since_latest_release": 225,
      "mean_days_between_releases": 67.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "networkx",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [
            "Networks",
            "Graph Theory",
            "Mathematics",
            "network",
            "graph",
            "discrete mathematics",
            "math",
            "Development Status :: 5 - Production/Stable",
            "Intended Audience :: Developers",
            "Intended Audience :: Science/Research",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3 :: Only",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Programming Language :: Python :: 3.14",
            "Topic :: Scientific/Engineering :: Bio-Informatics",
            "Topic :: Scientific/Engineering :: Information Analysis",
            "Topic :: Scientific/Engineering :: Mathematics",
            "Topic :: Scientific/Engineering :: Physics",
            "Topic :: Software Development :: Libraries :: Python Modules"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/networkx/",
          "is_deprecated": false,
          "latest_version": "3.6.1",
          "repository_url": "https://github.com/networkx/networkx",
          "versions_count": 85,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 277214053,
          "first_published_at": "2007-04-13T01:49:38Z",
          "latest_published_at": "2025-12-08T17:02:39.908840Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 225
        }
      ]
    },
    "popularity": {
      "forks": 3561,
      "stars": 17109,
      "watchers": 272,
      "fork_history": {
        "days": [
          {
            "date": "2022-10-26",
            "count": 1
          },
          {
            "date": "2022-10-27",
            "count": 1
          },
          {
            "date": "2022-10-28",
            "count": 1
          },
          {
            "date": "2022-10-29",
            "count": 1
          },
          {
            "date": "2022-10-31",
            "count": 1
          },
          {
            "date": "2022-11-01",
            "count": 1
          },
          {
            "date": "2022-11-02",
            "count": 2
          },
          {
            "date": "2022-11-03",
            "count": 2
          },
          {
            "date": "2022-11-06",
            "count": 1
          },
          {
            "date": "2022-11-07",
            "count": 1
          },
          {
            "date": "2022-11-08",
            "count": 1
          },
          {
            "date": "2022-11-11",
            "count": 3
          },
          {
            "date": "2022-11-15",
            "count": 1
          },
          {
            "date": "2022-11-17",
            "count": 2
          },
          {
            "date": "2022-11-18",
            "count": 1
          },
          {
            "date": "2022-11-20",
            "count": 1
          },
          {
            "date": "2022-11-21",
            "count": 2
          },
          {
            "date": "2022-11-23",
            "count": 1
          },
          {
            "date": "2022-11-24",
            "count": 1
          },
          {
            "date": "2022-11-26",
            "count": 2
          },
          {
            "date": "2022-11-27",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2022-12-01",
            "count": 1
          },
          {
            "date": "2022-12-02",
            "count": 2
          },
          {
            "date": "2022-12-03",
            "count": 1
          },
          {
            "date": "2022-12-04",
            "count": 1
          },
          {
            "date": "2022-12-05",
            "count": 2
          },
          {
            "date": "2022-12-06",
            "count": 2
          },
          {
            "date": "2022-12-07",
            "count": 2
          },
          {
            "date": "2022-12-08",
            "count": 1
          },
          {
            "date": "2022-12-09",
            "count": 1
          },
          {
            "date": "2022-12-12",
            "count": 1
          },
          {
            "date": "2022-12-13",
            "count": 1
          },
          {
            "date": "2022-12-15",
            "count": 1
          },
          {
            "date": "2022-12-16",
            "count": 1
          },
          {
            "date": "2022-12-17",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 3
          },
          {
            "date": "2022-12-21",
            "count": 1
          },
          {
            "date": "2022-12-22",
            "count": 1
          },
          {
            "date": "2022-12-24",
            "count": 2
          },
          {
            "date": "2022-12-26",
            "count": 1
          },
          {
            "date": "2022-12-27",
            "count": 2
          },
          {
            "date": "2022-12-28",
            "count": 1
          },
          {
            "date": "2023-01-01",
            "count": 1
          },
          {
            "date": "2023-01-05",
            "count": 2
          },
          {
            "date": "2023-01-07",
            "count": 2
          },
          {
            "date": "2023-01-08",
            "count": 1
          },
          {
            "date": "2023-01-10",
            "count": 1
          },
          {
            "date": "2023-01-12",
            "count": 2
          },
          {
            "date": "2023-01-15",
            "count": 2
          },
          {
            "date": "2023-01-16",
            "count": 2
          },
          {
            "date": "2023-01-19",
            "count": 1
          },
          {
            "date": "2023-01-20",
            "count": 1
          },
          {
            "date": "2023-01-23",
            "count": 1
          },
          {
            "date": "2023-01-24",
            "count": 1
          },
          {
            "date": "2023-01-25",
            "count": 1
          },
          {
            "date": "2023-01-29",
            "count": 2
          },
          {
            "date": "2023-02-02",
            "count": 2
          },
          {
            "date": "2023-02-03",
            "count": 2
          },
          {
            "date": "2023-02-07",
            "count": 2
          },
          {
            "date": "2023-02-08",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 3
          },
          {
            "date": "2023-02-12",
            "count": 1
          },
          {
            "date": "2023-02-14",
            "count": 1
          },
          {
            "date": "2023-02-15",
            "count": 1
          },
          {
            "date": "2023-02-16",
            "count": 3
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-02-20",
            "count": 1
          },
          {
            "date": "2023-02-24",
            "count": 1
          },
          {
            "date": "2023-02-28",
            "count": 5
          },
          {
            "date": "2023-03-02",
            "count": 2
          },
          {
            "date": "2023-03-04",
            "count": 1
          },
          {
            "date": "2023-03-05",
            "count": 1
          },
          {
            "date": "2023-03-06",
            "count": 1
          },
          {
            "date": "2023-03-07",
            "count": 7
          },
          {
            "date": "2023-03-08",
            "count": 1
          },
          {
            "date": "2023-03-09",
            "count": 1
          },
          {
            "date": "2023-03-10",
            "count": 3
          },
          {
            "date": "2023-03-12",
            "count": 3
          },
          {
            "date": "2023-03-14",
            "count": 1
          },
          {
            "date": "2023-03-19",
            "count": 1
          },
          {
            "date": "2023-03-20",
            "count": 2
          },
          {
            "date": "2023-03-25",
            "count": 2
          },
          {
            "date": "2023-03-26",
            "count": 1
          },
          {
            "date": "2023-03-27",
            "count": 3
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-04-03",
            "count": 2
          },
          {
            "date": "2023-04-04",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-06",
            "count": 3
          },
          {
            "date": "2023-04-07",
            "count": 1
          },
          {
            "date": "2023-04-09",
            "count": 1
          },
          {
            "date": "2023-04-11",
            "count": 1
          },
          {
            "date": "2023-04-12",
            "count": 4
          },
          {
            "date": "2023-04-13",
            "count": 1
          },
          {
            "date": "2023-04-14",
            "count": 1
          },
          {
            "date": "2023-04-15",
            "count": 3
          },
          {
            "date": "2023-04-18",
            "count": 2
          },
          {
            "date": "2023-04-20",
            "count": 1
          },
          {
            "date": "2023-04-22",
            "count": 1
          },
          {
            "date": "2023-04-23",
            "count": 1
          },
          {
            "date": "2023-04-24",
            "count": 1
          },
          {
            "date": "2023-04-25",
            "count": 2
          },
          {
            "date": "2023-04-28",
            "count": 2
          },
          {
            "date": "2023-04-30",
            "count": 1
          },
          {
            "date": "2023-05-01",
            "count": 1
          },
          {
            "date": "2023-05-02",
            "count": 1
          },
          {
            "date": "2023-05-04",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 1
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-05-14",
            "count": 1
          },
          {
            "date": "2023-05-17",
            "count": 2
          },
          {
            "date": "2023-05-23",
            "count": 1
          },
          {
            "date": "2023-05-24",
            "count": 2
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-05-31",
            "count": 1
          },
          {
            "date": "2023-06-01",
            "count": 2
          },
          {
            "date": "2023-06-02",
            "count": 3
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 2
          },
          {
            "date": "2023-06-08",
            "count": 1
          },
          {
            "date": "2023-06-09",
            "count": 1
          },
          {
            "date": "2023-06-10",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-06-15",
            "count": 2
          },
          {
            "date": "2023-06-18",
            "count": 1
          },
          {
            "date": "2023-06-20",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 2
          },
          {
            "date": "2023-06-24",
            "count": 1
          },
          {
            "date": "2023-06-26",
            "count": 2
          },
          {
            "date": "2023-06-28",
            "count": 1
          },
          {
            "date": "2023-06-29",
            "count": 1
          },
          {
            "date": "2023-07-05",
            "count": 1
          },
          {
            "date": "2023-07-06",
            "count": 1
          },
          {
            "date": "2023-07-10",
            "count": 2
          },
          {
            "date": "2023-07-12",
            "count": 1
          },
          {
            "date": "2023-07-14",
            "count": 1
          },
          {
            "date": "2023-07-15",
            "count": 1
          },
          {
            "date": "2023-07-16",
            "count": 1
          },
          {
            "date": "2023-07-17",
            "count": 2
          },
          {
            "date": "2023-07-18",
            "count": 1
          },
          {
            "date": "2023-07-19",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-07-24",
            "count": 2
          },
          {
            "date": "2023-07-26",
            "count": 1
          },
          {
            "date": "2023-07-28",
            "count": 2
          },
          {
            "date": "2023-07-29",
            "count": 1
          },
          {
            "date": "2023-07-30",
            "count": 1
          },
          {
            "date": "2023-07-31",
            "count": 3
          },
          {
            "date": "2023-08-01",
            "count": 1
          },
          {
            "date": "2023-08-02",
            "count": 1
          },
          {
            "date": "2023-08-03",
            "count": 2
          },
          {
            "date": "2023-08-05",
            "count": 1
          },
          {
            "date": "2023-08-06",
            "count": 1
          },
          {
            "date": "2023-08-08",
            "count": 3
          },
          {
            "date": "2023-08-09",
            "count": 2
          },
          {
            "date": "2023-08-16",
            "count": 1
          },
          {
            "date": "2023-08-18",
            "count": 1
          },
          {
            "date": "2023-08-19",
            "count": 1
          },
          {
            "date": "2023-08-21",
            "count": 2
          },
          {
            "date": "2023-08-24",
            "count": 2
          },
          {
            "date": "2023-08-25",
            "count": 2
          },
          {
            "date": "2023-08-26",
            "count": 1
          },
          {
            "date": "2023-08-28",
            "count": 2
          },
          {
            "date": "2023-08-30",
            "count": 2
          },
          {
            "date": "2023-09-02",
            "count": 1
          },
          {
            "date": "2023-09-03",
            "count": 2
          },
          {
            "date": "2023-09-05",
            "count": 2
          },
          {
            "date": "2023-09-06",
            "count": 1
          },
          {
            "date": "2023-09-07",
            "count": 1
          },
          {
            "date": "2023-09-11",
            "count": 1
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-09-19",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 2
          },
          {
            "date": "2023-09-23",
            "count": 2
          },
          {
            "date": "2023-09-24",
            "count": 1
          },
          {
            "date": "2023-09-26",
            "count": 2
          },
          {
            "date": "2023-09-27",
            "count": 2
          },
          {
            "date": "2023-09-29",
            "count": 2
          },
          {
            "date": "2023-09-30",
            "count": 5
          },
          {
            "date": "2023-10-02",
            "count": 10
          },
          {
            "date": "2023-10-03",
            "count": 3
          },
          {
            "date": "2023-10-04",
            "count": 2
          },
          {
            "date": "2023-10-05",
            "count": 2
          },
          {
            "date": "2023-10-06",
            "count": 2
          },
          {
            "date": "2023-10-07",
            "count": 1
          },
          {
            "date": "2023-10-08",
            "count": 1
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-12",
            "count": 1
          },
          {
            "date": "2023-10-14",
            "count": 4
          },
          {
            "date": "2023-10-15",
            "count": 1
          },
          {
            "date": "2023-10-16",
            "count": 1
          },
          {
            "date": "2023-10-17",
            "count": 2
          },
          {
            "date": "2023-10-19",
            "count": 1
          },
          {
            "date": "2023-10-21",
            "count": 1
          },
          {
            "date": "2023-10-25",
            "count": 2
          },
          {
            "date": "2023-10-26",
            "count": 1
          },
          {
            "date": "2023-10-27",
            "count": 1
          },
          {
            "date": "2023-10-29",
            "count": 1
          },
          {
            "date": "2023-10-30",
            "count": 2
          },
          {
            "date": "2023-10-31",
            "count": 1
          },
          {
            "date": "2023-11-01",
            "count": 2
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-04",
            "count": 1
          },
          {
            "date": "2023-11-07",
            "count": 1
          },
          {
            "date": "2023-11-09",
            "count": 1
          },
          {
            "date": "2023-11-11",
            "count": 1
          },
          {
            "date": "2023-11-12",
            "count": 1
          },
          {
            "date": "2023-11-13",
            "count": 3
          },
          {
            "date": "2023-11-16",
            "count": 1
          },
          {
            "date": "2023-11-24",
            "count": 3
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-11-26",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-11-30",
            "count": 3
          },
          {
            "date": "2023-12-04",
            "count": 1
          },
          {
            "date": "2023-12-07",
            "count": 3
          },
          {
            "date": "2023-12-08",
            "count": 2
          },
          {
            "date": "2023-12-09",
            "count": 1
          },
          {
            "date": "2023-12-10",
            "count": 2
          },
          {
            "date": "2023-12-11",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2023-12-13",
            "count": 1
          },
          {
            "date": "2023-12-16",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-19",
            "count": 1
          },
          {
            "date": "2023-12-20",
            "count": 1
          },
          {
            "date": "2023-12-21",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 2
          },
          {
            "date": "2023-12-25",
            "count": 2
          },
          {
            "date": "2023-12-26",
            "count": 2
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2023-12-30",
            "count": 2
          },
          {
            "date": "2023-12-31",
            "count": 1
          },
          {
            "date": "2024-01-06",
            "count": 1
          },
          {
            "date": "2024-01-07",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 1
          },
          {
            "date": "2024-01-11",
            "count": 1
          },
          {
            "date": "2024-01-12",
            "count": 1
          },
          {
            "date": "2024-01-13",
            "count": 2
          },
          {
            "date": "2024-01-15",
            "count": 2
          },
          {
            "date": "2024-01-16",
            "count": 2
          },
          {
            "date": "2024-01-17",
            "count": 2
          },
          {
            "date": "2024-01-21",
            "count": 1
          },
          {
            "date": "2024-01-22",
            "count": 1
          },
          {
            "date": "2024-01-23",
            "count": 1
          },
          {
            "date": "2024-01-24",
            "count": 1
          },
          {
            "date": "2024-01-27",
            "count": 1
          },
          {
            "date": "2024-01-30",
            "count": 1
          },
          {
            "date": "2024-02-01",
            "count": 2
          },
          {
            "date": "2024-02-04",
            "count": 1
          },
          {
            "date": "2024-02-05",
            "count": 1
          },
          {
            "date": "2024-02-06",
            "count": 1
          },
          {
            "date": "2024-02-07",
            "count": 1
          },
          {
            "date": "2024-02-08",
            "count": 2
          },
          {
            "date": "2024-02-09",
            "count": 1
          },
          {
            "date": "2024-02-12",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 2
          },
          {
            "date": "2024-02-21",
            "count": 1
          },
          {
            "date": "2024-02-22",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 1
          },
          {
            "date": "2024-02-26",
            "count": 2
          },
          {
            "date": "2024-02-27",
            "count": 1
          },
          {
            "date": "2024-02-29",
            "count": 2
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-07",
            "count": 2
          },
          {
            "date": "2024-03-08",
            "count": 1
          },
          {
            "date": "2024-03-13",
            "count": 2
          },
          {
            "date": "2024-03-14",
            "count": 1
          },
          {
            "date": "2024-03-15",
            "count": 3
          },
          {
            "date": "2024-03-16",
            "count": 1
          },
          {
            "date": "2024-03-18",
            "count": 2
          },
          {
            "date": "2024-03-21",
            "count": 1
          },
          {
            "date": "2024-03-27",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 2
          },
          {
            "date": "2024-04-01",
            "count": 2
          },
          {
            "date": "2024-04-02",
            "count": 1
          },
          {
            "date": "2024-04-03",
            "count": 3
          },
          {
            "date": "2024-04-05",
            "count": 1
          },
          {
            "date": "2024-04-08",
            "count": 1
          },
          {
            "date": "2024-04-09",
            "count": 1
          },
          {
            "date": "2024-04-10",
            "count": 1
          },
          {
            "date": "2024-04-11",
            "count": 3
          },
          {
            "date": "2024-04-13",
            "count": 1
          },
          {
            "date": "2024-04-15",
            "count": 1
          },
          {
            "date": "2024-04-17",
            "count": 2
          },
          {
            "date": "2024-04-18",
            "count": 1
          },
          {
            "date": "2024-04-19",
            "count": 1
          },
          {
            "date": "2024-04-20",
            "count": 1
          },
          {
            "date": "2024-04-24",
            "count": 1
          },
          {
            "date": "2024-04-25",
            "count": 1
          },
          {
            "date": "2024-04-30",
            "count": 1
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-05-07",
            "count": 1
          },
          {
            "date": "2024-05-08",
            "count": 1
          },
          {
            "date": "2024-05-10",
            "count": 2
          },
          {
            "date": "2024-05-15",
            "count": 1
          },
          {
            "date": "2024-05-18",
            "count": 1
          },
          {
            "date": "2024-05-19",
            "count": 3
          },
          {
            "date": "2024-05-20",
            "count": 1
          },
          {
            "date": "2024-05-21",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 2
          },
          {
            "date": "2024-05-25",
            "count": 2
          },
          {
            "date": "2024-05-27",
            "count": 4
          },
          {
            "date": "2024-05-28",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-05-31",
            "count": 3
          },
          {
            "date": "2024-06-01",
            "count": 1
          },
          {
            "date": "2024-06-02",
            "count": 1
          },
          {
            "date": "2024-06-03",
            "count": 1
          },
          {
            "date": "2024-06-05",
            "count": 1
          },
          {
            "date": "2024-06-06",
            "count": 1
          },
          {
            "date": "2024-06-07",
            "count": 1
          },
          {
            "date": "2024-06-10",
            "count": 3
          },
          {
            "date": "2024-06-12",
            "count": 1
          },
          {
            "date": "2024-06-15",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-06-22",
            "count": 1
          },
          {
            "date": "2024-06-23",
            "count": 1
          },
          {
            "date": "2024-06-24",
            "count": 1
          },
          {
            "date": "2024-06-25",
            "count": 3
          },
          {
            "date": "2024-06-26",
            "count": 1
          },
          {
            "date": "2024-07-02",
            "count": 1
          },
          {
            "date": "2024-07-03",
            "count": 2
          },
          {
            "date": "2024-07-04",
            "count": 1
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-07",
            "count": 1
          },
          {
            "date": "2024-07-08",
            "count": 1
          },
          {
            "date": "2024-07-11",
            "count": 1
          },
          {
            "date": "2024-07-15",
            "count": 1
          },
          {
            "date": "2024-07-18",
            "count": 1
          },
          {
            "date": "2024-07-24",
            "count": 1
          },
          {
            "date": "2024-07-30",
            "count": 3
          },
          {
            "date": "2024-08-01",
            "count": 1
          },
          {
            "date": "2024-08-03",
            "count": 1
          },
          {
            "date": "2024-08-04",
            "count": 2
          },
          {
            "date": "2024-08-05",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-08-07",
            "count": 1
          },
          {
            "date": "2024-08-12",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 1
          },
          {
            "date": "2024-08-18",
            "count": 1
          },
          {
            "date": "2024-08-21",
            "count": 3
          },
          {
            "date": "2024-08-22",
            "count": 2
          },
          {
            "date": "2024-08-25",
            "count": 1
          },
          {
            "date": "2024-08-26",
            "count": 1
          },
          {
            "date": "2024-08-27",
            "count": 1
          },
          {
            "date": "2024-09-01",
            "count": 2
          },
          {
            "date": "2024-09-05",
            "count": 1
          },
          {
            "date": "2024-09-09",
            "count": 2
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-11",
            "count": 2
          },
          {
            "date": "2024-09-13",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-09-17",
            "count": 2
          },
          {
            "date": "2024-09-19",
            "count": 3
          },
          {
            "date": "2024-09-23",
            "count": 3
          },
          {
            "date": "2024-09-24",
            "count": 2
          },
          {
            "date": "2024-09-25",
            "count": 1
          },
          {
            "date": "2024-09-26",
            "count": 1
          },
          {
            "date": "2024-09-28",
            "count": 1
          },
          {
            "date": "2024-10-02",
            "count": 1
          },
          {
            "date": "2024-10-04",
            "count": 2
          },
          {
            "date": "2024-10-06",
            "count": 2
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2024-10-10",
            "count": 3
          },
          {
            "date": "2024-10-11",
            "count": 1
          },
          {
            "date": "2024-10-13",
            "count": 1
          },
          {
            "date": "2024-10-14",
            "count": 5
          },
          {
            "date": "2024-10-17",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-19",
            "count": 1
          },
          {
            "date": "2024-10-20",
            "count": 1
          },
          {
            "date": "2024-10-21",
            "count": 1
          },
          {
            "date": "2024-10-22",
            "count": 1
          },
          {
            "date": "2024-10-23",
            "count": 1
          },
          {
            "date": "2024-10-25",
            "count": 1
          },
          {
            "date": "2024-10-28",
            "count": 2
          },
          {
            "date": "2024-10-29",
            "count": 1
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 2
          },
          {
            "date": "2024-11-03",
            "count": 1
          },
          {
            "date": "2024-11-06",
            "count": 1
          },
          {
            "date": "2024-11-07",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 1
          },
          {
            "date": "2024-11-11",
            "count": 1
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2024-11-17",
            "count": 1
          },
          {
            "date": "2024-11-21",
            "count": 1
          },
          {
            "date": "2024-11-22",
            "count": 1
          },
          {
            "date": "2024-11-25",
            "count": 1
          },
          {
            "date": "2024-11-26",
            "count": 2
          },
          {
            "date": "2024-11-27",
            "count": 3
          },
          {
            "date": "2024-11-28",
            "count": 1
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-01",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-08",
            "count": 3
          },
          {
            "date": "2024-12-09",
            "count": 2
          },
          {
            "date": "2024-12-14",
            "count": 2
          },
          {
            "date": "2024-12-15",
            "count": 2
          },
          {
            "date": "2024-12-17",
            "count": 1
          },
          {
            "date": "2024-12-18",
            "count": 2
          },
          {
            "date": "2024-12-20",
            "count": 2
          },
          {
            "date": "2024-12-22",
            "count": 1
          },
          {
            "date": "2024-12-24",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2024-12-27",
            "count": 1
          },
          {
            "date": "2025-01-01",
            "count": 2
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-14",
            "count": 2
          },
          {
            "date": "2025-01-17",
            "count": 1
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-01-19",
            "count": 1
          },
          {
            "date": "2025-01-21",
            "count": 2
          },
          {
            "date": "2025-01-22",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-01-24",
            "count": 1
          },
          {
            "date": "2025-01-28",
            "count": 1
          },
          {
            "date": "2025-01-29",
            "count": 2
          },
          {
            "date": "2025-02-01",
            "count": 2
          },
          {
            "date": "2025-02-02",
            "count": 1
          },
          {
            "date": "2025-02-04",
            "count": 2
          },
          {
            "date": "2025-02-06",
            "count": 1
          },
          {
            "date": "2025-02-10",
            "count": 1
          },
          {
            "date": "2025-02-12",
            "count": 2
          },
          {
            "date": "2025-02-13",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 2
          },
          {
            "date": "2025-02-21",
            "count": 1
          },
          {
            "date": "2025-02-24",
            "count": 1
          },
          {
            "date": "2025-02-25",
            "count": 1
          },
          {
            "date": "2025-02-27",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 2
          },
          {
            "date": "2025-03-07",
            "count": 1
          },
          {
            "date": "2025-03-10",
            "count": 3
          },
          {
            "date": "2025-03-11",
            "count": 1
          },
          {
            "date": "2025-03-18",
            "count": 3
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-22",
            "count": 1
          },
          {
            "date": "2025-03-24",
            "count": 1
          },
          {
            "date": "2025-03-25",
            "count": 2
          },
          {
            "date": "2025-03-26",
            "count": 2
          },
          {
            "date": "2025-03-27",
            "count": 2
          },
          {
            "date": "2025-03-30",
            "count": 1
          },
          {
            "date": "2025-03-31",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 3
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-04",
            "count": 1
          },
          {
            "date": "2025-04-07",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 3
          },
          {
            "date": "2025-04-11",
            "count": 1
          },
          {
            "date": "2025-04-12",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 2
          },
          {
            "date": "2025-04-16",
            "count": 1
          },
          {
            "date": "2025-04-18",
            "count": 3
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 1
          },
          {
            "date": "2025-04-25",
            "count": 1
          },
          {
            "date": "2025-04-26",
            "count": 2
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-04-30",
            "count": 1
          },
          {
            "date": "2025-05-02",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-05",
            "count": 1
          },
          {
            "date": "2025-05-07",
            "count": 2
          },
          {
            "date": "2025-05-10",
            "count": 1
          },
          {
            "date": "2025-05-11",
            "count": 2
          },
          {
            "date": "2025-05-12",
            "count": 2
          },
          {
            "date": "2025-05-14",
            "count": 1
          },
          {
            "date": "2025-05-15",
            "count": 1
          },
          {
            "date": "2025-05-17",
            "count": 1
          },
          {
            "date": "2025-05-18",
            "count": 2
          },
          {
            "date": "2025-05-19",
            "count": 3
          },
          {
            "date": "2025-05-20",
            "count": 1
          },
          {
            "date": "2025-05-21",
            "count": 1
          },
          {
            "date": "2025-05-22",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-05-29",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 2
          },
          {
            "date": "2025-06-02",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 2
          },
          {
            "date": "2025-06-07",
            "count": 1
          },
          {
            "date": "2025-06-08",
            "count": 2
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-11",
            "count": 2
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-06-15",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 2
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-26",
            "count": 2
          },
          {
            "date": "2025-06-30",
            "count": 1
          },
          {
            "date": "2025-07-01",
            "count": 1
          },
          {
            "date": "2025-07-03",
            "count": 2
          },
          {
            "date": "2025-07-07",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 2
          },
          {
            "date": "2025-07-16",
            "count": 1
          },
          {
            "date": "2025-07-17",
            "count": 3
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-07-24",
            "count": 2
          },
          {
            "date": "2025-07-26",
            "count": 2
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-06",
            "count": 2
          },
          {
            "date": "2025-08-07",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-08-17",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 2
          },
          {
            "date": "2025-09-02",
            "count": 1
          },
          {
            "date": "2025-09-06",
            "count": 1
          },
          {
            "date": "2025-09-08",
            "count": 1
          },
          {
            "date": "2025-09-10",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 1
          },
          {
            "date": "2025-09-19",
            "count": 1
          },
          {
            "date": "2025-09-21",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 2
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-27",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2025-10-01",
            "count": 1
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-05",
            "count": 2
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-15",
            "count": 1
          },
          {
            "date": "2025-10-17",
            "count": 1
          },
          {
            "date": "2025-10-20",
            "count": 2
          },
          {
            "date": "2025-10-23",
            "count": 3
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-27",
            "count": 3
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 3
          },
          {
            "date": "2025-11-05",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 1
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-19",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 1
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-11-28",
            "count": 1
          },
          {
            "date": "2025-11-29",
            "count": 1
          },
          {
            "date": "2025-11-30",
            "count": 1
          },
          {
            "date": "2025-12-01",
            "count": 1
          },
          {
            "date": "2025-12-04",
            "count": 2
          },
          {
            "date": "2025-12-08",
            "count": 2
          },
          {
            "date": "2025-12-10",
            "count": 2
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 1
          },
          {
            "date": "2025-12-18",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 3
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-26",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 1
          },
          {
            "date": "2026-01-01",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 2
          },
          {
            "date": "2026-01-08",
            "count": 1
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 2
          },
          {
            "date": "2026-01-12",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-01-16",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-21",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 2
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-01-30",
            "count": 1
          },
          {
            "date": "2026-01-31",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 2
          },
          {
            "date": "2026-02-11",
            "count": 1
          },
          {
            "date": "2026-02-13",
            "count": 1
          },
          {
            "date": "2026-02-17",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-02-20",
            "count": 1
          },
          {
            "date": "2026-02-21",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 3
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 2
          },
          {
            "date": "2026-02-27",
            "count": 2
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-05",
            "count": 2
          },
          {
            "date": "2026-03-06",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 3
          },
          {
            "date": "2026-03-18",
            "count": 1
          },
          {
            "date": "2026-03-19",
            "count": 2
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 8
          },
          {
            "date": "2026-03-24",
            "count": 2
          },
          {
            "date": "2026-03-25",
            "count": 4
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-03-30",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-08",
            "count": 2
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-13",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 2
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 2
          },
          {
            "date": "2026-04-20",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-26",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 2
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-09",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 1
          },
          {
            "date": "2026-05-11",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-23",
            "count": 4
          },
          {
            "date": "2026-05-24",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 2
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 2
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 2
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-25",
            "count": 3
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 3
          },
          {
            "date": "2026-07-01",
            "count": 3
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 2
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 3
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 3
          },
          {
            "date": "2026-07-14",
            "count": 2
          },
          {
            "date": "2026-07-15",
            "count": 2
          },
          {
            "date": "2026-07-16",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 4
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 3561
      },
      "star_history": {
        "days": [
          {
            "date": "2025-10-06",
            "count": 7
          },
          {
            "date": "2025-10-07",
            "count": 3
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-09",
            "count": 1
          },
          {
            "date": "2025-10-10",
            "count": 2
          },
          {
            "date": "2025-10-11",
            "count": 2
          },
          {
            "date": "2025-10-12",
            "count": 1
          },
          {
            "date": "2025-10-13",
            "count": 3
          },
          {
            "date": "2025-10-14",
            "count": 6
          },
          {
            "date": "2025-10-15",
            "count": 4
          },
          {
            "date": "2025-10-16",
            "count": 3
          },
          {
            "date": "2025-10-17",
            "count": 7
          },
          {
            "date": "2025-10-19",
            "count": 3
          },
          {
            "date": "2025-10-20",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 1
          },
          {
            "date": "2025-10-22",
            "count": 1
          },
          {
            "date": "2025-10-23",
            "count": 5
          },
          {
            "date": "2025-10-24",
            "count": 3
          },
          {
            "date": "2025-10-25",
            "count": 3
          },
          {
            "date": "2025-10-26",
            "count": 1
          },
          {
            "date": "2025-10-27",
            "count": 6
          },
          {
            "date": "2025-10-28",
            "count": 8
          },
          {
            "date": "2025-10-29",
            "count": 2
          },
          {
            "date": "2025-10-30",
            "count": 2
          },
          {
            "date": "2025-10-31",
            "count": 5
          },
          {
            "date": "2025-11-01",
            "count": 3
          },
          {
            "date": "2025-11-02",
            "count": 1
          },
          {
            "date": "2025-11-03",
            "count": 3
          },
          {
            "date": "2025-11-04",
            "count": 2
          },
          {
            "date": "2025-11-05",
            "count": 2
          },
          {
            "date": "2025-11-06",
            "count": 2
          },
          {
            "date": "2025-11-07",
            "count": 7
          },
          {
            "date": "2025-11-08",
            "count": 2
          },
          {
            "date": "2025-11-09",
            "count": 1
          },
          {
            "date": "2025-11-10",
            "count": 5
          },
          {
            "date": "2025-11-11",
            "count": 4
          },
          {
            "date": "2025-11-12",
            "count": 5
          },
          {
            "date": "2025-11-13",
            "count": 7
          },
          {
            "date": "2025-11-14",
            "count": 4
          },
          {
            "date": "2025-11-16",
            "count": 2
          },
          {
            "date": "2025-11-17",
            "count": 1
          },
          {
            "date": "2025-11-18",
            "count": 3
          },
          {
            "date": "2025-11-19",
            "count": 3
          },
          {
            "date": "2025-11-20",
            "count": 6
          },
          {
            "date": "2025-11-21",
            "count": 4
          },
          {
            "date": "2025-11-22",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 4
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-25",
            "count": 4
          },
          {
            "date": "2025-11-26",
            "count": 8
          },
          {
            "date": "2025-11-27",
            "count": 5
          },
          {
            "date": "2025-11-28",
            "count": 2
          },
          {
            "date": "2025-11-29",
            "count": 2
          },
          {
            "date": "2025-11-30",
            "count": 6
          },
          {
            "date": "2025-12-01",
            "count": 2
          },
          {
            "date": "2025-12-03",
            "count": 5
          },
          {
            "date": "2025-12-04",
            "count": 2
          },
          {
            "date": "2025-12-05",
            "count": 5
          },
          {
            "date": "2025-12-06",
            "count": 5
          },
          {
            "date": "2025-12-07",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 4
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-10",
            "count": 1
          },
          {
            "date": "2025-12-12",
            "count": 1
          },
          {
            "date": "2025-12-13",
            "count": 1
          },
          {
            "date": "2025-12-14",
            "count": 4
          },
          {
            "date": "2025-12-15",
            "count": 3
          },
          {
            "date": "2025-12-16",
            "count": 3
          },
          {
            "date": "2025-12-17",
            "count": 4
          },
          {
            "date": "2025-12-18",
            "count": 5
          },
          {
            "date": "2025-12-19",
            "count": 7
          },
          {
            "date": "2025-12-20",
            "count": 4
          },
          {
            "date": "2025-12-21",
            "count": 3
          },
          {
            "date": "2025-12-22",
            "count": 1
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-26",
            "count": 4
          },
          {
            "date": "2025-12-27",
            "count": 2
          },
          {
            "date": "2025-12-28",
            "count": 4
          },
          {
            "date": "2025-12-30",
            "count": 2
          },
          {
            "date": "2025-12-31",
            "count": 2
          },
          {
            "date": "2026-01-01",
            "count": 2
          },
          {
            "date": "2026-01-02",
            "count": 4
          },
          {
            "date": "2026-01-03",
            "count": 3
          },
          {
            "date": "2026-01-04",
            "count": 4
          },
          {
            "date": "2026-01-05",
            "count": 3
          },
          {
            "date": "2026-01-06",
            "count": 4
          },
          {
            "date": "2026-01-07",
            "count": 5
          },
          {
            "date": "2026-01-08",
            "count": 4
          },
          {
            "date": "2026-01-09",
            "count": 2
          },
          {
            "date": "2026-01-10",
            "count": 6
          },
          {
            "date": "2026-01-11",
            "count": 6
          },
          {
            "date": "2026-01-12",
            "count": 10
          },
          {
            "date": "2026-01-13",
            "count": 7
          },
          {
            "date": "2026-01-14",
            "count": 2
          },
          {
            "date": "2026-01-15",
            "count": 6
          },
          {
            "date": "2026-01-16",
            "count": 4
          },
          {
            "date": "2026-01-17",
            "count": 3
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 4
          },
          {
            "date": "2026-01-20",
            "count": 6
          },
          {
            "date": "2026-01-21",
            "count": 3
          },
          {
            "date": "2026-01-22",
            "count": 4
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 2
          },
          {
            "date": "2026-01-25",
            "count": 3
          },
          {
            "date": "2026-01-26",
            "count": 1
          },
          {
            "date": "2026-01-27",
            "count": 6
          },
          {
            "date": "2026-01-28",
            "count": 7
          },
          {
            "date": "2026-01-29",
            "count": 4
          },
          {
            "date": "2026-01-30",
            "count": 4
          },
          {
            "date": "2026-01-31",
            "count": 2
          },
          {
            "date": "2026-02-01",
            "count": 3
          },
          {
            "date": "2026-02-02",
            "count": 2
          },
          {
            "date": "2026-02-03",
            "count": 6
          },
          {
            "date": "2026-02-04",
            "count": 4
          },
          {
            "date": "2026-02-05",
            "count": 2
          },
          {
            "date": "2026-02-06",
            "count": 6
          },
          {
            "date": "2026-02-07",
            "count": 5
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-09",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 4
          },
          {
            "date": "2026-02-11",
            "count": 5
          },
          {
            "date": "2026-02-12",
            "count": 3
          },
          {
            "date": "2026-02-13",
            "count": 5
          },
          {
            "date": "2026-02-14",
            "count": 2
          },
          {
            "date": "2026-02-15",
            "count": 5
          },
          {
            "date": "2026-02-16",
            "count": 1
          },
          {
            "date": "2026-02-17",
            "count": 5
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 4
          },
          {
            "date": "2026-02-20",
            "count": 6
          },
          {
            "date": "2026-02-21",
            "count": 3
          },
          {
            "date": "2026-02-22",
            "count": 3
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-24",
            "count": 6
          },
          {
            "date": "2026-02-25",
            "count": 2
          },
          {
            "date": "2026-02-26",
            "count": 3
          },
          {
            "date": "2026-02-27",
            "count": 8
          },
          {
            "date": "2026-02-28",
            "count": 3
          },
          {
            "date": "2026-03-01",
            "count": 3
          },
          {
            "date": "2026-03-02",
            "count": 6
          },
          {
            "date": "2026-03-03",
            "count": 6
          },
          {
            "date": "2026-03-04",
            "count": 5
          },
          {
            "date": "2026-03-05",
            "count": 4
          },
          {
            "date": "2026-03-06",
            "count": 5
          },
          {
            "date": "2026-03-07",
            "count": 3
          },
          {
            "date": "2026-03-08",
            "count": 3
          },
          {
            "date": "2026-03-09",
            "count": 6
          },
          {
            "date": "2026-03-10",
            "count": 6
          },
          {
            "date": "2026-03-11",
            "count": 5
          },
          {
            "date": "2026-03-12",
            "count": 4
          },
          {
            "date": "2026-03-13",
            "count": 4
          },
          {
            "date": "2026-03-14",
            "count": 2
          },
          {
            "date": "2026-03-15",
            "count": 4
          },
          {
            "date": "2026-03-16",
            "count": 6
          },
          {
            "date": "2026-03-17",
            "count": 3
          },
          {
            "date": "2026-03-18",
            "count": 6
          },
          {
            "date": "2026-03-19",
            "count": 6
          },
          {
            "date": "2026-03-20",
            "count": 3
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 2
          },
          {
            "date": "2026-03-23",
            "count": 6
          },
          {
            "date": "2026-03-24",
            "count": 2
          },
          {
            "date": "2026-03-25",
            "count": 2
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 3
          },
          {
            "date": "2026-03-28",
            "count": 3
          },
          {
            "date": "2026-03-29",
            "count": 5
          },
          {
            "date": "2026-03-30",
            "count": 4
          },
          {
            "date": "2026-03-31",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 4
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 3
          },
          {
            "date": "2026-04-04",
            "count": 3
          },
          {
            "date": "2026-04-05",
            "count": 3
          },
          {
            "date": "2026-04-06",
            "count": 3
          },
          {
            "date": "2026-04-07",
            "count": 4
          },
          {
            "date": "2026-04-08",
            "count": 3
          },
          {
            "date": "2026-04-09",
            "count": 6
          },
          {
            "date": "2026-04-10",
            "count": 6
          },
          {
            "date": "2026-04-11",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 6
          },
          {
            "date": "2026-04-13",
            "count": 4
          },
          {
            "date": "2026-04-14",
            "count": 7
          },
          {
            "date": "2026-04-15",
            "count": 3
          },
          {
            "date": "2026-04-16",
            "count": 2
          },
          {
            "date": "2026-04-17",
            "count": 4
          },
          {
            "date": "2026-04-18",
            "count": 3
          },
          {
            "date": "2026-04-19",
            "count": 2
          },
          {
            "date": "2026-04-20",
            "count": 4
          },
          {
            "date": "2026-04-21",
            "count": 3
          },
          {
            "date": "2026-04-22",
            "count": 4
          },
          {
            "date": "2026-04-23",
            "count": 6
          },
          {
            "date": "2026-04-24",
            "count": 2
          },
          {
            "date": "2026-04-25",
            "count": 3
          },
          {
            "date": "2026-04-26",
            "count": 4
          },
          {
            "date": "2026-04-27",
            "count": 5
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 4
          },
          {
            "date": "2026-04-30",
            "count": 2
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 5
          },
          {
            "date": "2026-05-03",
            "count": 2
          },
          {
            "date": "2026-05-04",
            "count": 6
          },
          {
            "date": "2026-05-05",
            "count": 5
          },
          {
            "date": "2026-05-06",
            "count": 5
          },
          {
            "date": "2026-05-07",
            "count": 4
          },
          {
            "date": "2026-05-08",
            "count": 3
          },
          {
            "date": "2026-05-09",
            "count": 4
          },
          {
            "date": "2026-05-10",
            "count": 2
          },
          {
            "date": "2026-05-11",
            "count": 3
          },
          {
            "date": "2026-05-12",
            "count": 6
          },
          {
            "date": "2026-05-13",
            "count": 4
          },
          {
            "date": "2026-05-14",
            "count": 7
          },
          {
            "date": "2026-05-15",
            "count": 3
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 5
          },
          {
            "date": "2026-05-18",
            "count": 3
          },
          {
            "date": "2026-05-19",
            "count": 2
          },
          {
            "date": "2026-05-20",
            "count": 4
          },
          {
            "date": "2026-05-21",
            "count": 4
          },
          {
            "date": "2026-05-22",
            "count": 5
          },
          {
            "date": "2026-05-23",
            "count": 5
          },
          {
            "date": "2026-05-24",
            "count": 5
          },
          {
            "date": "2026-05-25",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 6
          },
          {
            "date": "2026-05-27",
            "count": 8
          },
          {
            "date": "2026-05-28",
            "count": 5
          },
          {
            "date": "2026-05-29",
            "count": 3
          },
          {
            "date": "2026-05-30",
            "count": 2
          },
          {
            "date": "2026-05-31",
            "count": 3
          },
          {
            "date": "2026-06-01",
            "count": 3
          },
          {
            "date": "2026-06-02",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 6
          },
          {
            "date": "2026-06-04",
            "count": 2
          },
          {
            "date": "2026-06-05",
            "count": 3
          },
          {
            "date": "2026-06-06",
            "count": 2
          },
          {
            "date": "2026-06-08",
            "count": 2
          },
          {
            "date": "2026-06-09",
            "count": 6
          },
          {
            "date": "2026-06-10",
            "count": 3
          },
          {
            "date": "2026-06-11",
            "count": 5
          },
          {
            "date": "2026-06-12",
            "count": 5
          },
          {
            "date": "2026-06-13",
            "count": 3
          },
          {
            "date": "2026-06-14",
            "count": 3
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 2
          },
          {
            "date": "2026-06-17",
            "count": 2
          },
          {
            "date": "2026-06-18",
            "count": 3
          },
          {
            "date": "2026-06-19",
            "count": 7
          },
          {
            "date": "2026-06-20",
            "count": 4
          },
          {
            "date": "2026-06-21",
            "count": 3
          },
          {
            "date": "2026-06-22",
            "count": 5
          },
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-24",
            "count": 5
          },
          {
            "date": "2026-06-25",
            "count": 8
          },
          {
            "date": "2026-06-26",
            "count": 5
          },
          {
            "date": "2026-06-27",
            "count": 2
          },
          {
            "date": "2026-06-28",
            "count": 5
          },
          {
            "date": "2026-06-29",
            "count": 2
          },
          {
            "date": "2026-06-30",
            "count": 3
          },
          {
            "date": "2026-07-01",
            "count": 4
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 3
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 4
          },
          {
            "date": "2026-07-06",
            "count": 2
          },
          {
            "date": "2026-07-07",
            "count": 5
          },
          {
            "date": "2026-07-08",
            "count": 3
          },
          {
            "date": "2026-07-09",
            "count": 3
          },
          {
            "date": "2026-07-10",
            "count": 2
          },
          {
            "date": "2026-07-11",
            "count": 4
          },
          {
            "date": "2026-07-12",
            "count": 2
          },
          {
            "date": "2026-07-13",
            "count": 4
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 4
          },
          {
            "date": "2026-07-16",
            "count": 4
          },
          {
            "date": "2026-07-17",
            "count": 6
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 2
          },
          {
            "date": "2026-07-21",
            "count": 3
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_stars": 17109
      },
      "open_issues_and_prs": 326
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "doc/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 104256,
      "source_files_sampled": 694,
      "oversized_source_files": 8,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "benchmarks/pyproject.toml",
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 1,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 39,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "asv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cairocffi",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "changelist",
            "direct": false,
            "version": "0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "contextily",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "hiveplotlib",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "igraph",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "intersphinx-registry",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "iplotx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "momepy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mypy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "myst-nb",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "numpydoc",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "osmnx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "py-rattler",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pydata-sphinx-theme",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pydot",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pygraphviz",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mpl",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-randomly",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "seaborn",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx-gallery",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "texext",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 40,
        "direct_count": 0,
        "indirect_count": 40
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 182,
        "merged_prs": 3501,
        "open_issues": 144,
        "closed_ratio": 0.958,
        "closed_issues": 3250,
        "closed_unmerged_prs": 1030
      },
      "bus_factor": 3,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "hagberg",
          "commits": 2396,
          "avatar_url": "https://avatars.githubusercontent.com/u/187875?v=4"
        },
        {
          "type": "User",
          "login": "dschult",
          "commits": 824,
          "avatar_url": "https://avatars.githubusercontent.com/u/915037?v=4"
        },
        {
          "type": "User",
          "login": "jarrodmillman",
          "commits": 727,
          "avatar_url": "https://avatars.githubusercontent.com/u/123428?v=4"
        },
        {
          "type": "User",
          "login": "rossbar",
          "commits": 497,
          "avatar_url": "https://avatars.githubusercontent.com/u/1268991?v=4"
        },
        {
          "type": "User",
          "login": "chebee7i",
          "commits": 400,
          "avatar_url": "https://avatars.githubusercontent.com/u/326005?v=4"
        },
        {
          "type": "User",
          "login": "ysitu",
          "commits": 292,
          "avatar_url": "https://avatars.githubusercontent.com/u/7018196?v=4"
        },
        {
          "type": "User",
          "login": "MridulS",
          "commits": 246,
          "avatar_url": "https://avatars.githubusercontent.com/u/5363860?v=4"
        },
        {
          "type": "User",
          "login": "jtorrents",
          "commits": 206,
          "avatar_url": "https://avatars.githubusercontent.com/u/1184374?v=4"
        },
        {
          "type": "User",
          "login": "jfinkels",
          "commits": 152,
          "avatar_url": "https://avatars.githubusercontent.com/u/121755?v=4"
        },
        {
          "type": "User",
          "login": "eriknw",
          "commits": 98,
          "avatar_url": "https://avatars.githubusercontent.com/u/2058401?v=4"
        }
      ],
      "contributors_sampled": 99,
      "top_contributor_share": 0.345
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "benchmark.yml",
        "circleci.yml",
        "deploy-docs.yml",
        "lint.yml",
        "milestone-merged-prs.yaml",
        "mypy.yml",
        "nightly-release-test.yml",
        "nightly.yml",
        "pytest-randomly.yml",
        "release.yml",
        "test.yml",
        "weekly-dispatch.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/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 70 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": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "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 11 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": 7,
            "reason": "dependency not pinned by hash detected -- score normalized to 7",
            "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": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e6dda2927abffecb7f5328b0905331bb158c6cfb",
        "ran_at": "2026-07-22T01:51:29Z",
        "aggregate_score": 7.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T00:46:12Z",
      "oldest_open_prs": [
        {
          "number": 1031,
          "created_at": "2013-12-11T06:13:20Z",
          "last_comment_at": "2014-03-12T00:43:51Z",
          "last_comment_author": "nadesai"
        },
        {
          "number": 1464,
          "created_at": "2015-04-19T04:24:43Z",
          "last_comment_at": "2015-05-03T18:16:24Z",
          "last_comment_author": "jtorrents"
        },
        {
          "number": 1560,
          "created_at": "2015-06-03T08:17:51Z",
          "last_comment_at": "2015-09-14T15:15:07Z",
          "last_comment_author": "jfinkels"
        },
        {
          "number": 1573,
          "created_at": "2015-06-09T03:10:16Z",
          "last_comment_at": "2015-07-21T20:35:08Z",
          "last_comment_author": "bbphd"
        },
        {
          "number": 1618,
          "created_at": "2015-06-21T02:33:06Z",
          "last_comment_at": "2015-06-21T22:12:37Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 1737,
          "created_at": "2015-08-13T06:47:24Z",
          "last_comment_at": "2015-11-11T17:41:07Z",
          "last_comment_author": "jfinkels"
        },
        {
          "number": 2053,
          "created_at": "2016-03-30T15:48:22Z",
          "last_comment_at": "2016-04-08T02:09:43Z",
          "last_comment_author": "jtorrents"
        },
        {
          "number": 2117,
          "created_at": "2016-05-03T13:05:47Z",
          "last_comment_at": "2016-05-17T10:41:19Z",
          "last_comment_author": "Loveuse"
        },
        {
          "number": 2153,
          "created_at": "2016-06-01T17:44:41Z",
          "last_comment_at": "2016-06-06T02:16:50Z",
          "last_comment_author": "jfinkels"
        },
        {
          "number": 2316,
          "created_at": "2016-11-22T07:47:39Z",
          "last_comment_at": "2016-12-15T21:48:22Z",
          "last_comment_author": "jfinkels"
        },
        {
          "number": 3084,
          "created_at": "2018-07-24T09:32:43Z",
          "last_comment_at": "2018-07-25T22:45:49Z",
          "last_comment_author": "mohdkashif93"
        },
        {
          "number": 3248,
          "created_at": "2018-11-17T11:31:56Z",
          "last_comment_at": "2018-12-04T17:41:51Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3393,
          "created_at": "2019-04-16T16:42:36Z",
          "last_comment_at": "2019-09-08T02:39:27Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3792,
          "created_at": "2020-01-23T15:24:32Z",
          "last_comment_at": "2020-01-25T17:18:19Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3817,
          "created_at": "2020-02-07T15:30:39Z",
          "last_comment_at": "2020-02-07T20:02:31Z",
          "last_comment_author": "Matt-HJ-Bailey"
        },
        {
          "number": 3870,
          "created_at": "2020-03-18T15:46:38Z",
          "last_comment_at": "2021-05-20T05:44:34Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3873,
          "created_at": "2020-03-20T22:30:15Z",
          "last_comment_at": "2020-10-04T18:31:52Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3897,
          "created_at": "2020-04-06T17:29:32Z",
          "last_comment_at": "2020-07-05T21:47:29Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3923,
          "created_at": "2020-04-16T20:50:46Z",
          "last_comment_at": "2020-07-05T20:22:54Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3978,
          "created_at": "2020-05-28T17:54:37Z",
          "last_comment_at": "2020-05-29T09:24:36Z",
          "last_comment_author": "iandreafc"
        }
      ],
      "last_merged_pr_at": "2026-07-18T13:37:19Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 2986,
          "created_at": "2018-05-24T13:10:41Z",
          "last_comment_at": "2018-05-24T16:05:59Z",
          "last_comment_author": "wuhaochen"
        },
        {
          "number": 3010,
          "created_at": "2018-06-13T12:52:02Z",
          "last_comment_at": "2020-10-20T12:15:35Z",
          "last_comment_author": "jamestrimble"
        },
        {
          "number": 3063,
          "created_at": "2018-07-11T21:06:04Z",
          "last_comment_at": "2021-03-25T14:07:08Z",
          "last_comment_author": "vadyushkins"
        },
        {
          "number": 3213,
          "created_at": "2018-10-27T17:39:48Z",
          "last_comment_at": "2019-10-07T07:38:41Z",
          "last_comment_author": "mohdkashif93"
        },
        {
          "number": 3239,
          "created_at": "2018-11-13T11:34:20Z",
          "last_comment_at": "2022-06-28T19:23:32Z",
          "last_comment_author": "rossbar"
        },
        {
          "number": 3344,
          "created_at": "2019-03-14T22:16:09Z",
          "last_comment_at": "2020-06-28T18:28:58Z",
          "last_comment_author": "hagberg"
        },
        {
          "number": 3467,
          "created_at": "2019-06-05T16:15:40Z",
          "last_comment_at": "2019-07-06T11:54:24Z",
          "last_comment_author": "dschult"
        },
        {
          "number": 3518,
          "created_at": "2019-07-19T17:36:40Z",
          "last_comment_at": "2019-07-19T19:33:16Z",
          "last_comment_author": "Johannes-S"
        },
        {
          "number": 3657,
          "created_at": "2019-10-16T17:29:07Z",
          "last_comment_at": "2020-02-25T16:56:27Z",
          "last_comment_author": "cshjin"
        },
        {
          "number": 3729,
          "created_at": "2019-11-20T17:32:33Z",
          "last_comment_at": "2022-04-01T13:00:22Z",
          "last_comment_author": "kpetridis24"
        },
        {
          "number": 3745,
          "created_at": "2019-12-10T11:22:11Z",
          "last_comment_at": "2021-07-05T11:06:19Z",
          "last_comment_author": "aaronzo"
        },
        {
          "number": 3820,
          "created_at": "2020-02-14T12:52:41Z",
          "last_comment_at": "2022-06-28T16:47:39Z",
          "last_comment_author": "rossbar"
        },
        {
          "number": 3825,
          "created_at": "2020-02-20T15:33:34Z",
          "last_comment_at": "2021-03-11T20:17:28Z",
          "last_comment_author": "jiedxu"
        },
        {
          "number": 3834,
          "created_at": "2020-02-24T23:05:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 3899,
          "created_at": "2020-04-06T17:34:13Z",
          "last_comment_at": "2021-01-21T06:10:41Z",
          "last_comment_author": "AbhayGoyal"
        },
        {
          "number": 3994,
          "created_at": "2020-06-10T19:12:29Z",
          "last_comment_at": "2023-12-19T09:10:06Z",
          "last_comment_author": "NeilGirdhar"
        },
        {
          "number": 3995,
          "created_at": "2020-06-10T19:19:40Z",
          "last_comment_at": "2023-05-26T21:37:21Z",
          "last_comment_author": "mattall"
        },
        {
          "number": 3997,
          "created_at": "2020-06-11T16:10:53Z",
          "last_comment_at": "2022-02-12T18:55:19Z",
          "last_comment_author": "rossbar"
        },
        {
          "number": 4021,
          "created_at": "2020-06-25T03:27:56Z",
          "last_comment_at": "2020-07-05T23:20:51Z",
          "last_comment_author": "joelmiller"
        },
        {
          "number": 4023,
          "created_at": "2020-06-25T19:35:51Z",
          "last_comment_at": "2020-10-28T19:45:02Z",
          "last_comment_author": "dschult"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/networkx/networkx",
    "host": "github.com",
    "name": "networkx",
    "owner": "networkx"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 86,
      "inputs": {
        "security": 82,
        "vitality": 87,
        "community": 89,
        "governance": 80,
        "engineering": 92
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "commits_last_year": 323,
              "human_commit_share": 0.96,
              "days_since_last_push": 3,
              "active_weeks_last_year": 51
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "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": "323 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 323
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": "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": 70,
            "inputs": {
              "releases_count": 65,
              "latest_release_tag": "networkx-3.6.1",
              "releases_from_tags": false,
              "days_since_latest_release": 225,
              "mean_days_between_releases": 67.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "65 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 65
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 225 days ago",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 225
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~67.9 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 67.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 3,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 3 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 89,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "forks": 3561,
              "stars": 17109,
              "watchers": 272,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "17,109 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 17109
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3,561 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3561
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "272 watchers",
                "points": 13.5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 272
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 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": 6.3,
                "status": "met",
                "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": 100,
            "inputs": {
              "packages": [
                "networkx"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 277214053
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "277,214,053 downloads/month across pypi",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 277214053,
                      "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": "good",
        "name": "Sustainability & Governance",
        "value": 80,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "bus_factor": 3,
              "contributors_sampled": 99,
              "top_contributor_share": 0.345
            },
            "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 34% of commits",
                "points": 14.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 34
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "99 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 70 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 89,
            "inputs": {
              "merged_prs": 3501,
              "open_issues": 144,
              "closed_issues": 3250,
              "issue_closed_ratio": 0.958,
              "closed_unmerged_prs": 1030
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "96% of issues closed",
                "points": 44.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "3501/4531 decided PRs merged",
                "points": 29.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 3501,
                      "decided": 4531
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "followers": 449,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "networkx",
              "public_repos": 17,
              "account_age_days": 5798
            },
            "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": "449 followers of networkx",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 449,
                      "login": "networkx"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~15 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 15
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "packages": [
                "networkx"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 225
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 225 days ago",
                "points": 26,
                "status": "partial",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 225
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "85 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 85
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 92,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "12 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "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": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "python",
                "complex-networks",
                "graph-theory",
                "graph-algorithms",
                "graph-analysis",
                "graph-generation",
                "graph-visualization"
              ],
              "has_wiki": false,
              "homepage": "https://networkx.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://networkx.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": "7 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 82,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "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": 78,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 7.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "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 70 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 fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 11 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 7",
                "points": 3.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file 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": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 1 resolved dependencies against OSV; 39 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": 1
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 39
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 1,
              "unassessed_packages": 39,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 1,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 52,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.979,
              "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": "94 of 96 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "doc/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.04
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "doc/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "doc/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "4 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 4,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 7",
                "points": 7,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 104256,
              "source_files_sampled": 694,
              "oversized_source_files": 8
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "8/694 source files over 60KB",
                "points": 54.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 694,
                      "oversized": 8
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [],
  "report_type": "repository",
  "generated_at": "2026-07-22T01:51:57.445378Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/networkx/networkx.svg",
  "full_name": "networkx/networkx",
  "license_state": "custom",
  "license_spdx": null
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.26.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsPyPI.