Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-28 15:31 UTC

mlco2 / codecarbon

Track emissions from Compute and recommend ways to reduce their impact on the environment.

Python · TypeScriptMIT★ 1,887 stars⑂ 307 forkssince May 2020View on GitHub ↗

mlco2/codecarbon holds a health index of 90 out of 100, placing it in the Excellent band. It scores highest on Engineering Quality (100/100) and lowest on AI Readiness (74/100). It was last updated today. 4 contributors account for most of its recent work.

90
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.

90
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

CodeCarbonOrganization
100 followers13 public repossince Aug 2019

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

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
PyPIcodecarbon3.2.9181,657748 days ago

Metrics by category

Vitality

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

99Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
34.6/36Commit cadence — 50/52 weeks with commits
18/18Commit volume — 564 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year564
human_commit_share0.87
days_since_last_push0
active_weeks_last_year50

Release discipline

100Excellent
How it's scored
27/27Ships releases — 68 releases published
36/36Release recency — latest release 8 days ago
27/27Release cadence — a release every ~25.7 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count68
latest_release_tagv3.2.9
releases_from_tagsno
days_since_latest_release8
mean_days_between_releases25.7
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?

87Excellent · 18% of overall
How it's scored
53.1/60Stars — 1,887 stars
20.7/25Forks — 307 forks
7.8/15Watchers — 26 watchers
Inputs used
forks307
stars1,887
watchers26
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Community health

92Excellent
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
13.5/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_conductyes
has_pull_request_templateyes
How it's scored
70.1/80Monthly downloads — 181,657 downloads/month across pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagescodecarbon
dependents
ecosystemspypi
total_downloads
monthly_downloads181,657
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?

82Good · 24% of overall
How it's scored
43.2/54Bus factor — 4 contributor(s) cover half of all commits
16.7/22.5Commit distribution — top contributor authored 26% of commits
13.5/13.5Contributor breadth — 97 contributors
10/10OpenSSF Scorecard: Contributors — project has 14 contributing companies or organizations
Inputs used
bus_factor4
contributors_sampled97
top_contributor_share0.259
How it's scored
35.7/46.8Issue resolution — 76% of issues closed
32.9/38.3PR acceptance — 652/757 decided PRs merged
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Inputs used
merged_prs652
open_issues108
closed_issues350
issue_closed_ratio0.764
closed_unmerged_prs105
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
14.4/25Owner reach — 100 followers of mlco2
20.3/25Track record — 13 public repos, account ~6 yr old
Inputs used
followers100
owner_typeOrganization
is_verified
owner_loginmlco2
public_repos13
account_age_days2,541
How it's scored
25/25Published & resolvable — 1 package(s) on pypi
35/35Publish recency — latest publish 8 days ago
20/20Version history — 74 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagescodecarbon
ecosystemspypi
any_deprecatedno
min_days_since_publish8

Engineering Quality

Are baseline engineering and documentation practices in place?

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

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://docs.codecarbon.io/
10/10Repository description
10/10Topics — 8 topics
10/10Wiki
Inputs used
topicsai-ethics, carbon-emissions, carbon-footprint, co2-emissions, energy-consumption, energy-efficiency, fairness, sustainability
has_wikiyes
homepagehttps://docs.codecarbon.io/
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 — no data
2.5/2.5CI-Tests — 20 out of 20 merged PRs checked by a CI test -- score normalized to 10
0.5/2.5CII-Best-Practices — badge detected: InProgress
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 14 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 6 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
5/5SAST — SAST tool is run on all commits
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
0/7.5Vulnerabilities — 22 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate7.7
Excluded from scoring (no data or not applicable): branch_protection, signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages38
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:codecarbon@3.2.9 runtime dependency closure — what installing the published package pulls in — 38 packages. 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.

74Good · 0% of overall
How it's scored
45/45Agent instructions — .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, docs/how-to/agents.md
0/15Machine-readable docs (llms.txt)
34.3/40Legible commit history — 56 of 87 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.644
agent_instruction_files.github/copilot-instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, docs/how-to/agents.md
agent_instruction_max_bytes4,115
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.json, .flake8
11/11Static type checking — codecarbon/py.typed, webapp/tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
10/10Demonstrated agent practice — 7 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 11 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
lockfilespackage-lock.json, uv.lock
has_dockerfileyes
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configscodecarbon/py.typed, webapp/tsconfig.json
agent_commit_share0.07
toolchain_manifests
dependency_bot_commit_share0.11
How it's scored
27/45Type-checkable code — Python with type-check config (codecarbon/py.typed, webapp/tsconfig.json)
54.9/55Manageable file sizes — 1/405 source files over 60KB
Inputs used
primary_languagePython
largest_source_bytes77,721
source_files_sampled405
oversized_source_files1
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples, notebooks
Inputs used
example_dirsexamples, notebooks
has_mcp_signalno
api_schema_files

Key facts

1,887GitHub stars
97contributors
564commits, last 12 months
0days since last push
68releases
4bus factor
108open issues
npm, PyPIpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'carbonserver' from its registry

More detail

Star and fork history 0 ★ / 307 ⇿
0Stars
307Forks
66Releases

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.

012525037530572020-112023-092026-07
Major 3Minor 11Patch 46

Each point covers 6 days.

OpenSSF Scorecard 7.7 / 10
7.7aggregate

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-28 15:31 UTC

10Binary-Artifactsno binaries found in the repo
n/aBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests20 out of 20 merged PRs checked by a CI test -- score normalized to 10
2CII-Best-Practicesbadge detected: InProgress
10Code-Reviewall changesets reviewed
10Contributorsproject has 14 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 6 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
10SASTSAST tool is run on all commits
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities22 existing vulnerabilities detected
Direct dependencies 67
RegistryPackageVersion constraintManifest
PyPIalembic<2.0.0carbonserver/pyproject.toml
PyPIauthlib>=1.7.2carbonserver/pyproject.toml
PyPIbcrypt<5.0.0carbonserver/pyproject.toml
PyPIpython-dateutil<3.0.0carbonserver/pyproject.toml
PyPIdependency-injector<5.0.0carbonserver/pyproject.toml
PyPIfastapi<0.140.5,>=0.138.1carbonserver/pyproject.toml
PyPIfastapicarbonserver/pyproject.toml
PyPIhttpx2>=2.0.0carbonserver/pyproject.toml
PyPIpydantic>=2.0.0,<3.0.0carbonserver/pyproject.toml
PyPIpydantic-settings>=2.14.2,<3.0.0carbonserver/pyproject.toml
PyPIpsycopg2-binary<3.0.0carbonserver/pyproject.toml
PyPIrequests<3.0.0carbonserver/pyproject.toml
PyPIsqlalchemy<2.0.0carbonserver/pyproject.toml
PyPIuvicorn<1.0.0carbonserver/pyproject.toml
PyPIfastapi-pagination<1.0.0carbonserver/pyproject.toml
PyPInumpycarbonserver/pyproject.toml
PyPIpsutilcarbonserver/pyproject.toml
PyPIrapidfuzzcarbonserver/pyproject.toml
PyPIPyJWTcarbonserver/pyproject.toml
PyPIfastapi-oidc>=0.0.9carbonserver/pyproject.toml
PyPIauthlib>=1.6.6carbonserver/pyproject.toml
PyPIjoserfc>=1.0.0carbonserver/pyproject.toml
PyPIitsdangerous>=2.2.0carbonserver/pyproject.toml
PyPIarrowpyproject.toml
PyPIauthlib>=1.2.1pyproject.toml
PyPIjoserfc>=1.0.0pyproject.toml
PyPIclickpyproject.toml
PyPIpandas>=2.3.3pyproject.toml
PyPIpandaspyproject.toml
PyPIprometheus_clientpyproject.toml
PyPIpsutil>= 6.0.0pyproject.toml
PyPIpy-cpuinfopyproject.toml
PyPIpydantic>=2.0.0,<3.0.0pyproject.toml
PyPInvidia-ml-pypyproject.toml
PyPIrapidfuzzpyproject.toml
PyPIrequestspyproject.toml
PyPIquestionarypyproject.toml
PyPIrichpyproject.toml
PyPItyperpyproject.toml
PyPIpycountrypyproject.toml
npm@radix-ui/react-dialog^1.1.15webapp/package.json
npm@radix-ui/react-dropdown-menu^2.1.16webapp/package.json
npm@radix-ui/react-label^2.1.8webapp/package.json
npm@radix-ui/react-navigation-menu^1.2.14webapp/package.json
npm@radix-ui/react-popover^1.1.15webapp/package.json
npm@radix-ui/react-select^2.2.6webapp/package.json
npm@radix-ui/react-separator^1.1.8webapp/package.json
npm@radix-ui/react-slot^1.2.4webapp/package.json
npm@radix-ui/react-switch^1.2.6webapp/package.json
npm@radix-ui/react-tabs^1.1.13webapp/package.json
npm@radix-ui/react-tooltip^1.2.8webapp/package.json
npmclass-variance-authority^0.7.1webapp/package.json
npmclsx^2.1.1webapp/package.json
npmcopy-to-clipboard^3.3.3webapp/package.json
npmdate-fns^3.6.0webapp/package.json
npmlucide-react^0.411.0webapp/package.json
npmreact19.1.0webapp/package.json
npmreact-day-picker^9.13.0webapp/package.json
npmreact-dom19.1.0webapp/package.json
npmreact-router-dom^7.17.0webapp/package.json
npmrecharts^2.15.4webapp/package.json
npmsonner^2.0.7webapp/package.json
npmswr^2.3.8webapp/package.json
npmtailwind-merge^2.6.1webapp/package.json
npmtailwindcss^4.3.1webapp/package.json
npmtailwindcss-animate^1.0.7webapp/package.json
npmzod^3.25.76webapp/package.json
All dependencies 616

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

RegistryPackageVersionRelation
npm@radix-ui/react-dialog1.1.15direct
npm@radix-ui/react-dropdown-menu2.1.16direct
npm@radix-ui/react-label2.1.8direct
npm@radix-ui/react-navigation-menu1.2.14direct
npm@radix-ui/react-popover1.1.15direct
npm@radix-ui/react-select2.2.6direct
npm@radix-ui/react-separator1.1.8direct
npm@radix-ui/react-slot1.2.3direct
npm@radix-ui/react-slot1.2.4direct
npm@radix-ui/react-switch1.2.6direct
npm@radix-ui/react-tabs1.1.13direct
npm@radix-ui/react-tooltip1.2.8direct
npmclass-variance-authority0.7.1direct
npmclsx2.1.1direct
npmcopy-to-clipboard3.3.3direct
npmdate-fns3.6.0direct
npmdate-fns4.1.0direct
npmlucide-react0.411.0direct
npmreact19.1.0direct
npmreact-day-picker9.13.0direct
npmreact-dom19.1.0direct
npmreact-router-dom7.17.0direct
npmrecharts2.15.4direct
npmsonner2.0.7direct
npmswr2.4.0direct
npmtailwind-merge2.6.1direct
npmtailwindcss4.3.1direct
npmtailwindcss-animate1.0.7direct
npmzod3.25.76direct
PyPIalembic1.17.2direct
PyPIalembic1.18.4direct
PyPIarrow1.4.0direct
PyPIauthlib1.7.2direct
PyPIbcrypt4.3.0direct
PyPIclick8.3.1direct
PyPIclick8.4.1direct
PyPIdependency-injector4.48.2direct
PyPIdependency-injector4.49.0direct
PyPIfastapi0.138.1direct
PyPIfastapi0.140.4direct
PyPIfastapi-oidc0.0.11direct
PyPIfastapi-oidc0.0.9direct
PyPIfastapi-pagination0.15.0direct
PyPIfastapi-pagination0.15.14direct
PyPIhttpx22.9.1direct
PyPIitsdangerous2.2.0direct
PyPIjoserfc1.7.0direct
PyPInumpy2.2.6direct
PyPInumpy2.4.2direct
PyPInumpy2.4.6direct
PyPInvidia-ml-py13.610.43direct
PyPIpandas2.3.3direct
PyPIpandas3.0.3direct
PyPIprometheus-client0.25.0direct
PyPIpsutil6.1.1direct
PyPIpsutil7.2.2direct
PyPIpsycopg2-binary2.9.11direct
PyPIpsycopg2-binary2.9.12direct
PyPIpy-cpuinfo9.0.0direct
PyPIpycountry26.2.16direct
PyPIpydantic2.12.5direct
PyPIpydantic2.13.4direct
PyPIpydantic-settings2.14.2direct
PyPIpyjwt2.13.0direct
PyPIpython-dateutil2.9.0.post0direct
PyPIquestionary2.1.1direct
PyPIrapidfuzz3.14.3direct
PyPIrapidfuzz3.14.5direct
PyPIrequests2.33.1direct
PyPIrequests2.34.2direct
PyPIrich14.2.0direct
PyPIrich15.0.0direct
PyPIsqlalchemy1.4.54direct
PyPItyper0.20.0direct
PyPItyper0.26.7direct
PyPIuvicorn0.38.0direct
PyPIuvicorn0.49.0direct
npm@adobe/css-tools4.5.0indirect
npm@alloc/quick-lru5.2.0indirect
npm@asamuzakjp/css-color3.2.0indirect
npm@babel/code-frame7.29.0indirect
npm@babel/helper-validator-identifier7.28.5indirect
npm@babel/runtime7.28.6indirect
npm@csstools/color-helpers5.1.0indirect
npm@csstools/css-calc2.1.4indirect
npm@csstools/css-color-parser3.1.0indirect
npm@csstools/css-parser-algorithms3.0.5indirect
npm@csstools/css-tokenizer3.0.4indirect
npm@date-fns/tz1.4.1indirect
npm@emnapi/core1.10.0indirect
npm@emnapi/runtime1.10.0indirect
npm@emnapi/wasi-threads1.2.1indirect
npm@eslint-community/eslint-utils4.9.1indirect
npm@eslint-community/regexpp4.12.2indirect
npm@eslint/config-array0.21.1indirect
npm@eslint/config-helpers0.4.2indirect
npm@eslint/core0.17.0indirect
npm@eslint/eslintrc3.3.3indirect
npm@eslint/js9.39.2indirect
npm@eslint/object-schema2.1.7indirect
npm@eslint/plugin-kit0.4.1indirect
npm@floating-ui/core1.7.4indirect
npm@floating-ui/dom1.7.5indirect
npm@floating-ui/react-dom2.1.7indirect
npm@floating-ui/utils0.2.10indirect
npm@humanfs/core0.19.1indirect
npm@humanfs/node0.16.7indirect
npm@humanwhocodes/module-importer1.0.1indirect
npm@humanwhocodes/retry0.4.3indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/remapping2.3.5indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@napi-rs/wasm-runtime1.1.4indirect
npm@napi-rs/wasm-runtime1.1.5indirect
npm@oxc-project/types0.133.0indirect
npm@playwright/test1.60.0indirect
npm@radix-ui/number1.1.1indirect
npm@radix-ui/primitive1.1.3indirect
npm@radix-ui/react-arrow1.1.7indirect
npm@radix-ui/react-collection1.1.7indirect
npm@radix-ui/react-compose-refs1.1.2indirect
npm@radix-ui/react-context1.1.2indirect
npm@radix-ui/react-direction1.1.1indirect
npm@radix-ui/react-dismissable-layer1.1.11indirect
npm@radix-ui/react-focus-guards1.1.3indirect
npm@radix-ui/react-focus-scope1.1.7indirect
npm@radix-ui/react-id1.1.1indirect
npm@radix-ui/react-menu2.1.16indirect
npm@radix-ui/react-popper1.2.8indirect
npm@radix-ui/react-portal1.1.9indirect
npm@radix-ui/react-presence1.1.5indirect
npm@radix-ui/react-primitive2.1.3indirect
npm@radix-ui/react-primitive2.1.4indirect
npm@radix-ui/react-roving-focus1.1.11indirect
npm@radix-ui/react-use-callback-ref1.1.1indirect
npm@radix-ui/react-use-controllable-state1.2.2indirect
npm@radix-ui/react-use-effect-event0.0.2indirect
npm@radix-ui/react-use-escape-keydown1.1.1indirect
npm@radix-ui/react-use-layout-effect1.1.1indirect
npm@radix-ui/react-use-previous1.1.1indirect
npm@radix-ui/react-use-rect1.1.1indirect
npm@radix-ui/react-use-size1.1.1indirect
npm@radix-ui/react-visually-hidden1.2.3indirect
npm@radix-ui/rect1.1.1indirect
npm@rolldown/binding-android-arm641.0.3indirect
npm@rolldown/binding-darwin-arm641.0.3indirect
npm@rolldown/binding-darwin-x641.0.3indirect
npm@rolldown/binding-freebsd-x641.0.3indirect
npm@rolldown/binding-linux-arm-gnueabihf1.0.3indirect
npm@rolldown/binding-linux-arm64-gnu1.0.3indirect
npm@rolldown/binding-linux-arm64-musl1.0.3indirect
npm@rolldown/binding-linux-ppc64-gnu1.0.3indirect
npm@rolldown/binding-linux-s390x-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-musl1.0.3indirect
npm@rolldown/binding-openharmony-arm641.0.3indirect
npm@rolldown/binding-wasm32-wasi1.0.3indirect
npm@rolldown/binding-win32-arm64-msvc1.0.3indirect
npm@rolldown/binding-win32-x64-msvc1.0.3indirect
npm@rolldown/pluginutils1.0.1indirect
npm@standard-schema/spec1.1.0indirect
npm@tailwindcss/node4.3.1indirect
npm@tailwindcss/oxide4.3.1indirect
npm@tailwindcss/oxide-android-arm644.3.1indirect
npm@tailwindcss/oxide-darwin-arm644.3.1indirect
npm@tailwindcss/oxide-darwin-x644.3.1indirect
npm@tailwindcss/oxide-freebsd-x644.3.1indirect
npm@tailwindcss/oxide-linux-arm-gnueabihf4.3.1indirect
npm@tailwindcss/oxide-linux-arm64-gnu4.3.1indirect
npm@tailwindcss/oxide-linux-arm64-musl4.3.1indirect
npm@tailwindcss/oxide-linux-x64-gnu4.3.1indirect
npm@tailwindcss/oxide-linux-x64-musl4.3.1indirect
npm@tailwindcss/oxide-wasm32-wasi4.3.1indirect
npm@tailwindcss/oxide-win32-arm64-msvc4.3.1indirect
npm@tailwindcss/oxide-win32-x64-msvc4.3.1indirect
npm@tailwindcss/postcss4.3.1indirect
npm@testing-library/dom10.4.1indirect
npm@testing-library/jest-dom6.9.1indirect
npm@testing-library/react16.3.2indirect
npm@testing-library/user-event14.6.1indirect
npm@tybys/wasm-util0.10.2indirect
npm@types/aria-query5.0.4indirect
npm@types/chai5.2.3indirect
npm@types/d3-array3.2.2indirect
npm@types/d3-color3.1.3indirect
npm@types/d3-ease3.0.2indirect
npm@types/d3-interpolate3.0.4indirect
npm@types/d3-path3.1.1indirect
npm@types/d3-scale4.0.9indirect
npm@types/d3-shape3.1.8indirect
npm@types/d3-time3.0.4indirect
npm@types/d3-timer3.0.2indirect
npm@types/deep-eql4.0.2indirect
npm@types/estree1.0.8indirect
npm@types/json-schema7.0.15indirect
npm@types/node20.19.30indirect
npm@types/react19.1.0indirect
npm@types/react-dom19.1.1indirect
npm@vitejs/plugin-react6.0.2indirect
npm@vitest/expect4.1.8indirect
npm@vitest/mocker4.1.8indirect
npm@vitest/pretty-format4.1.8indirect
npm@vitest/runner4.1.8indirect
npm@vitest/snapshot4.1.8indirect
npm@vitest/spy4.1.8indirect
npm@vitest/utils4.1.8indirect
npmacorn8.15.0indirect
npmacorn-jsx5.3.2indirect
npmagent-base7.1.4indirect
npmajv6.12.6indirect
npmansi-regex5.0.1indirect
npmansi-styles4.3.0indirect
npmansi-styles5.2.0indirect
npmargparse2.0.1indirect
npmaria-hidden1.2.6indirect
npmaria-query5.3.0indirect
npmaria-query5.3.2indirect
npmassertion-error2.0.1indirect
npmasynckit0.4.0indirect
npmbalanced-match1.0.2indirect
npmbrace-expansion1.1.12indirect
npmcall-bind-apply-helpers1.0.2indirect
npmcallsites3.1.0indirect
npmchai6.2.2indirect
npmchalk4.1.2indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcombined-stream1.0.8indirect
npmconcat-map0.0.1indirect
npmconvert-source-map2.0.0indirect
npmcookie1.1.1indirect
npmcross-spawn7.0.6indirect
npmcss.escape1.5.1indirect
npmcssstyle4.6.0indirect
npmcsstype3.2.3indirect
npmd3-array3.2.4indirect
npmd3-color3.1.0indirect
npmd3-ease3.0.1indirect
npmd3-format3.1.2indirect
npmd3-interpolate3.0.1indirect
npmd3-path3.1.0indirect
npmd3-scale4.0.2indirect
npmd3-shape3.2.0indirect
npmd3-time3.1.0indirect
npmd3-time-format4.1.0indirect
npmd3-timer3.0.1indirect
npmdata-urls5.0.0indirect
npmdate-fns-jalali4.1.0-0indirect
npmdebug4.4.3indirect
npmdecimal.js10.6.0indirect
npmdecimal.js-light2.5.1indirect
npmdeep-is0.1.4indirect
npmdelayed-stream1.0.0indirect
npmdequal2.0.3indirect
npmdetect-libc2.1.2indirect
npmdetect-node-es1.1.0indirect
npmdom-accessibility-api0.5.16indirect
npmdom-accessibility-api0.6.3indirect
npmdom-helpers5.2.1indirect
npmdunder-proto1.0.1indirect
npmenhanced-resolve5.21.6indirect
npmentities6.0.1indirect
npmes-define-property1.0.1indirect
npmes-errors1.3.0indirect
npmes-module-lexer2.1.0indirect
npmes-object-atoms1.1.1indirect
npmes-set-tostringtag2.1.0indirect
npmescape-string-regexp4.0.0indirect
npmeslint9.39.2indirect
npmeslint-config-prettier9.1.2indirect
npmeslint-scope8.4.0indirect
npmeslint-visitor-keys3.4.3indirect
npmeslint-visitor-keys4.2.1indirect
npmespree10.4.0indirect
npmesquery1.7.0indirect
npmesrecurse4.3.0indirect
npmestraverse5.3.0indirect
npmestree-walker3.0.3indirect
npmesutils2.0.3indirect
npmeventemitter34.0.7indirect
npmexpect-type1.3.0indirect
npmfast-deep-equal3.1.3indirect
npmfast-equals5.4.0indirect
npmfast-json-stable-stringify2.1.0indirect
npmfast-levenshtein2.0.6indirect
npmfdir6.5.0indirect
npmfile-entry-cache8.0.0indirect
npmfind-up5.0.0indirect
npmflat-cache4.0.1indirect
npmflatted3.4.2indirect
npmform-data4.0.6indirect
npmfsevents2.3.2indirect
npmfsevents2.3.3indirect
npmfunction-bind1.1.2indirect
npmget-intrinsic1.3.0indirect
npmget-nonce1.0.1indirect
npmget-proto1.0.1indirect
npmglob-parent6.0.2indirect
npmglobals14.0.0indirect
npmgopd1.2.0indirect
npmgraceful-fs4.2.11indirect
npmhas-flag4.0.0indirect
npmhas-symbols1.1.0indirect
npmhas-tostringtag1.0.2indirect
npmhasown2.0.4indirect
npmhtml-encoding-sniffer4.0.0indirect
npmhttp-proxy-agent7.0.2indirect
npmhttps-proxy-agent7.0.6indirect
npmiconv-lite0.6.3indirect
npmignore5.3.2indirect
npmimport-fresh3.3.1indirect
npmimurmurhash0.1.4indirect
npmindent-string4.0.0indirect
npminternmap2.0.3indirect
npmis-extglob2.1.1indirect
npmis-glob4.0.3indirect
npmis-potential-custom-element-name1.0.1indirect
npmisexe2.0.0indirect
npmjiti2.7.0indirect
npmjs-tokens4.0.0indirect
npmjs-yaml4.2.0indirect
npmjsdom25.0.1indirect
npmjson-buffer3.0.1indirect
npmjson-schema-traverse0.4.1indirect
npmjson-stable-stringify-without-jsonify1.0.1indirect
npmkeyv4.5.4indirect
npmlevn0.4.1indirect
npmlightningcss1.32.0indirect
npmlightningcss-android-arm641.32.0indirect
npmlightningcss-darwin-arm641.32.0indirect
npmlightningcss-darwin-x641.32.0indirect
npmlightningcss-freebsd-x641.32.0indirect
npmlightningcss-linux-arm-gnueabihf1.32.0indirect
npmlightningcss-linux-arm64-gnu1.32.0indirect
npmlightningcss-linux-arm64-musl1.32.0indirect
npmlightningcss-linux-x64-gnu1.32.0indirect
npmlightningcss-linux-x64-musl1.32.0indirect
npmlightningcss-win32-arm64-msvc1.32.0indirect
npmlightningcss-win32-x64-msvc1.32.0indirect
npmlocate-path6.0.0indirect
npmlodash4.18.1indirect
npmlodash.merge4.6.2indirect
npmloose-envify1.4.0indirect
npmlru-cache10.4.3indirect
npmlz-string1.5.0indirect
npmmagic-string0.30.21indirect
npmmath-intrinsics1.1.0indirect
npmmime-db1.52.0indirect
npmmime-types2.1.35indirect
npmmin-indent1.0.1indirect
npmminimatch3.1.5indirect
npmms2.1.3indirect
npmnanoid3.3.12indirect
npmnatural-compare1.4.0indirect
npmnwsapi2.2.23indirect
npmobject-assign4.1.1indirect
npmobug2.1.3indirect
npmoptionator0.9.4indirect
npmp-limit3.1.0indirect
npmp-locate5.0.0indirect
npmparent-module1.0.1indirect
npmparse57.3.0indirect
npmpath-exists4.0.0indirect
npmpath-key3.1.1indirect
npmpathe2.0.3indirect
npmpicocolors1.1.1indirect
npmpicomatch4.0.4indirect
npmplaywright1.60.0indirect
npmplaywright-core1.60.0indirect
npmpostcss8.5.15indirect
npmprelude-ls1.2.1indirect
npmprettier3.3.3indirect
npmpretty-format27.5.1indirect
npmprop-types15.8.1indirect
npmpunycode2.3.1indirect
npmreact-is16.13.1indirect
npmreact-is17.0.2indirect
npmreact-is18.3.1indirect
npmreact-remove-scroll2.7.2indirect
npmreact-remove-scroll-bar2.3.8indirect
npmreact-router7.17.0indirect
npmreact-smooth4.0.4indirect
npmreact-style-singleton2.2.3indirect
npmreact-transition-group4.4.5indirect
npmrecharts-scale0.4.5indirect
npmredent3.0.0indirect
npmresolve-from4.0.0indirect
npmrolldown1.0.3indirect
npmrrweb-cssom0.7.1indirect
npmrrweb-cssom0.8.0indirect
npmsafer-buffer2.1.2indirect
npmsaxes6.0.0indirect
npmscheduler0.26.0indirect
npmset-cookie-parser2.7.2indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmsiginfo2.0.0indirect
npmsource-map-js1.2.1indirect
npmstackback0.0.2indirect
npmstd-env4.1.0indirect
npmstrip-indent3.0.0indirect
npmstrip-json-comments3.1.1indirect
npmsupports-color7.2.0indirect
npmsymbol-tree3.2.4indirect
npmtapable2.3.3indirect
npmtiny-invariant1.3.3indirect
npmtinybench2.9.0indirect
npmtinyexec1.2.4indirect
npmtinyglobby0.2.17indirect
npmtinyrainbow3.1.0indirect
npmtldts6.1.86indirect
npmtldts-core6.1.86indirect
npmtoggle-selection1.0.6indirect
npmtough-cookie5.1.2indirect
npmtr465.1.1indirect
npmtslib2.8.1indirect
npmtype-check0.4.0indirect
npmtypescript5.9.3indirect
npmundici-types6.21.0indirect
npmuri-js4.4.1indirect
npmuse-callback-ref1.3.3indirect
npmuse-sidecar1.1.3indirect
npmuse-sync-external-store1.6.0indirect
npmvictory-vendor36.9.2indirect
npmvite8.0.16indirect
npmvitest4.1.8indirect
npmw3c-xmlserializer5.0.0indirect
npmwebidl-conversions7.0.0indirect
npmwhatwg-encoding3.1.1indirect
npmwhatwg-mimetype4.0.0indirect
npmwhatwg-url14.2.0indirect
npmwhich2.0.2indirect
npmwhy-is-node-running2.3.0indirect
npmword-wrap1.2.5indirect
npmws8.21.1indirect
npmxml-name-validator5.0.0indirect
npmxmlchars2.2.0indirect
npmyocto-queue0.1.0indirect
PyPIannotated-doc0.0.4indirect
PyPIannotated-types0.7.0indirect
PyPIanyio4.12.0indirect
PyPIanyio4.13.0indirect
PyPIast-serialize0.5.0indirect
PyPIattrs26.1.0indirect
PyPIbeautifulsoup44.14.3indirect
PyPIblack26.5.1indirect
PyPIblinker1.9.0indirect
PyPIbumpver2026.1132indirect
PyPIcachetools6.2.3indirect
PyPIcachetools7.1.4indirect
PyPIcarbonserver0.1.0indirect
PyPIcertifi2025.11.12indirect
PyPIcertifi2026.5.20indirect
PyPIcffi2.0.0indirect
PyPIcfgv3.5.0indirect
PyPIcharset-normalizer3.4.4indirect
PyPIcharset-normalizer3.4.7indirect
PyPIcolorama0.4.6indirect
PyPIcoverage7.14.1indirect
PyPIcryptography48.0.0indirect
PyPIcryptography48.0.1indirect
PyPIdash4.2.0indirect
PyPIdash-bootstrap-components2.0.4indirect
PyPIdeepmerge2.0indirect
PyPIdetect-installer0.1.0indirect
PyPIdistlib0.4.1indirect
PyPIdnspython2.8.0indirect
PyPIecdsa0.19.2indirect
PyPIemail-validator2.3.0indirect
PyPIexceptiongroup1.3.1indirect
PyPIexecuting2.2.1indirect
PyPIfastapi-cli0.0.24indirect
PyPIfastapi-cloud-cli0.19.0indirect
PyPIfastapi-cloud-cli0.7.0indirect
PyPIfastar0.11.0indirect
PyPIfastar0.9.0indirect
PyPIfilelock3.29.1indirect
PyPIfire0.7.1indirect
PyPIflask3.1.3indirect
PyPIghp-import2.1.0indirect
PyPIgoogleapis-common-protos1.75.0indirect
PyPIgreenlet3.5.1indirect
PyPIgriffelib2.0.2indirect
PyPIh110.16.0indirect
PyPIhttpcore1.0.9indirect
PyPIhttpcore22.9.1indirect
PyPIhttptools0.7.1indirect
PyPIhttptools0.8.0indirect
PyPIhttpx0.27.2indirect
PyPIhttpx0.28.1indirect
PyPIidentify2.6.19indirect
PyPIidna3.18indirect
PyPIimportlib-metadata9.0.0indirect
PyPIiniconfig2.3.0indirect
PyPIjanus2.0.0indirect
PyPIjinja23.1.6indirect
PyPIjoblib1.5.3indirect
PyPIjsonschema4.26.0indirect
PyPIjsonschema-specifications2025.9.1indirect
PyPIkeras-tunerindirect
PyPIlexid2021.1006indirect
PyPIlibrt0.11.0indirect
PyPIlogfire4.35.0indirect
PyPImako1.3.10indirect
PyPImako1.3.12indirect
PyPImarkdown3.10.2indirect
PyPImarkdown-it-py4.0.0indirect
PyPImarkdown-it-py4.2.0indirect
PyPImarkupsafe3.0.3indirect
PyPImdurl0.1.2indirect
PyPImergedeep1.3.4indirect
PyPImike2.2.0indirect
PyPImkdocs1.6.1indirect
PyPImkdocs-autorefs1.4.4indirect
PyPImkdocs-get-deps0.2.2indirect
PyPImkdocs-redirects1.2.3indirect
PyPImkdocstrings1.0.4indirect
PyPImkdocstrings-python2.0.4indirect
PyPImktestdocs0.2.5indirect
PyPImock5.2.0indirect
PyPImslex1.3.0indirect
PyPImypy2.1.0indirect
PyPImypy-extensions1.1.0indirect
PyPInarwhals2.22.1indirect
PyPInest-asyncio1.6.0indirect
PyPInodeenv1.10.0indirect
PyPIopentelemetry-api1.42.1indirect
PyPIopentelemetry-exporter-otlp-proto-common1.42.1indirect
PyPIopentelemetry-exporter-otlp-proto-http1.42.1indirect
PyPIopentelemetry-instrumentation0.63b1indirect
PyPIopentelemetry-proto1.42.1indirect
PyPIopentelemetry-sdk1.42.1indirect
PyPIopentelemetry-semantic-conventions0.63b1indirect
PyPIpackaging26.2indirect
PyPIpathspec1.1.1indirect
PyPIplatformdirs4.10.0indirect
PyPIplotly6.8.0indirect
PyPIpluggy1.6.0indirect
PyPIpre-commit4.6.0indirect
PyPIprompt-toolkit3.0.52indirect
PyPIproperdocs1.6.7indirect
PyPIprotobuf6.33.6indirect
PyPIpyasn10.6.3indirect
PyPIpycparser2.23indirect
PyPIpycparser3.0indirect
PyPIpydantic-core2.41.5indirect
PyPIpydantic-core2.46.4indirect
PyPIpydantic-extra-types2.11.1indirect
PyPIpygments2.19.2indirect
PyPIpygments2.20.0indirect
PyPIpymdown-extensions10.21.3indirect
PyPIpyparsing3.3.2indirect
PyPIpytest9.0.3indirect
PyPIpytest-asyncio1.4.0indirect
PyPIpytest-cov7.1.0indirect
PyPIpython-discovery1.4.0indirect
PyPIpython-dotenv1.2.2indirect
PyPIpython-jose3.5.0indirect
PyPIpython-multipart0.0.31indirect
PyPIpython-multipart0.0.32indirect
PyPIpytokens0.4.1indirect
PyPIpytz2026.2indirect
PyPIpyyaml6.0.3indirect
PyPIpyyaml-env-tag1.1indirect
PyPIreferencing0.37.0indirect
PyPIrequests-mock1.12.1indirect
PyPIresponses0.26.1indirect
PyPIretrying1.4.2indirect
PyPIrich-toolkit0.19.7indirect
PyPIrich-toolkit0.20.1indirect
PyPIrignore0.7.6indirect
PyPIrpds-py0.30.0indirect
PyPIrpds-py2026.5.1indirect
PyPIrsa4.9.1indirect
PyPIruff0.15.16indirect
PyPIscikit-learn1.7.2indirect
PyPIscikit-learn1.9.0indirect
PyPIscipy1.15.3indirect
PyPIscipy1.17.1indirect
PyPIsentry-sdk2.56.0indirect
PyPIsentry-sdk2.61.1indirect
PyPIsetuptools82.0.1indirect
PyPIshellingham1.5.4indirect
PyPIsix1.17.0indirect
PyPIsklearnindirect
PyPIsniffio1.3.1indirect
PyPIsoupsieve2.8.4indirect
PyPIstarlette1.3.1indirect
PyPItaskipy1.14.1indirect
PyPItensorflowindirect
PyPItermcolor3.3.0indirect
PyPIthreadpoolctl3.6.0indirect
PyPItoml0.10.2indirect
PyPItomli2.4.1indirect
PyPItorchindirect
PyPItorchvisionindirect
PyPItruststore0.10.4indirect
PyPItyping-extensions4.15.0indirect
PyPItyping-inspection0.4.2indirect
PyPItzdata2026.2indirect
PyPIurllib32.7.0indirect
PyPIuvloop0.22.1indirect
PyPIverspec0.1.0indirect
PyPIvirtualenv21.4.2indirect
PyPIwatchdog6.0.0indirect
PyPIwatchfiles1.1.1indirect
PyPIwatchfiles1.2.0indirect
PyPIwcwidth0.8.0indirect
PyPIwebsockets15.0.1indirect
PyPIwebsockets16.0indirect
PyPIwerkzeug3.1.8indirect
PyPIwrapt2.2.1indirect
PyPIzensical0.0.44indirect
PyPIzipp4.1.0indirect
Dependency advisories 0

Installing pypi:codecarbon@3.2.9 pulls in 38 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

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": [
        "ai-ethics",
        "carbon-emissions",
        "carbon-footprint",
        "co2-emissions",
        "energy-consumption",
        "energy-efficiency",
        "fairness",
        "sustainability"
      ],
      "is_fork": false,
      "size_kb": 37467,
      "has_wiki": true,
      "homepage": "https://docs.codecarbon.io/",
      "languages": {
        "CSS": 2516,
        "HTML": 563,
        "Mako": 494,
        "Jinja": 623,
        "Shell": 6785,
        "Python": 1259044,
        "Dockerfile": 2284,
        "JavaScript": 154,
        "TypeScript": 395839
      },
      "pushed_at": "2026-07-28T08:43:36Z",
      "created_at": "2020-05-12T14:44:03Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-28T08:40:41Z",
      "description": "Track emissions from Compute and recommend ways to reduce their impact on the environment.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python",
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://codecarbon.io",
      "name": "CodeCarbon",
      "type": "Organization",
      "login": "mlco2",
      "company": null,
      "location": null,
      "followers": 100,
      "avatar_url": "https://avatars.githubusercontent.com/u/54071934?v=4",
      "created_at": "2019-08-13T14:32:32Z",
      "is_verified": null,
      "public_repos": 13,
      "account_age_days": 2541
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.2.9",
          "kind": "patch",
          "published_at": "2026-07-19T20:06:05Z"
        },
        {
          "tag": "v3.2.8",
          "kind": "patch",
          "published_at": "2026-06-07T20:58:48Z"
        },
        {
          "tag": "v3.2.7",
          "kind": "patch",
          "published_at": "2026-05-17T13:17:59Z"
        },
        {
          "tag": "v3.2.6",
          "kind": "patch",
          "published_at": "2026-03-30T12:49:41Z"
        },
        {
          "tag": "v3.2.5",
          "kind": "patch",
          "published_at": "2026-03-19T12:09:16Z"
        },
        {
          "tag": "v3.2.4",
          "kind": "patch",
          "published_at": "2026-03-18T18:15:16Z"
        },
        {
          "tag": "v3.2.3",
          "kind": "patch",
          "published_at": "2026-02-22T12:38:38Z"
        },
        {
          "tag": "v3.2.2",
          "kind": "patch",
          "published_at": "2026-02-01T21:57:29Z"
        },
        {
          "tag": "v3.2.1",
          "kind": "patch",
          "published_at": "2026-01-02T10:01:55Z"
        },
        {
          "tag": "v3.1.2",
          "kind": "patch",
          "published_at": "2025-11-30T20:55:08Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2025-11-23T22:04:29Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2025-11-15T18:04:12Z"
        },
        {
          "tag": "v3.0.9",
          "kind": "patch",
          "published_at": "2025-11-15T17:26:18Z"
        },
        {
          "tag": "v3.0.8",
          "kind": "patch",
          "published_at": "2025-10-29T18:23:15Z"
        },
        {
          "tag": "v3.0.7",
          "kind": "patch",
          "published_at": "2025-10-08T20:33:19Z"
        },
        {
          "tag": "v3.0.6",
          "kind": "patch",
          "published_at": "2025-10-05T15:46:04Z"
        },
        {
          "tag": "v3.0.5",
          "kind": "patch",
          "published_at": "2025-09-20T18:10:16Z"
        },
        {
          "tag": "v3.0.4",
          "kind": "patch",
          "published_at": "2025-07-15T09:13:01Z"
        },
        {
          "tag": "v3.0.3",
          "kind": "patch",
          "published_at": "2025-07-12T16:04:34Z"
        },
        {
          "tag": "v3.0.2",
          "kind": "patch",
          "published_at": "2025-05-26T13:24:35Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2025-05-01T19:27:16Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2025-04-18T07:17:04Z"
        },
        {
          "tag": "2.8.4",
          "kind": "patch",
          "published_at": "2025-04-15T09:20:00Z"
        },
        {
          "tag": "v2.8.3",
          "kind": "patch",
          "published_at": "2025-01-19T19:36:59Z"
        },
        {
          "tag": "v2.8.2",
          "kind": "patch",
          "published_at": "2024-12-18T19:41:48Z"
        },
        {
          "tag": "v2.8.1",
          "kind": "patch",
          "published_at": "2024-12-03T10:09:24Z"
        },
        {
          "tag": "v2.8.0",
          "kind": "minor",
          "published_at": "2024-11-24T18:58:06Z"
        },
        {
          "tag": "v2.7.4",
          "kind": "patch",
          "published_at": "2024-11-10T11:54:41Z"
        },
        {
          "tag": "v2.7.2",
          "kind": "patch",
          "published_at": "2024-10-28T13:54:56Z"
        },
        {
          "tag": "v2.7.1",
          "kind": "patch",
          "published_at": "2024-09-11T07:41:36Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2024-09-08T09:55:34Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2024-08-09T17:39:18Z"
        },
        {
          "tag": "v2.5.1",
          "kind": "patch",
          "published_at": "2024-08-05T11:26:29Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2024-06-20T14:21:08Z"
        },
        {
          "tag": "v2.4.3rc1",
          "kind": "other",
          "published_at": "2024-05-24T07:14:11Z"
        },
        {
          "tag": "v2.4.2",
          "kind": "patch",
          "published_at": "2024-05-21T06:26:59Z"
        },
        {
          "tag": "v2.4.1",
          "kind": "patch",
          "published_at": "2024-05-10T06:30:33Z"
        },
        {
          "tag": "v2.4.0rc0",
          "kind": "other",
          "published_at": "2024-05-01T09:21:32Z"
        },
        {
          "tag": "v2.3.5",
          "kind": "patch",
          "published_at": "2024-04-10T07:18:57Z"
        },
        {
          "tag": "v2.3.4",
          "kind": "patch",
          "published_at": "2024-01-30T19:21:11Z"
        },
        {
          "tag": "v2.3.3",
          "kind": "patch",
          "published_at": "2024-01-22T09:49:16Z"
        },
        {
          "tag": "v2.3.2",
          "kind": "patch",
          "published_at": "2023-11-28T10:25:04Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2023-08-16T12:19:46Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2023-08-03T10:53:20Z"
        },
        {
          "tag": "v2.2.7",
          "kind": "patch",
          "published_at": "2023-07-25T06:56:42Z"
        },
        {
          "tag": "v2.2.6",
          "kind": "patch",
          "published_at": "2023-07-25T06:28:36Z"
        },
        {
          "tag": "v2.2.5",
          "kind": "patch",
          "published_at": "2023-07-12T17:38:58Z"
        },
        {
          "tag": "v2.2.4",
          "kind": "patch",
          "published_at": "2023-06-21T08:39:52Z"
        },
        {
          "tag": "v2.2.3",
          "kind": "patch",
          "published_at": "2023-06-05T05:25:14Z"
        },
        {
          "tag": "v2.2.2",
          "kind": "patch",
          "published_at": "2023-05-25T09:25:03Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2023-05-13T07:16:51Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2023-05-10T21:11:53Z"
        },
        {
          "tag": "v2.1.4",
          "kind": "patch",
          "published_at": "2022-09-05T05:30:34Z"
        },
        {
          "tag": "v2.1.3",
          "kind": "patch",
          "published_at": "2022-06-14T18:13:22Z"
        },
        {
          "tag": "v2.1.2",
          "kind": "patch",
          "published_at": "2022-05-17T19:56:27Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2022-05-10T20:30:04Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2022-04-27T08:14:36Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2022-04-07T14:23:19Z"
        },
        {
          "tag": "v2.0.0.a2",
          "kind": "other",
          "published_at": "2022-03-11T06:48:37Z"
        },
        {
          "tag": "v2.0.0a3",
          "kind": "other",
          "published_at": "2022-03-18T21:40:34Z"
        },
        {
          "tag": "v2.0.0.a1",
          "kind": "other",
          "published_at": "2022-03-08T14:05:15Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2021-04-18T16:33:43Z"
        },
        {
          "tag": "v1.1.2-alpha",
          "kind": "prerelease",
          "published_at": "2021-04-01T18:10:55Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2021-03-15T10:52:38Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2020-12-01T15:11:16Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2020-11-30T18:24:56Z"
        },
        {
          "tag": "v0.0.10",
          "kind": "patch",
          "published_at": "2020-11-13T14:24:02Z"
        },
        {
          "tag": "0.0.9",
          "kind": "patch",
          "published_at": "2020-11-13T13:56:00Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "336da333f3ff4b0110ab1a2b3106ce1f341fa2f8",
          "body": "build(deps): bump the uv group across 3 directories with 4 updates",
          "is_bot": false,
          "headline": "Merge pull request #1245 from mlco2/dependabot/uv/uv-df783ae491",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-07-28T08:40:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8f6a451bd3bc7be8e9bc7d3e2631909385e58c8",
          "body": null,
          "is_bot": false,
          "headline": "Fix code after deps bump",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-07-28T06:30:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f9733e169b3315480d75ffcd8c941165ef68df4",
          "body": "Bumps the uv group with 4 updates in the / directory: [cryptography](https://github.com/pyca/cryptography), [pyjwt](https://github.com/jpadilla/pyjwt), [python-multipart](https://github.com/Kludex/python-multipart) and [starlette](https://github.com/Kludex/starlette).\nBumps the uv group with 2 updat\n[…]\nion\n  dependency-group: uv\n- dependency-name: starlette\n  dependency-version: 1.3.1\n  dependency-type: direct:production\n  dependency-group: uv\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the uv group across 3 directories with 4 updates",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-28T07:27:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "663db8f279415cc55cc94cae8e3d5fe13efc749c",
          "body": "Add a dedicated \"Tracking Mode\" section to configuration.md explaining\nthat tracking_mode=\"machine\" (default) measures whole-machine RAM and CPU,\nwhile tracking_mode=\"process\" isolates to the tracked process only.\nAlso clarifies that GPU is unaffected by this setting.",
          "is_bot": false,
          "headline": "docs: clarify tracking_mode affects RAM and CPU (#484) (#1163)",
          "author_name": "Hamza Mobeen",
          "author_login": "hamza-mobeen",
          "committed_at": "2026-07-22T07:30:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e13ba314ce208de9cb879331cfa2e0889d83157d",
          "body": "Bumps the npm_and_yarn group with 1 update in the /webapp directory: [ws](https://github.com/websockets/ws).\n\n\nUpdates `ws` from 8.20.1 to 8.21.1\n- [Release notes](https://github.com/websockets/ws/releases)\n- [Commits](https://github.com/websockets/ws/compare/8.20.1...8.21.1)\n\n---\nupdated-dependenci\n[…]\n dependency-type: indirect\n  dependency-group: npm_and_yarn\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": "build(deps): bump ws (#1267)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T13:57:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58c0b1940a256381c8f1229e387bab11e4bdaa4b",
          "body": "release: v3.2.9",
          "is_bot": false,
          "headline": "Merge pull request #1261 from mlco2/release/3.2.9",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-07-19T20:04:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c38451d7b2adc3548343f2cb7640cd135103a3fb",
          "body": null,
          "is_bot": false,
          "headline": "revert changes in uv.lock",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-07-19T20:00:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a51838965ec80b542240cb95df7cbef6f2a9228",
          "body": null,
          "is_bot": false,
          "headline": "release: v3.2.9",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-07-19T20:00:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68e0f715147d2574c4405272b8d879b9e6b02536",
          "body": "…alls-every-second\n\nPerformance improvement: Avoid unnecessary GPU detail queries in _monitor_power()",
          "is_bot": false,
          "headline": "Merge pull request #1264 from vishali-mp/perf/issue-gpu-heavyweight-c…",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-07-19T16:34:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6866c54380716ca565c079323e9a4e2a2803c81",
          "body": null,
          "is_bot": false,
          "headline": "Cleaning",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-07-19T16:29:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc2a4cd71be0e23c6b79e70bbbf7154c012479ed",
          "body": null,
          "is_bot": false,
          "headline": "tests: fix mock arg mismatch in start_task init failure test",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-07-19T16:28:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7f0f0a34cc2e3b9e7cceddf5b33cbe631107c64",
          "body": "Covers all guard conditions in the monitoring loop:\n- gpu_index is None → entry skipped\n- gpu_index not in monitored set → entry skipped\n- gpu_utilization key missing → entry skipped\n- empty list from get_gpu_utilization_list() → nothing collected",
          "is_bot": false,
          "headline": "test(gpu): add edge case tests for _monitor_power lightweight path",
          "author_name": "Vishali M P",
          "author_login": "vishali-mp",
          "committed_at": "2026-07-07T19:54:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2aeba579627c46553f6e40bbf73f7abb111b2dd0",
          "body": null,
          "is_bot": false,
          "headline": "Add benchmarks to backup the changes",
          "author_name": "Vishali M P",
          "author_login": "vishali-mp",
          "committed_at": "2026-07-07T19:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c34475b0b4b8b69abd8245a9663826ddfd93b80",
          "body": "_get_gpu_details makes 8 NVML calls per GPU (memory, temperature, power,\nenergy, utilization, compute mode, compute processes, graphics processes)\nbut _monitor_power only consumes gpu_index and gpu_utilization.\n\nAdd get_gpu_utilization_lightweight() which makes 1 NVML call per GPU\n(nvmlDeviceGetUtil\n[…]\ning cycle from 8 to 1 per GPU — on an\n8-GPU system that's 56 fewer NVML calls per second (64 → 8).\n\nget_gpu_details() is preserved unchanged for measure_power_and_energy\nwhere power_usage is consumed.",
          "is_bot": false,
          "headline": "perf(gpu): skip heavyweight NVML calls in _monitor_power hot path",
          "author_name": "Vishali M P",
          "author_login": "vishali-mp",
          "committed_at": "2026-07-07T19:43:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3161c53cdbc8f142f26583e3f14de248979d6916",
          "body": "…254)\n\n* perf: cache hardware detection and optimize warm-path reuse\n\nAdd process-level hardware setup cache, probe result caching, platform-aware\nCPU backend selection, and parallel CPU/GPU setup for faster repeat runs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n* test: eagerly reset probe m\n[…]\nto wrapped user commands.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: inimaz <49730431+inimaz@users.noreply.github.com>",
          "is_bot": false,
          "headline": "perf: speed up CLI monitor startup and fix wrapped commands (4/4) (#1…",
          "author_name": "David Berenstein",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-06-29T16:50:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "553e85284361a4788e402ec82c80f149c9067686",
          "body": "* perf: cache hardware detection and optimize warm-path reuse\n\nAdd process-level hardware setup cache, probe result caching, platform-aware\nCPU backend selection, and parallel CPU/GPU setup for faster repeat runs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n* test: eagerly reset probe module c\n[…]\neriment id is configured.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: inimaz <49730431+inimaz@users.noreply.github.com>",
          "is_bot": false,
          "headline": "perf: defer API run creation until first emission upload (3/4) (#1253)",
          "author_name": "David Berenstein",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-06-29T12:16:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "473351b2ecca54579febe97b216db13e453e66be",
          "body": "…252)\n\n* perf: cache hardware detection and optimize warm-path reuse\n\nAdd process-level hardware setup cache, probe result caching, platform-aware\nCPU backend selection, and parallel CPU/GPU setup for faster repeat runs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n* test: eagerly reset probe m\n[…]\npaths, power gadget\nsetup, and fallback tracking branches missing from the PR patch report.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "perf: cache hardware detection and optimize warm-path reuse (2/4) (#1…",
          "author_name": "David Berenstein",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-06-29T12:10:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aea5d20a740a174d73f14b580e1c149afc0b8c4a",
          "body": "* fix: requirements-api.txt tested in ci\n\n* ci: run only on push",
          "is_bot": false,
          "headline": "fix: requirements-api.txt tested in ci (#1258)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-28T10:50:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48450553670f33f5e92109c8c97d8346ebcaeb8a",
          "body": "* chore: docker compose runs with no auth\n\n* fix: redirect url calculated once + update dockerfile node 24\n\n* feat: move default redirect url to settings",
          "is_bot": false,
          "headline": "chore: docker compose runs without auth (#1250)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-28T09:30:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11374f42ab9ddbdd0c47b180dc9507ff4258a01a",
          "body": "* perf: defer tracker initialization and slim import path\n\nLazy-load reference data, output handlers, hardware probing, and the\nemissions engine so tracker construction stays fast when work is deferred.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n* test: initialize hardware before cpu_load det\n[…]\nt while keeping\nreturn type annotations on get_cloud_emissions_data and get_cpu_power_data.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "perf: defer tracker initialization and slim import path (1/4) (#1251)",
          "author_name": "David Berenstein",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-06-22T08:20:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "150cac886fe5fba4bc288fe1a2bdd764e3cb786d",
          "body": "…#1247)\n\nBumps the pip group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cryptography](https://github.com/pyca/cryptography) | `48.0.0` | `48.0.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n| [pyjwt](https://g\n[…]\n dependency-type: direct:production\n  dependency-group: pip\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": "build(deps): bump the pip group across 2 directories with 5 updates (…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-21T07:47:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58acafaeaa25a17d7fdf5a924a8c2806857b2385",
          "body": "…dates (#1244)\n\nBumps the npm_and_yarn group with 2 updates in the /webapp directory: [form-data](https://github.com/form-data/form-data) and [js-yaml](https://github.com/nodeca/js-yaml).\n\n\nUpdates `form-data` from 4.0.5 to 4.0.6\n- [Release notes](https://github.com/form-data/form-data/releases)\n- [\n[…]\n dependency-type: indirect\n  dependency-group: npm_and_yarn\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": "build(deps): bump the npm_and_yarn group across 1 directory with 2 up…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-17T06:48:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b13c523408971264e2fa41e5bcd86f9dce3bc7a",
          "body": null,
          "is_bot": false,
          "headline": "fix(UI): align date picker month arrows (#1233)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-15T18:31:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7112bc73cea4820a1d122292e699221c0bdd8e42",
          "body": "…dates (#1238)\n\n* build(deps): bump the npm_and_yarn group across 1 directory with 7 updates\n\nBumps the npm_and_yarn group with 7 updates in the /webapp directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [postcss](https://github.com/postcss/postcss) | `8.5.6` | `8.5.15` |\n| [vitest](https://g\n[…]\npostcss\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: inimaz <93inigo93@gmail.com>",
          "is_bot": true,
          "headline": "build(deps): bump the npm_and_yarn group across 1 directory with 7 up…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-14T20:06:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c82e8e2b3da2d2dc33bf5d966613c882306b7523",
          "body": "…eaders (#1235)\n\n* perf(file): fast append and schema migration for CSV output\n\n- has_valid_headers() reads only first row instead of entire CSV\n- Append mode with matching headers: direct append via to_csv(mode='a')\n- On schema mismatch: merge old data with new schema instead of backup\n  (union of \n[…]\nerves old data with NaN for missing)\n- dropna(axis=1, how='all') only in append path to preserve new file columns\n\n* remove unintended changes\n\n---------\n\nCo-authored-by: Vishali M P <vishali@Mac.lan>",
          "is_bot": false,
          "headline": "perf(file): read only header row instead of entire CSV in has_valid_h…",
          "author_name": "Vishali Mani Paramesvari",
          "author_login": "vishali-mp",
          "committed_at": "2026-06-11T13:22:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "abfdd8cc215deb9168c4f0349375b58389817b27",
          "body": null,
          "is_bot": false,
          "headline": "fix(API): runs sums excludes the filtered runs (#1229)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-09T10:13:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30cfc59721c611708533e65e7836a78b46ea5959",
          "body": null,
          "is_bot": false,
          "headline": "fix: error when hover emissions chart (#1230)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-09T07:34:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75a74beeaf63d8c040171442f1fa80de9e09745d",
          "body": "Release 3.2.8",
          "is_bot": false,
          "headline": "Merge pull request #1227 from mlco2/release/3.2.8",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T20:53:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ef1472e56e13ec101e04dd1d22bc0937d11f0e3",
          "body": null,
          "is_bot": false,
          "headline": "bump",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:43:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f47a669ed2e4551e2bc44db38e9ff31640059ee1",
          "body": "BoAmps output doc and example",
          "is_bot": false,
          "headline": "Merge pull request #1154 from mlco2/docs/boamps",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T20:42:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b71fc7893f8c16a1c15342586661096587efd06",
          "body": null,
          "is_bot": false,
          "headline": "doc",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:42:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e2001dca5aa9cfdd77e69e367b2029cba073897",
          "body": null,
          "is_bot": false,
          "headline": "Add sample output",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:37:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c981a7166f778791a77dab62b5c20211316eed1",
          "body": null,
          "is_bot": false,
          "headline": "fix doc",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:37:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8d8763f46b3dfd8a1cfd13f9755f16edeffc9ef",
          "body": null,
          "is_bot": false,
          "headline": "Review by Opus 4.8",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:37:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dea271605e26b4a69820d7f1d69d45dac83b8a85",
          "body": null,
          "is_bot": false,
          "headline": "Better parameter system",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:37:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f4080c4b5c626e9d78c6157d0818464d113fa57",
          "body": null,
          "is_bot": false,
          "headline": "Working example",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:37:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4562a4af7ee6e2c0975bddb757ba812ec07c6c74",
          "body": "Intel NPU demo",
          "is_bot": false,
          "headline": "Merge pull request #1156 from mlco2/feat/intel_npu_support",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T20:37:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86a936b86b12b9f56e5fd54847112aef742ad032",
          "body": null,
          "is_bot": false,
          "headline": "Fix doc links",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59b332375d2142b0f2b42538f4cce76c8e24068a",
          "body": null,
          "is_bot": false,
          "headline": "doc",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eba876256330fdcb48541965caf3667b50c53413",
          "body": null,
          "is_bot": false,
          "headline": "Add examples list in doc",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef86b5f6d45364105db83218ebe78a8386d0dc56",
          "body": null,
          "is_bot": false,
          "headline": "NUMBER_OF_IMAGES",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d0e74354665857a3c5bb072200cc08a0d4b5b44",
          "body": null,
          "is_bot": false,
          "headline": "NPU example works",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89b1ddde156d360392235b99d771992f8d5621ac",
          "body": null,
          "is_bot": false,
          "headline": "wip NPU use",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-06-07T20:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "440493e2e1ced9b53d6f3977b808e8402315fcbe",
          "body": null,
          "is_bot": false,
          "headline": "fix: set back app alias (with clever nodejs legacy app removed) (#1228)",
          "author_name": "Amine Saboni",
          "author_login": "SaboniAmine",
          "committed_at": "2026-06-07T20:27:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9cafda3f7ae8ccef01436d064009b023274b9c67",
          "body": "* fix(front): add public project encryption key & ci update\n\n* fix: add skeletons to show loading phase for scatter charts & time series charts\n\n* fix: fix front end CD\n\n* fix: update mocks for tests",
          "is_bot": false,
          "headline": "fix(front): fix dashboard public sharing and front ci (#1212)",
          "author_name": "Amine Saboni",
          "author_login": "SaboniAmine",
          "committed_at": "2026-06-07T20:06:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05d7b6c7a23bac458154444c4aba40b64ceb40ef",
          "body": "fix: upgrade pydantic in codecarbon package",
          "is_bot": false,
          "headline": "Merge pull request #1226 from mlco2/fix/pydantic-version-package",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T11:29:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "449f500a1b9d76e15780b1a1b89da8b6abd193c1",
          "body": null,
          "is_bot": false,
          "headline": "fix: remove api group from package pyproject",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-07T09:50:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99a0789e1722dd48acca8125299c1b9d0a33d4dd",
          "body": null,
          "is_bot": false,
          "headline": "fix: upgrade pydantic in codecarbon package",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-07T09:48:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9bb2caeea8647b62e4fe060d99132cfe2899044b",
          "body": "* bump deps\n\n* Remove Fief\n\n---------\n\nCo-authored-by: benoit-cty <anne@onyme.fr>",
          "is_bot": false,
          "headline": "Fix API deployment (#1222)",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T08:39:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70e95efff4c064bf771fdd7792fcf84a25e48c0e",
          "body": "* feat: first version of telemetry\n\n* tests: add a test so that client and server do not differ",
          "is_bot": false,
          "headline": "feat: first version of telemetry (#1171)",
          "author_name": "inimaz",
          "author_login": "inimaz",
          "committed_at": "2026-06-07T08:37:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "987fbdff919234b6ebecf8f10c978aa075b7427e",
          "body": "Fix: Look up failure for nordic regions using online emissions tracker",
          "is_bot": false,
          "headline": "Merge pull request #1224 from kbarkhad/issue_swedish_region",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-07T07:08:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4bc1fee6d77ba2c0a30f2a67fd23c3dae337163",
          "body": null,
          "is_bot": false,
          "headline": "ran pre-commit",
          "author_name": "kbarkhad",
          "author_login": "kbarkhad",
          "committed_at": "2026-06-06T21:43:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "397e512573bac4cec0ad14aaf52dd4682627232b",
          "body": null,
          "is_bot": false,
          "headline": "Fix noisy fallback",
          "author_name": "kbarkhad",
          "author_login": "kbarkhad",
          "committed_at": "2026-06-06T21:43:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eeb0e0a9c518f431b8814001aab5705130612149",
          "body": "…-loop\n\nperf(cpu): Replace side-effect-only map() usage with for-loop in measurement",
          "is_bot": false,
          "headline": "Merge pull request #1219 from vishali-mp/perf/issue-2-list-map-to-for…",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-06T11:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "829912f7ec50d893a3d85375d2bc628e2024ede2",
          "body": "list(map(lambda rapl_file: rapl_file.delta(duration), self._rapl_files))\nwas allocating a disposable List[None] purely for side effects. A plain\nfor loop avoids the allocation and is more idiomatic.",
          "is_bot": false,
          "headline": "perf(cpu): replace list(map(...)) with for loop in get_cpu_details",
          "author_name": "Vishali M P",
          "author_login": null,
          "committed_at": "2026-06-06T09:43:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db1707d80f16d6480fb12e472412db8cda135a95",
          "body": "…1197\n\nfix: migrate authlib.jose to joserfc (#1197)",
          "is_bot": false,
          "headline": "Merge pull request #1199 from MatthewJamisonJS/fix/joserfc-migration-…",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-06T09:43:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f090367d30d0dd794db5c05414ceb4d19f40774",
          "body": "Address review follow-ups on the authlib.jose -> joserfc migration:\n\n- tests/cli/test_cli_auth.py: strengthen test_validate_access_token_valid\n  with a realistic claims dict (exp/iat/sub) so JWTClaimsRegistry actually\n  exercises its default validators instead of trivially passing on an\n  empty payl\n[…]\nvider.py: add\n  test_decode_token_falls_back_to_jwks_when_fief_fails covering the\n  previously-untested JWKS fallback in OIDCAuthProvider._decode_token —\n  the only joserfc-using path in carbonserver.",
          "is_bot": false,
          "headline": "test: cover joserfc migration paths (#1197)",
          "author_name": "Matthew Jamison",
          "author_login": "MatthewJamisonJS",
          "committed_at": "2026-06-06T09:38:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "93514cb5036b64b0b1583047cb887eb9ff06693a",
          "body": "authlib.jose emits AuthlibDeprecationWarning and will be incompatible\nbefore authlib 2.0.0. Replace with joserfc, the authlib-recommended\nsuccessor library.\n\nChanges:\n- codecarbon/cli/auth.py: KeySet.import_key_set + jwt.decode +\n  JWTClaimsRegistry().validate() for access-token validation\n- carbons\n[…]\nserfc>=1.0.0 to lib and server dependencies\n- Update cli auth tests to patch joserfc.jwk.KeySet instead of\n  authlib.jose.JsonWebKey; token.claims now an attribute, not a dict\n  with validate() method",
          "is_bot": false,
          "headline": "fix: migrate authlib.jose to joserfc (#1197)",
          "author_name": "Matthew Jamison",
          "author_login": "MatthewJamisonJS",
          "committed_at": "2026-06-06T09:38:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "786db5cab0becfd78eb72b3ec85954b1caced53c",
          "body": "build(deps): bump the uv group across 3 directories with 1 update",
          "is_bot": false,
          "headline": "Merge pull request #1218 from mlco2/dependabot/uv/uv-dd9d58ce2a",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-06T09:21:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f5b60f146eab3bb61490dc062e72eccc2800b5e",
          "body": "build(deps): bump the pip group across 2 directories with 1 update",
          "is_bot": false,
          "headline": "Merge pull request #1217 from mlco2/dependabot/pip/pip-884d536faf",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-06-06T09:20:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91ec9274a2ca4233d4c025628e2586fdae83dce2",
          "body": "Bumps the uv group with 1 update in the / directory: [starlette](https://github.com/Kludex/starlette).\nBumps the uv group with 1 update in the /carbonserver directory: [starlette](https://github.com/Kludex/starlette).\nBumps the uv group with 1 update in the /requirements directory: [starlette](https\n[…]\nect\n  dependency-group: uv\n- dependency-name: starlette\n  dependency-version: 1.0.1\n  dependency-type: direct:production\n  dependency-group: uv\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the uv group across 3 directories with 1 update",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T17:05:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "27ac786e9764828f2ba192353885259972bf7efa",
          "body": "Bumps the pip group with 1 update in the / directory: [starlette](https://github.com/Kludex/starlette).\nBumps the pip group with 1 update in the /requirements directory: [starlette](https://github.com/Kludex/starlette).\n\n\nUpdates `starlette` from 0.50.0 to 1.0.1\n- [Release notes](https://github.com/\n[…]\nn\n  dependency-group: pip\n- dependency-name: starlette\n  dependency-version: 1.0.1\n  dependency-type: direct:production\n  dependency-group: pip\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the pip group across 2 directories with 1 update",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T16:55:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0161337c6c6b2831f474c01b45676ceab8415803",
          "body": "Fix OSX psutil detection",
          "is_bot": false,
          "headline": "Merge pull request #1211 from mlco2/fix/#1210_psutil_mac",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-31T16:07:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9aa8dd0ece17a918a5a75363a72d838e4aa91e78",
          "body": null,
          "is_bot": false,
          "headline": "Coverage",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-31T15:46:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "507821be322f4daa073c73797fce08ddf6257474",
          "body": null,
          "is_bot": false,
          "headline": "Coverage",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-31T15:46:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9af95246d9ba56816a85a55212413fdaf6f1ef3",
          "body": null,
          "is_bot": false,
          "headline": "Fix OSX psutil detection",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-31T15:46:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d215e2153eaa184f469aefef50a4709382ccf0e8",
          "body": "Log a warning when local CLI access-token validation is skipped because the auth server cannot be reached, while preserving the existing availability fallback.\n\nFixes #1208\n\nCo-authored-by: Puneet Dixit <236133619+puneetdixit200@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Warn when auth validation falls back to API (#1209)",
          "author_name": "Puneet Dixit",
          "author_login": "puneetdixit200",
          "committed_at": "2026-05-27T07:40:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a7cee8c85b6b47e3d7d710801f8929768eee647",
          "body": "* feat(front): migrate next app to react\n* feat(api): add pre ping to activate sql connexion\n\n* fix: change caddy configuration\n\n* fix: add tests, mocks, lint\n\n* fix: experiment id parsing, add components tests\n\n* fix: fix pnpm version\n\n* fix: add mock service\n\n* fix: fix build folfder\n\n* fix: remove pnpm",
          "is_bot": false,
          "headline": "front end migration to pur react (#1076)",
          "author_name": "Amine Saboni",
          "author_login": "SaboniAmine",
          "committed_at": "2026-05-26T18:22:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a88000fbf6d6ce522a06870e68304ddcd56e631c",
          "body": "tests: check client server schema compatibility",
          "is_bot": false,
          "headline": "Merge pull request #1207 from puneetdixit200/tests/schema-compatibility",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-20T16:37:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dedca17fb05abd936935f03e342189102314cf24",
          "body": null,
          "is_bot": false,
          "headline": "tests: check client server schema compatibility",
          "author_name": "Puneet Dixit",
          "author_login": "puneetdixit200",
          "committed_at": "2026-05-20T16:23:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2ce06463014578d23d1d8d886ae0ecf4b9608e4",
          "body": "fix(cli): use OfflineEmissionsTracker for offline monitor runs",
          "is_bot": false,
          "headline": "Merge pull request #1202 from mlco2/fix/monitor-offline-tracker",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-20T15:54:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e68906a7d0930c44235856d4cf6a65db37606cc9",
          "body": null,
          "is_bot": false,
          "headline": "Add tests",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-20T15:48:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2551f8fd40393bba38800bb0d7312e243a4babbf",
          "body": "Pass an explicit offline flag from monitor to run_and_monitor so tracker\nselection matches the non-delegate path instead of inferring from kwargs.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix(cli): use OfflineEmissionsTracker for offline monitor runs",
          "author_name": "davidberenstein1957",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-05-20T15:48:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c3331a9c3121217f96e455d3bd65817cc0b5318",
          "body": "fix: amdsmi import when libamd_smi is missing (macOS / no ROCm)",
          "is_bot": false,
          "headline": "Merge pull request #1201 from mlco2/fix/amdsmi-import-keyerror-macos",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-20T12:48:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba1565fd487effcdc43f70022e4361977c870526",
          "body": null,
          "is_bot": false,
          "headline": "run precommit",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-20T12:45:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "241e498db409241ab4ae885bdd18afac7a97289d",
          "body": "…failures\n\nAgent-Logs-Url: https://github.com/mlco2/codecarbon/sessions/009db467-8429-4146-8907-bcbd0a16593b\n\nCo-authored-by: benoit-cty <6603048+benoit-cty@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: add coverage for OSError/KeyError/AttributeError amdsmi import …",
          "author_name": "copilot-swe-agent[bot]",
          "author_login": "Copilot",
          "committed_at": "2026-05-20T10:19:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef18da7a157369c32c57474fd0c8ec2dd897b520",
          "body": "Keep original warning message and comment; catch OSError and KeyError\nwhen libamd_smi fails to load (e.g. macOS with amdsmi wheel but no ROCm).\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix(gpu_amd): only extend amdsmi import except types",
          "author_name": "davidberenstein1957",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-05-20T09:37:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "738b812a1a3bc5d23965c6d5bfdd81a488dcabbf",
          "body": "When the amdsmi Python package is installed without ROCm (e.g. on macOS),\nimport can raise KeyError while resolving libamd_smi.so. Treat AttributeError,\nOSError, and KeyError like a broken install: disable AMD metrics and warn\ninstead of crashing the CodeCarbon CLI on import.",
          "is_bot": false,
          "headline": "fix: handle amdsmi load failures when libamd_smi is missing",
          "author_name": "davidberenstein1957",
          "author_login": "davidberenstein1957",
          "committed_at": "2026-05-20T09:37:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afa3ac816132bf7f545d3ec2a4b3402ff106b3ae",
          "body": "…e-154\n\nDocument hardware measurement scope",
          "is_bot": false,
          "headline": "Merge pull request #1204 from zhouzhou626/docs/document-hardware-scop…",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-20T09:35:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad4c52d54b0c8f0cbd36452e1c4cb6602c0e076c",
          "body": null,
          "is_bot": false,
          "headline": "docs: clarify hardware scope rationale",
          "author_name": "zhouzhou626",
          "author_login": "zhouzhou626",
          "committed_at": "2026-05-20T09:30:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89602924d02517a89aae9b94d806b80209d551cf",
          "body": null,
          "is_bot": false,
          "headline": "docs: document hardware measurement scope",
          "author_name": "zhouzhou626",
          "author_login": "zhouzhou626",
          "committed_at": "2026-05-20T09:30:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8eb90009e4e4b737b3e235b1ffe576c429e9c38",
          "body": "build(deps): bump the uv group across 3 directories with 1 update",
          "is_bot": false,
          "headline": "Merge pull request #1205 from mlco2/dependabot/uv/uv-5bbef279d1",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-20T09:19:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01b14912f898851ae4a9af74a1d6c2755f0aa472",
          "body": "Bumps the uv group with 1 update in the / directory: [idna](https://github.com/kjd/idna).\nBumps the uv group with 1 update in the /carbonserver directory: [idna](https://github.com/kjd/idna).\nBumps the uv group with 1 update in the /requirements directory: [idna](https://github.com/kjd/idna).\n\n\nUpda\n[…]\nndirect\n  dependency-group: uv\n- dependency-name: idna\n  dependency-version: '3.15'\n  dependency-type: direct:production\n  dependency-group: uv\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the uv group across 3 directories with 1 update",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-19T21:10:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7000cd4beef23987c9e64b2030093fe8cf9512b2",
          "body": null,
          "is_bot": false,
          "headline": "How to test the release (#1198)",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-19T14:03:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08dcc1b33097363349fdf759e54fa07d7697624c",
          "body": "Release 3.2.7",
          "is_bot": false,
          "headline": "Merge pull request #1195 from mlco2/release/3.2.7",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-17T13:12:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d823ce36ac3c15b2ab507f1d6cffe15feadde58f",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into release/3.2.7",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-15T18:02:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a1dae40af4ab6fc99c30a412ffd07e871a20086",
          "body": "build(deps): bump authlib from 1.6.11 to 1.6.12 in the uv group across 1 directory",
          "is_bot": false,
          "headline": "Merge pull request #1196 from mlco2/dependabot/uv/uv-d3bbf5c658",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-15T18:00:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5941cddda82f2312a825083059e64d6f9e1b938b",
          "body": "Bumps the uv group with 1 update in the / directory: [authlib](https://github.com/authlib/authlib).\n\n\nUpdates `authlib` from 1.6.11 to 1.6.12\n- [Release notes](https://github.com/authlib/authlib/releases)\n- [Changelog](https://github.com/authlib/authlib/blob/1.6.12/docs/changelog.rst)\n- [Commits](ht\n[…]\n\n\n---\nupdated-dependencies:\n- dependency-name: authlib\n  dependency-version: 1.6.12\n  dependency-type: direct:production\n  dependency-group: uv\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump authlib in the uv group across 1 directory",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-13T23:28:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eda104e648ba36324095a31e5ece3c6bb7613981",
          "body": null,
          "is_bot": false,
          "headline": "Fix links",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:55:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be754a31b289be46246863026413d3295ea31bea",
          "body": null,
          "is_bot": false,
          "headline": "fix docs build with zensical",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:52:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a488826b26fd971848bdd6a968cc31012923662",
          "body": null,
          "is_bot": false,
          "headline": "bump 3.2.7",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "500c75648b426cf1ed91fad384a289be9f79c7aa",
          "body": "Allow custom carbon intensity configuration",
          "is_bot": false,
          "headline": "Merge pull request #863 from mlco2/feat/custom-carbon-intensity",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-13T20:36:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b0fba9712614a56ab09d491a4c28ae2b427ea68",
          "body": null,
          "is_bot": false,
          "headline": "Change log level",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6367927c74c774c8c106d5d91b2e545043ad5d6",
          "body": null,
          "is_bot": false,
          "headline": "uncovered validation branches and the offline decorator forwarding path.",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69fa57fcd4b1bca3baf7712a2ce51153c546b330",
          "body": "…ack_emissions.",
          "is_bot": false,
          "headline": "Updated Emissions, EmissionsTracker, OfflineEmissionsTracker, and @tr…",
          "author_name": "benoit-cty",
          "author_login": null,
          "committed_at": "2026-05-13T20:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bc290e1381955a0053ff3e9825217c8d1582e6d",
          "body": "This commit introduces a new configuration option, `custom_carbon_intensity_g_co2e_kwh`,\nallowing you to specify a direct carbon intensity value (in gCO2e/kWh) for your\nenergy consumption.\n\nWhen this value is provided (either via the `.codecarbon.config` file or the\n`CODECARBON_CUSTOM_CARBON_INTENSI\n[…]\nThis feature provides you with greater flexibility and accuracy in\nreporting emissions, especially for on-premise setups with specific energy\nmixes or when default data sources are not representative.",
          "is_bot": true,
          "headline": "feat: Allow custom carbon intensity configuration",
          "author_name": "google-labs-jules[bot]",
          "author_login": "google-labs-jules[bot]",
          "committed_at": "2026-05-13T20:35:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "164ffcb9f66cba006cdc20b8a0ff88a32f6beb07",
          "body": "build(deps): bump the uv group across 3 directories with 1 update",
          "is_bot": false,
          "headline": "Merge pull request #1187 from mlco2/dependabot/uv/uv-dc55c15f20",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-13T20:15:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "060afaae293ed9c9d17cdbd2b74200a3ed281584",
          "body": "Bumps the uv group with 1 update in the / directory: [urllib3](https://github.com/urllib3/urllib3).\nBumps the uv group with 1 update in the /carbonserver directory: [urllib3](https://github.com/urllib3/urllib3).\nBumps the uv group with 1 update in the /requirements directory: [urllib3](https://githu\n[…]\nirect\n  dependency-group: uv\n- dependency-name: urllib3\n  dependency-version: 2.7.0\n  dependency-type: direct:production\n  dependency-group: uv\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the uv group across 3 directories with 1 update",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-13T20:15:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "106e6a1f32d0c5349a964ccab9531e10df79573b",
          "body": "build(deps): bump the pip group across 2 directories with 1 update",
          "is_bot": false,
          "headline": "Merge pull request #1193 from mlco2/dependabot/pip/pip-2ed8c6dfee",
          "author_name": "Benoît Courty",
          "author_login": "benoit-cty",
          "committed_at": "2026-05-13T19:53:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c89e6b9525eb9be3313bc12262842b3e5a1d007",
          "body": "Bumps the pip group with 1 update in the / directory: [authlib](https://github.com/authlib/authlib).\nBumps the pip group with 1 update in the /requirements directory: [authlib](https://github.com/authlib/authlib).\n\n\nUpdates `authlib` from 1.6.11 to 1.6.12\n- [Release notes](https://github.com/authlib\n[…]\non\n  dependency-group: pip\n- dependency-name: authlib\n  dependency-version: 1.6.12\n  dependency-type: direct:production\n  dependency-group: pip\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "build(deps): bump the pip group across 2 directories with 1 update",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-13T19:53:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 68,
      "commits_last_year": 564,
      "latest_release_at": "2026-07-19T20:06:05Z",
      "latest_release_tag": "v3.2.9",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 50,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 25.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "codecarbon",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "Natural Language :: English",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Programming Language :: Python :: 3.14"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/codecarbon/",
          "is_deprecated": false,
          "latest_version": "3.2.9",
          "repository_url": "https://github.com/mlco2/codecarbon",
          "versions_count": 74,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 181657,
          "first_published_at": "2020-11-13T14:33:18.123384Z",
          "latest_published_at": "2026-07-19T20:09:06.549561Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 307,
      "stars": 1887,
      "watchers": 26,
      "fork_history": {
        "days": [
          {
            "date": "2020-11-23",
            "count": 1
          },
          {
            "date": "2020-12-02",
            "count": 1
          },
          {
            "date": "2020-12-06",
            "count": 2
          },
          {
            "date": "2020-12-07",
            "count": 1
          },
          {
            "date": "2020-12-16",
            "count": 1
          },
          {
            "date": "2020-12-23",
            "count": 1
          },
          {
            "date": "2021-01-21",
            "count": 1
          },
          {
            "date": "2021-02-11",
            "count": 1
          },
          {
            "date": "2021-03-17",
            "count": 1
          },
          {
            "date": "2021-03-30",
            "count": 1
          },
          {
            "date": "2021-04-07",
            "count": 1
          },
          {
            "date": "2021-04-22",
            "count": 1
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-06-01",
            "count": 1
          },
          {
            "date": "2021-06-15",
            "count": 1
          },
          {
            "date": "2021-06-29",
            "count": 1
          },
          {
            "date": "2021-08-06",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 1
          },
          {
            "date": "2021-08-16",
            "count": 1
          },
          {
            "date": "2021-08-28",
            "count": 1
          },
          {
            "date": "2021-09-04",
            "count": 2
          },
          {
            "date": "2021-09-09",
            "count": 1
          },
          {
            "date": "2021-09-22",
            "count": 1
          },
          {
            "date": "2021-09-30",
            "count": 2
          },
          {
            "date": "2021-10-07",
            "count": 1
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2021-11-18",
            "count": 1
          },
          {
            "date": "2021-11-22",
            "count": 1
          },
          {
            "date": "2021-11-25",
            "count": 1
          },
          {
            "date": "2021-12-07",
            "count": 1
          },
          {
            "date": "2022-01-16",
            "count": 1
          },
          {
            "date": "2022-01-20",
            "count": 1
          },
          {
            "date": "2022-02-02",
            "count": 1
          },
          {
            "date": "2022-02-04",
            "count": 1
          },
          {
            "date": "2022-02-11",
            "count": 1
          },
          {
            "date": "2022-02-13",
            "count": 1
          },
          {
            "date": "2022-02-14",
            "count": 1
          },
          {
            "date": "2022-02-15",
            "count": 1
          },
          {
            "date": "2022-03-08",
            "count": 1
          },
          {
            "date": "2022-03-30",
            "count": 1
          },
          {
            "date": "2022-04-04",
            "count": 1
          },
          {
            "date": "2022-04-12",
            "count": 1
          },
          {
            "date": "2022-05-05",
            "count": 1
          },
          {
            "date": "2022-05-19",
            "count": 1
          },
          {
            "date": "2022-06-05",
            "count": 1
          },
          {
            "date": "2022-06-20",
            "count": 1
          },
          {
            "date": "2022-06-30",
            "count": 2
          },
          {
            "date": "2022-07-04",
            "count": 1
          },
          {
            "date": "2022-07-06",
            "count": 1
          },
          {
            "date": "2022-07-19",
            "count": 1
          },
          {
            "date": "2022-07-31",
            "count": 1
          },
          {
            "date": "2022-08-19",
            "count": 1
          },
          {
            "date": "2022-09-20",
            "count": 1
          },
          {
            "date": "2022-09-21",
            "count": 1
          },
          {
            "date": "2022-10-13",
            "count": 1
          },
          {
            "date": "2022-10-20",
            "count": 1
          },
          {
            "date": "2022-10-22",
            "count": 1
          },
          {
            "date": "2022-10-23",
            "count": 1
          },
          {
            "date": "2022-10-26",
            "count": 1
          },
          {
            "date": "2022-11-06",
            "count": 1
          },
          {
            "date": "2022-11-09",
            "count": 1
          },
          {
            "date": "2022-11-14",
            "count": 1
          },
          {
            "date": "2022-11-18",
            "count": 1
          },
          {
            "date": "2022-11-23",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2022-12-01",
            "count": 1
          },
          {
            "date": "2022-12-02",
            "count": 1
          },
          {
            "date": "2022-12-07",
            "count": 1
          },
          {
            "date": "2022-12-13",
            "count": 1
          },
          {
            "date": "2023-01-10",
            "count": 2
          },
          {
            "date": "2023-01-20",
            "count": 1
          },
          {
            "date": "2023-02-03",
            "count": 1
          },
          {
            "date": "2023-02-11",
            "count": 1
          },
          {
            "date": "2023-02-21",
            "count": 1
          },
          {
            "date": "2023-03-01",
            "count": 1
          },
          {
            "date": "2023-03-16",
            "count": 1
          },
          {
            "date": "2023-03-20",
            "count": 2
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-06",
            "count": 2
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-04-15",
            "count": 1
          },
          {
            "date": "2023-04-18",
            "count": 1
          },
          {
            "date": "2023-04-29",
            "count": 1
          },
          {
            "date": "2023-05-02",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 2
          },
          {
            "date": "2023-06-14",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 2
          },
          {
            "date": "2023-07-23",
            "count": 2
          },
          {
            "date": "2023-07-24",
            "count": 1
          },
          {
            "date": "2023-07-28",
            "count": 2
          },
          {
            "date": "2023-08-23",
            "count": 1
          },
          {
            "date": "2023-09-02",
            "count": 1
          },
          {
            "date": "2023-09-06",
            "count": 1
          },
          {
            "date": "2023-09-07",
            "count": 2
          },
          {
            "date": "2023-09-15",
            "count": 1
          },
          {
            "date": "2023-09-18",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-09-27",
            "count": 1
          },
          {
            "date": "2023-10-13",
            "count": 1
          },
          {
            "date": "2023-11-03",
            "count": 1
          },
          {
            "date": "2023-11-16",
            "count": 1
          },
          {
            "date": "2023-11-17",
            "count": 1
          },
          {
            "date": "2023-11-24",
            "count": 1
          },
          {
            "date": "2023-12-04",
            "count": 1
          },
          {
            "date": "2023-12-18",
            "count": 1
          },
          {
            "date": "2023-12-27",
            "count": 1
          },
          {
            "date": "2024-01-01",
            "count": 1
          },
          {
            "date": "2024-01-07",
            "count": 1
          },
          {
            "date": "2024-01-11",
            "count": 1
          },
          {
            "date": "2024-01-16",
            "count": 1
          },
          {
            "date": "2024-01-28",
            "count": 1
          },
          {
            "date": "2024-02-27",
            "count": 2
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-04-11",
            "count": 2
          },
          {
            "date": "2024-04-17",
            "count": 1
          },
          {
            "date": "2024-04-18",
            "count": 1
          },
          {
            "date": "2024-04-20",
            "count": 1
          },
          {
            "date": "2024-04-23",
            "count": 1
          },
          {
            "date": "2024-04-29",
            "count": 1
          },
          {
            "date": "2024-04-30",
            "count": 1
          },
          {
            "date": "2024-05-08",
            "count": 1
          },
          {
            "date": "2024-05-11",
            "count": 1
          },
          {
            "date": "2024-05-16",
            "count": 1
          },
          {
            "date": "2024-05-26",
            "count": 2
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-06-06",
            "count": 1
          },
          {
            "date": "2024-06-12",
            "count": 2
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-06-25",
            "count": 2
          },
          {
            "date": "2024-07-04",
            "count": 1
          },
          {
            "date": "2024-07-20",
            "count": 1
          },
          {
            "date": "2024-07-24",
            "count": 1
          },
          {
            "date": "2024-08-01",
            "count": 1
          },
          {
            "date": "2024-08-05",
            "count": 1
          },
          {
            "date": "2024-08-11",
            "count": 1
          },
          {
            "date": "2024-08-14",
            "count": 1
          },
          {
            "date": "2024-08-22",
            "count": 2
          },
          {
            "date": "2024-09-02",
            "count": 1
          },
          {
            "date": "2024-09-07",
            "count": 1
          },
          {
            "date": "2024-09-08",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-22",
            "count": 1
          },
          {
            "date": "2024-09-23",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 1
          },
          {
            "date": "2024-11-10",
            "count": 1
          },
          {
            "date": "2024-11-13",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-06",
            "count": 1
          },
          {
            "date": "2024-12-18",
            "count": 1
          },
          {
            "date": "2025-01-05",
            "count": 1
          },
          {
            "date": "2025-01-07",
            "count": 1
          },
          {
            "date": "2025-01-22",
            "count": 1
          },
          {
            "date": "2025-01-24",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-02-08",
            "count": 1
          },
          {
            "date": "2025-02-10",
            "count": 2
          },
          {
            "date": "2025-02-11",
            "count": 1
          },
          {
            "date": "2025-02-14",
            "count": 1
          },
          {
            "date": "2025-03-13",
            "count": 2
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-22",
            "count": 1
          },
          {
            "date": "2025-03-27",
            "count": 2
          },
          {
            "date": "2025-04-11",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-30",
            "count": 1
          },
          {
            "date": "2025-05-05",
            "count": 1
          },
          {
            "date": "2025-05-14",
            "count": 1
          },
          {
            "date": "2025-05-23",
            "count": 3
          },
          {
            "date": "2025-05-25",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-19",
            "count": 1
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-25",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-07-08",
            "count": 1
          },
          {
            "date": "2025-07-10",
            "count": 1
          },
          {
            "date": "2025-07-15",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-05",
            "count": 1
          },
          {
            "date": "2025-08-06",
            "count": 1
          },
          {
            "date": "2025-08-08",
            "count": 2
          },
          {
            "date": "2025-08-15",
            "count": 1
          },
          {
            "date": "2025-09-02",
            "count": 1
          },
          {
            "date": "2025-09-13",
            "count": 1
          },
          {
            "date": "2025-09-30",
            "count": 1
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-03",
            "count": 1
          },
          {
            "date": "2025-11-16",
            "count": 1
          },
          {
            "date": "2025-11-17",
            "count": 1
          },
          {
            "date": "2025-11-19",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-25",
            "count": 1
          },
          {
            "date": "2025-11-28",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 1
          },
          {
            "date": "2026-01-17",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-11",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-02-27",
            "count": 2
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 2
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 3
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 2
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-13",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 3
          },
          {
            "date": "2026-04-25",
            "count": 2
          },
          {
            "date": "2026-04-26",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 2
          },
          {
            "date": "2026-04-29",
            "count": 2
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 2
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 3
          },
          {
            "date": "2026-05-20",
            "count": 2
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 2
          },
          {
            "date": "2026-06-12",
            "count": 2
          },
          {
            "date": "2026-06-13",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 3
          },
          {
            "date": "2026-07-23",
            "count": 1
          },
          {
            "date": "2026-07-26",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 305,
        "total_forks": 307
      },
      "star_history": null,
      "open_issues_and_prs": 143
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "notebooks"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "codecarbon/py.typed",
        "webapp/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 77721,
      "source_files_sampled": 405,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        "AGENTS.md",
        "CLAUDE.md",
        "GEMINI.md",
        "docs/how-to/agents.md"
      ],
      "agent_instruction_max_bytes": 4115
    },
    "dependencies": {
      "manifests": [
        "carbonserver/pyproject.toml",
        "examples/requirements-examples.txt",
        "pyproject.toml",
        "requirements/requirements-api.txt",
        "webapp/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 38,
        "malicious_count": 0,
        "assessed_package": "pypi:codecarbon@3.2.9",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "alembic",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<2.0.0"
        },
        {
          "name": "authlib",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.7.2"
        },
        {
          "name": "bcrypt",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<5.0.0"
        },
        {
          "name": "python-dateutil",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<3.0.0"
        },
        {
          "name": "dependency-injector",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<5.0.0"
        },
        {
          "name": "fastapi",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<0.140.5,>=0.138.1"
        },
        {
          "name": "fastapi",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "httpx2",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "pydantic",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0,<3.0.0"
        },
        {
          "name": "pydantic-settings",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.14.2,<3.0.0"
        },
        {
          "name": "psycopg2-binary",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<3.0.0"
        },
        {
          "name": "requests",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<3.0.0"
        },
        {
          "name": "sqlalchemy",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<2.0.0"
        },
        {
          "name": "uvicorn",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<1.0.0"
        },
        {
          "name": "fastapi-pagination",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "<1.0.0"
        },
        {
          "name": "numpy",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "psutil",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "rapidfuzz",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "PyJWT",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "fastapi-oidc",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.0.9"
        },
        {
          "name": "authlib",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.6.6"
        },
        {
          "name": "joserfc",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "itsdangerous",
          "manifest": "carbonserver/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.2.0"
        },
        {
          "name": "arrow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "authlib",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.2.1"
        },
        {
          "name": "joserfc",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.0.0"
        },
        {
          "name": "click",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pandas",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.3.3"
        },
        {
          "name": "pandas",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "prometheus_client",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "psutil",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">= 6.0.0"
        },
        {
          "name": "py-cpuinfo",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0,<3.0.0"
        },
        {
          "name": "nvidia-ml-py",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "rapidfuzz",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "questionary",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "rich",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "typer",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pycountry",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "@radix-ui/react-dialog",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.15"
        },
        {
          "name": "@radix-ui/react-dropdown-menu",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.16"
        },
        {
          "name": "@radix-ui/react-label",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.8"
        },
        {
          "name": "@radix-ui/react-navigation-menu",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.14"
        },
        {
          "name": "@radix-ui/react-popover",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.15"
        },
        {
          "name": "@radix-ui/react-select",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.6"
        },
        {
          "name": "@radix-ui/react-separator",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.8"
        },
        {
          "name": "@radix-ui/react-slot",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.4"
        },
        {
          "name": "@radix-ui/react-switch",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.6"
        },
        {
          "name": "@radix-ui/react-tabs",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.13"
        },
        {
          "name": "@radix-ui/react-tooltip",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.8"
        },
        {
          "name": "class-variance-authority",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "copy-to-clipboard",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.3"
        },
        {
          "name": "date-fns",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "lucide-react",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.411.0"
        },
        {
          "name": "react",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.1.0"
        },
        {
          "name": "react-day-picker",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.13.0"
        },
        {
          "name": "react-dom",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.1.0"
        },
        {
          "name": "react-router-dom",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.17.0"
        },
        {
          "name": "recharts",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.15.4"
        },
        {
          "name": "sonner",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.7"
        },
        {
          "name": "swr",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.3.8"
        },
        {
          "name": "tailwind-merge",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.6.1"
        },
        {
          "name": "tailwindcss",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.1"
        },
        {
          "name": "tailwindcss-animate",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.7"
        },
        {
          "name": "zod",
          "manifest": "webapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@radix-ui/react-dialog",
            "direct": true,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dropdown-menu",
            "direct": true,
            "version": "2.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-label",
            "direct": true,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-navigation-menu",
            "direct": true,
            "version": "1.2.14",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-popover",
            "direct": true,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-select",
            "direct": true,
            "version": "2.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-separator",
            "direct": true,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": true,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": true,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-switch",
            "direct": true,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-tabs",
            "direct": true,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-tooltip",
            "direct": true,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "copy-to-clipboard",
            "direct": true,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": true,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": true,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "0.411.0",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-day-picker",
            "direct": true,
            "version": "9.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-router-dom",
            "direct": true,
            "version": "7.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "recharts",
            "direct": true,
            "version": "2.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "sonner",
            "direct": true,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "swr",
            "direct": true,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": true,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss-animate",
            "direct": true,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "alembic",
            "direct": true,
            "version": "1.17.2",
            "ecosystem": "pypi"
          },
          {
            "name": "alembic",
            "direct": true,
            "version": "1.18.4",
            "ecosystem": "pypi"
          },
          {
            "name": "arrow",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "authlib",
            "direct": true,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "bcrypt",
            "direct": true,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": true,
            "version": "8.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dependency-injector",
            "direct": true,
            "version": "4.48.2",
            "ecosystem": "pypi"
          },
          {
            "name": "dependency-injector",
            "direct": true,
            "version": "4.49.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi",
            "direct": true,
            "version": "0.138.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi",
            "direct": true,
            "version": "0.140.4",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-oidc",
            "direct": true,
            "version": "0.0.11",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-oidc",
            "direct": true,
            "version": "0.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-pagination",
            "direct": true,
            "version": "0.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-pagination",
            "direct": true,
            "version": "0.15.14",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx2",
            "direct": true,
            "version": "2.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "itsdangerous",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joserfc",
            "direct": true,
            "version": "1.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": true,
            "version": "2.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": true,
            "version": "2.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": true,
            "version": "2.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nvidia-ml-py",
            "direct": true,
            "version": "13.610.43",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": true,
            "version": "2.3.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": true,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "prometheus-client",
            "direct": true,
            "version": "0.25.0",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": true,
            "version": "6.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": true,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": true,
            "version": "2.9.11",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": true,
            "version": "2.9.12",
            "ecosystem": "pypi"
          },
          {
            "name": "py-cpuinfo",
            "direct": true,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pycountry",
            "direct": true,
            "version": "26.2.16",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.12.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-settings",
            "direct": true,
            "version": "2.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": true,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": true,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "questionary",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rapidfuzz",
            "direct": true,
            "version": "3.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "rapidfuzz",
            "direct": true,
            "version": "3.14.5",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.33.1",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": true,
            "version": "14.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": true,
            "version": "15.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": true,
            "version": "1.4.54",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": true,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": true,
            "version": "0.26.7",
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": true,
            "version": "0.38.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": true,
            "version": "0.49.0",
            "ecosystem": "pypi"
          },
          {
            "name": "@adobe/css-tools",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@alloc/quick-lru",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@date-fns/tz",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/core",
            "direct": false,
            "version": "1.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/dom",
            "direct": false,
            "version": "1.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/react-dom",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/utils",
            "direct": false,
            "version": "0.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/number",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/primitive",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-arrow",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collection",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-direction",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dismissable-layer",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-guards",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-scope",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-id",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-menu",
            "direct": false,
            "version": "2.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-popper",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-portal",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-presence",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-roving-focus",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-callback-ref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-controllable-state",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-effect-event",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-escape-keydown",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-layout-effect",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-previous",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-rect",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-size",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-visually-hidden",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/rect",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/node",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-android-arm64",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-arm64",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-x64",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-freebsd-x64",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-gnu",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-musl",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-gnu",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-musl",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-wasm32-wasi",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-arm64-msvc",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-x64-msvc",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/postcss",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/dom",
            "direct": false,
            "version": "10.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/jest-dom",
            "direct": false,
            "version": "6.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/react",
            "direct": false,
            "version": "16.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/user-event",
            "direct": false,
            "version": "14.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/aria-query",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-array",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-color",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-ease",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-interpolate",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-path",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-shape",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-time",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-timer",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.19.30",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-hidden",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css.escape",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "d3-array",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "d3-color",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-ease",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-format",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-interpolate",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-path",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-shape",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time-format",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-timer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns-jalali",
            "direct": false,
            "version": "4.1.0-0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js-light",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node-es",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-accessibility-api",
            "direct": false,
            "version": "0.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "dom-accessibility-api",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "dom-helpers",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.21.6",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.39.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-prettier",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-equals",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-nonce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "25.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "loose-envify",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lz-string",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.12",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.23",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types",
            "direct": false,
            "version": "15.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "16.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "17.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll",
            "direct": false,
            "version": "2.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll-bar",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-router",
            "direct": false,
            "version": "7.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-smooth",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "react-style-singleton",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "react-transition-group",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "recharts-scale",
            "direct": false,
            "version": "0.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rrweb-cssom",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "rrweb-cssom",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-cookie-parser",
            "direct": false,
            "version": "2.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-invariant",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "toggle-selection",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "use-callback-ref",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sidecar",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sync-external-store",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "victory-vendor",
            "direct": false,
            "version": "36.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "annotated-doc",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-types",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ast-serialize",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": "26.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "blinker",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bumpver",
            "direct": false,
            "version": "2026.1132",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "cachetools",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "carbonserver",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2025.11.12",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.5.20",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgv",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.7",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "48.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "48.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dash",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dash-bootstrap-components",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "detect-installer",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dnspython",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ecdsa",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "email-validator",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-cli",
            "direct": false,
            "version": "0.0.24",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-cloud-cli",
            "direct": false,
            "version": "0.19.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi-cloud-cli",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastar",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "fastar",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.29.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fire",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "flask",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "ghp-import",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "googleapis-common-protos",
            "direct": false,
            "version": "1.75.0",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "griffelib",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore2",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httptools",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httptools",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.19",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "janus",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": false,
            "version": "4.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-specifications",
            "direct": false,
            "version": "2025.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "keras-tuner",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "lexid",
            "direct": false,
            "version": "2021.1006",
            "ecosystem": "pypi"
          },
          {
            "name": "librt",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "logfire",
            "direct": false,
            "version": "4.35.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mako",
            "direct": false,
            "version": "1.3.10",
            "ecosystem": "pypi"
          },
          {
            "name": "mako",
            "direct": false,
            "version": "1.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown",
            "direct": false,
            "version": "3.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mergedeep",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mike",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-autorefs",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-get-deps",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-redirects",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings-python",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mktestdocs",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "pypi"
          },
          {
            "name": "mock",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mslex",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-extensions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "narwhals",
            "direct": false,
            "version": "2.22.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nest-asyncio",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-api",
            "direct": false,
            "version": "1.42.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-exporter-otlp-proto-common",
            "direct": false,
            "version": "1.42.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-exporter-otlp-proto-http",
            "direct": false,
            "version": "1.42.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation",
            "direct": false,
            "version": "0.63b1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-proto",
            "direct": false,
            "version": "1.42.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-sdk",
            "direct": false,
            "version": "1.42.1",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-semantic-conventions",
            "direct": false,
            "version": "0.63b1",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "plotly",
            "direct": false,
            "version": "6.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "properdocs",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "pypi"
          },
          {
            "name": "protobuf",
            "direct": false,
            "version": "6.33.6",
            "ecosystem": "pypi"
          },
          {
            "name": "pyasn1",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "2.23",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.41.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.46.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-extra-types",
            "direct": false,
            "version": "2.11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymdown-extensions",
            "direct": false,
            "version": "10.21.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-asyncio",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-discovery",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-jose",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-multipart",
            "direct": false,
            "version": "0.0.31",
            "ecosystem": "pypi"
          },
          {
            "name": "python-multipart",
            "direct": false,
            "version": "0.0.32",
            "ecosystem": "pypi"
          },
          {
            "name": "pytokens",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": false,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml-env-tag",
            "direct": false,
            "version": "1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "referencing",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-mock",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "responses",
            "direct": false,
            "version": "0.26.1",
            "ecosystem": "pypi"
          },
          {
            "name": "retrying",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rich-toolkit",
            "direct": false,
            "version": "0.19.7",
            "ecosystem": "pypi"
          },
          {
            "name": "rich-toolkit",
            "direct": false,
            "version": "0.20.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rignore",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "0.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "2026.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "rsa",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.15.16",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.15.3",
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sentry-sdk",
            "direct": false,
            "version": "2.56.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sentry-sdk",
            "direct": false,
            "version": "2.61.1",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "82.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sklearn",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "sniffio",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "starlette",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "taskipy",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tensorflow",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "termcolor",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "threadpoolctl",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "torch",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "torchvision",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "truststore",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspection",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "uvloop",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "pypi"
          },
          {
            "name": "verspec",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "watchfiles",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "watchfiles",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "websockets",
            "direct": false,
            "version": "15.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "websockets",
            "direct": false,
            "version": "16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "werkzeug",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "zensical",
            "direct": false,
            "version": "0.0.44",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 616,
        "direct_count": 77,
        "indirect_count": 539
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 35,
        "merged_prs": 652,
        "open_issues": 108,
        "closed_ratio": 0.764,
        "closed_issues": 350,
        "closed_unmerged_prs": 105
      },
      "bus_factor": 4,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "benoit-cty",
          "commits": 562,
          "avatar_url": "https://avatars.githubusercontent.com/u/6603048?v=4"
        },
        {
          "type": "User",
          "login": "vict0rsch",
          "commits": 240,
          "avatar_url": "https://avatars.githubusercontent.com/u/9283470?v=4"
        },
        {
          "type": "User",
          "login": "Goyal-Kamal",
          "commits": 195,
          "avatar_url": "https://avatars.githubusercontent.com/u/77163202?v=4"
        },
        {
          "type": "User",
          "login": "inimaz",
          "commits": 146,
          "avatar_url": "https://avatars.githubusercontent.com/u/49730431?v=4"
        },
        {
          "type": "User",
          "login": "MarionCoutarel",
          "commits": 110,
          "avatar_url": "https://avatars.githubusercontent.com/u/87311267?v=4"
        },
        {
          "type": "User",
          "login": "LuisBlanche",
          "commits": 99,
          "avatar_url": "https://avatars.githubusercontent.com/u/18741447?v=4"
        },
        {
          "type": "User",
          "login": "Lothiraldan",
          "commits": 79,
          "avatar_url": "https://avatars.githubusercontent.com/u/243665?v=4"
        },
        {
          "type": "User",
          "login": "jl-datascientist",
          "commits": 52,
          "avatar_url": "https://avatars.githubusercontent.com/u/73858729?v=4"
        },
        {
          "type": "User",
          "login": "SaboniAmine",
          "commits": 51,
          "avatar_url": "https://avatars.githubusercontent.com/u/43726203?v=4"
        },
        {
          "type": "User",
          "login": "LiamConnell",
          "commits": 49,
          "avatar_url": "https://avatars.githubusercontent.com/u/8690964?v=4"
        }
      ],
      "contributors_sampled": 97,
      "top_contributor_share": 0.259
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-docs.yml",
        "build-server.yml",
        "build-ui.yml",
        "codeql.yml",
        "deploy-docs.yml",
        "deploy.yml",
        "package-validation-reusable.yml",
        "package.yml",
        "pre-commit.yml",
        "python-publish.yml",
        "release-drafter.yml",
        "scorecard.yml",
        "test-api-requirements.yml",
        "test-package.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".eslintrc.json",
        ".flake8"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "20 out of 20 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": 2,
            "reason": "badge detected: InProgress",
            "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 14 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 6 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": 10,
            "reason": "SAST tool is run on all commits",
            "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": 0,
            "reason": "22 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "336da333f3ff4b0110ab1a2b3106ce1f341fa2f8",
        "ran_at": "2026-07-28T15:31:12Z",
        "aggregate_score": 7.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-28T08:42:36Z",
      "oldest_open_prs": [
        {
          "number": 330,
          "created_at": "2022-08-09T15:44:58Z",
          "last_comment_at": "2025-05-01T19:41:25Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 571,
          "created_at": "2024-06-12T06:51:24Z",
          "last_comment_at": "2024-06-20T09:34:42Z",
          "last_comment_author": "SaboniAmine"
        },
        {
          "number": 722,
          "created_at": "2024-11-26T21:48:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 752,
          "created_at": "2024-12-20T11:55:26Z",
          "last_comment_at": "2025-04-19T10:54:52Z",
          "last_comment_author": "LuisBlanche"
        },
        {
          "number": 791,
          "created_at": "2025-02-28T07:26:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 797,
          "created_at": "2025-03-09T19:51:59Z",
          "last_comment_at": "2026-03-27T10:36:43Z",
          "last_comment_author": "inimaz"
        },
        {
          "number": 883,
          "created_at": "2025-07-02T08:34:17Z",
          "last_comment_at": "2026-05-23T14:50:21Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 977,
          "created_at": "2025-11-19T21:00:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1025,
          "created_at": "2026-01-12T11:56:49Z",
          "last_comment_at": "2026-01-12T12:21:16Z",
          "last_comment_author": "Matyro"
        },
        {
          "number": 1029,
          "created_at": "2026-01-18T10:27:47Z",
          "last_comment_at": "2026-03-29T07:50:52Z",
          "last_comment_author": "SaboniAmine"
        },
        {
          "number": 1030,
          "created_at": "2026-01-18T17:44:28Z",
          "last_comment_at": "2026-01-19T09:32:14Z",
          "last_comment_author": "SaboniAmine"
        },
        {
          "number": 1062,
          "created_at": "2026-02-15T12:21:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1096,
          "created_at": "2026-03-03T21:47:42Z",
          "last_comment_at": "2026-03-20T16:04:40Z",
          "last_comment_author": "cianc"
        },
        {
          "number": 1161,
          "created_at": "2026-04-16T00:34:20Z",
          "last_comment_at": "2026-04-19T00:39:58Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 1168,
          "created_at": "2026-04-22T09:20:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1169,
          "created_at": "2026-04-28T16:37:34Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1192,
          "created_at": "2026-05-13T05:25:58Z",
          "last_comment_at": "2026-05-19T07:21:49Z",
          "last_comment_author": "HirenGajjar"
        },
        {
          "number": 1200,
          "created_at": "2026-05-19T18:01:52Z",
          "last_comment_at": "2026-06-17T15:50:17Z",
          "last_comment_author": "davidberenstein1957"
        },
        {
          "number": 1203,
          "created_at": "2026-05-19T19:33:42Z",
          "last_comment_at": "2026-07-20T11:43:33Z",
          "last_comment_author": "davidberenstein1957"
        },
        {
          "number": 1234,
          "created_at": "2026-06-10T14:37:13Z",
          "last_comment_at": "2026-06-10T14:40:35Z",
          "last_comment_author": "codecov"
        }
      ],
      "last_merged_pr_at": "2026-07-28T08:40:16Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 138,
          "created_at": "2021-04-02T07:18:56Z",
          "last_comment_at": "2023-08-23T15:30:35Z",
          "last_comment_author": "inimaz"
        },
        {
          "number": 222,
          "created_at": "2021-07-29T20:35:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 224,
          "created_at": "2021-07-29T20:40:02Z",
          "last_comment_at": "2024-03-10T15:09:03Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 244,
          "created_at": "2021-09-02T19:48:35Z",
          "last_comment_at": "2025-11-25T13:02:48Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 246,
          "created_at": "2021-09-02T20:11:37Z",
          "last_comment_at": "2026-05-16T08:18:20Z",
          "last_comment_author": "hussainshamkhani"
        },
        {
          "number": 261,
          "created_at": "2021-10-18T18:57:43Z",
          "last_comment_at": "2023-04-05T12:54:31Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 276,
          "created_at": "2022-01-12T01:41:04Z",
          "last_comment_at": "2026-04-22T09:10:02Z",
          "last_comment_author": "yezhi0"
        },
        {
          "number": 312,
          "created_at": "2022-05-24T21:02:39Z",
          "last_comment_at": "2025-12-14T14:47:27Z",
          "last_comment_author": "inimaz"
        },
        {
          "number": 326,
          "created_at": "2022-07-29T09:00:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 336,
          "created_at": "2022-10-04T09:18:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 365,
          "created_at": "2023-01-09T08:40:00Z",
          "last_comment_at": "2023-01-11T21:27:51Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 382,
          "created_at": "2023-03-16T16:27:56Z",
          "last_comment_at": "2023-07-23T19:25:41Z",
          "last_comment_author": "jennydaman"
        },
        {
          "number": 383,
          "created_at": "2023-03-18T16:48:16Z",
          "last_comment_at": "2023-03-21T12:30:07Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 384,
          "created_at": "2023-03-31T11:01:14Z",
          "last_comment_at": "2023-04-05T12:40:24Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 399,
          "created_at": "2023-04-30T10:20:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 400,
          "created_at": "2023-04-30T11:36:17Z",
          "last_comment_at": "2023-07-04T19:21:27Z",
          "last_comment_author": "benoit-cty"
        },
        {
          "number": 404,
          "created_at": "2023-05-05T06:37:03Z",
          "last_comment_at": "2025-01-12T13:22:47Z",
          "last_comment_author": "jonperron"
        },
        {
          "number": 410,
          "created_at": "2023-05-25T08:37:02Z",
          "last_comment_at": "2026-05-01T18:08:36Z",
          "last_comment_author": "vivek41-glitch"
        },
        {
          "number": 413,
          "created_at": "2023-06-05T11:05:04Z",
          "last_comment_at": "2024-06-17T05:46:47Z",
          "last_comment_author": "SaboniAmine"
        },
        {
          "number": 414,
          "created_at": "2023-06-06T05:44:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/mlco2/codecarbon",
    "host": "github.com",
    "name": "codecarbon",
    "owner": "mlco2"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 90,
      "inputs": {
        "security": 82,
        "vitality": 99,
        "community": 87,
        "governance": 82,
        "engineering": 100
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 99,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "commits_last_year": 564,
              "human_commit_share": 0.87,
              "days_since_last_push": 0,
              "active_weeks_last_year": 50
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "50/52 weeks with commits",
                "points": 34.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 50
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "564 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 564
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 68,
              "latest_release_tag": "v3.2.9",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 25.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "68 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 68
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~25.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 25.7
                    }
                  }
                ],
                "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": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 87,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "forks": 307,
              "stars": 1887,
              "watchers": 26,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,887 stars",
                "points": 53.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1887
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "307 forks",
                "points": 20.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 307
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "26 watchers",
                "points": 7.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "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": 88,
            "inputs": {
              "packages": [
                "codecarbon"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 181657
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "181,657 downloads/month across pypi",
                "points": 70.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 181657,
                      "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": 82,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "bus_factor": 4,
              "contributors_sampled": 97,
              "top_contributor_share": 0.259
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "4 contributor(s) cover half of all commits",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 26% of commits",
                "points": 16.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 26
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "97 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 97
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 14 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "merged_prs": 652,
              "open_issues": 108,
              "closed_issues": 350,
              "issue_closed_ratio": 0.764,
              "closed_unmerged_prs": 105
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "76% of issues closed",
                "points": 35.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 76
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "652/757 decided PRs merged",
                "points": 32.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 652,
                      "decided": 757
                    }
                  }
                ],
                "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": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "followers": 100,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "mlco2",
              "public_repos": 13,
              "account_age_days": 2541
            },
            "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": "100 followers of mlco2",
                "points": 14.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 100,
                      "login": "mlco2"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "13 public repos, account ~6 yr old",
                "points": 20.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 13
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "codecarbon"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "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 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "74 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "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": 100,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "14 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".eslintrc.json, .flake8",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, .flake8"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "20 out of 20 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": 100,
            "inputs": {
              "topics": [
                "ai-ethics",
                "carbon-emissions",
                "carbon-footprint",
                "co2-emissions",
                "energy-consumption",
                "energy-efficiency",
                "fairness",
                "sustainability"
              ],
              "has_wiki": true,
              "homepage": "https://docs.codecarbon.io/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://docs.codecarbon.io/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 82,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 77,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 7.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "20 out of 20 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": "badge detected: InProgress",
                "points": 0.5,
                "status": "partial",
                "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 14 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 6 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 run on all commits",
                "points": 5,
                "status": "met",
                "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": "22 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:codecarbon@3.2.9 runtime dependency closure — what installing the published package pulls in — 38 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:codecarbon@3.2.9",
                  "assessed": 38
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 38,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "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": 38,
              "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": 3
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 74,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.644,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                "AGENTS.md",
                "CLAUDE.md",
                "GEMINI.md",
                "docs/how-to/agents.md"
              ],
              "agent_instruction_max_bytes": 4115
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, docs/how-to/agents.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, docs/how-to/agents.md"
                    }
                  }
                ],
                "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": "56 of 87 human commits state their intent (structured subject or explanatory body)",
                "points": 34.3,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 56,
                      "sampled": 87
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "codecarbon/py.typed",
                "webapp/tsconfig.json"
              ],
              "agent_commit_share": 0.07,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.11
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.json, .flake8",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, .flake8"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "codecarbon/py.typed, webapp/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "codecarbon/py.typed, webapp/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "7 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 7,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "11 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 11,
                      "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": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 77721,
              "source_files_sampled": 405,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (codecarbon/py.typed, webapp/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "codecarbon/py.typed, webapp/tsconfig.json",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/405 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 405,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "notebooks"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, notebooks",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, notebooks"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? 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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch pypi package 'carbonserver' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T15:31:46.231969Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/mlco2/codecarbon.svg",
  "full_name": "mlco2/codecarbon",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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.27.0 — full methodology · metrics wiki.

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