{"id":193332,"name":"EcoLogits","description":"Tracks the energy consumption and environmental impacts of using generative AI models through APIs.","url":"https://github.com/mlco2/ecologits","last_synced_at":"2026-05-27T10:02:12.522Z","repository":{"id":223467899,"uuid":"751927947","full_name":"mlco2/ecologits","owner":"mlco2","description":"🌱 EcoLogits tracks the energy consumption and environmental footprint of using generative AI models through APIs.","archived":false,"fork":false,"pushed_at":"2026-05-20T18:19:19.000Z","size":14834,"stargazers_count":285,"open_issues_count":10,"forks_count":27,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-05-23T08:03:36.795Z","etag":null,"topics":["genai","generative-ai","green-ai","green-software","llm","llm-inference","python","sustainability","sustainable-ai"],"latest_commit_sha":null,"homepage":"https://ecologits.ai/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlco2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-02T16:25:32.000Z","updated_at":"2026-05-22T03:41:02.000Z","dependencies_parsed_at":"2026-03-08T01:02:10.737Z","dependency_job_id":"57a3f754-5725-45cd-9333-3d97e9f04813","html_url":"https://github.com/mlco2/ecologits","commit_stats":{"total_commits":476,"total_committers":10,"mean_commits":47.6,"dds":0.3529411764705882,"last_synced_commit":"0cd0df2b05690a73e2afa3f9353ef32c26e8f512"},"previous_names":["dataforgoodfr/12_genai_impact","genai-impact/ecologits","mlco2/ecologits"],"tags_count":33,"template":false,"template_full_name":"dataforgoodfr/d4g-project-template","purl":"pkg:github/mlco2/ecologits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlco2","download_url":"https://codeload.github.com/mlco2/ecologits/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33467443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T06:32:55.349Z","status":"ssl_error","status_checked_at":"2026-05-25T06:32:35.322Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"mlco2","name":"CodeCarbon","uuid":"54071934","kind":"organization","description":"","email":null,"website":"https://codecarbon.io","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/54071934?v=4","repositories_count":7,"last_synced_at":"2025-11-12T05:34:26.578Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/mlco2","funding_links":["https://github.com/sponsors/mlco2"],"total_stars":1842,"followers":72,"following":0,"created_at":"2022-11-14T20:59:51.817Z","updated_at":"2025-11-12T05:34:26.578Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlco2","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlco2/repositories"},"packages":[],"commits":{"id":11615663,"full_name":"mlco2/ecologits","default_branch":"master","total_commits":809,"total_committers":17,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":47.588235294117645,"dds":0.34116192830655134,"past_year_total_commits":264,"past_year_total_committers":8,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":33.0,"past_year_dds":0.2992424242424242,"last_synced_at":"2026-05-25T09:04:14.177Z","last_synced_commit":"97a571820128f89cf6e963bdc10f64291a8d7cdb","created_at":"2026-02-07T22:02:11.280Z","updated_at":"2026-05-25T09:04:05.459Z","committers":[{"name":"Samuel Rince","email":"s@rince.me","login":"samuelrince","count":533},{"name":"Adrien Banse","email":"adrien.banse@uclouvain.be","login":"adrienbanse","count":173},{"name":"luc","email":"luc.jp.berton@test.com","login":null,"count":32},{"name":"Chieh","email":"hsuchieh1010@gmail.com","login":"HsuChieh","count":19},{"name":"Caroline Jean-Pierre","email":"112259290+cjean-pierre","login":"cjean-pierre","count":18},{"name":"Nina P","email":"23741953+NP4567-dev","login":"NP4567-dev","count":7},{"name":"vinh","email":"vinh94@hotmail.fr","login":"aqwvinh","count":5},{"name":"Jay DesLauriers","email":"35102795+jaydesl","login":"jaydesl","count":4},{"name":"Luc BERTON","email":"luc.jp.berton@gmail.com","login":"LucBERTON","count":4},{"name":"sauraisg","email":"gael.saurais@gmail.com","login":"sauraisg","count":3},{"name":"Clovis Varangot-Reille","email":"113834539+cvarrei","login":"cvarrei","count":2},{"name":"Romain ROCHAS","email":"46826777+yipfram","login":"yipfram","count":2},{"name":"Yoann Couble","email":"yoann.couble@valraiso.fr","login":"ycouble","count":2},{"name":"Luc","email":"luc@test.fr","login":null,"count":2},{"name":"DataForGood (Tech)","email":"151943396+d4gtech","login":"d4gtech","count":1},{"name":"Thilo Michael","email":"uhlomuhlo@gmail.com","login":"thilomichael","count":1},{"name":"dtamien","email":"76497025+dtamien","login":"dtamien","count":1}],"past_year_committers":[{"name":"Samuel Rince","email":"s@rince.me","login":"samuelrince","count":185},{"name":"adrienbanse","email":"adrien.banse@gmail.com","login":"adrienbanse","count":32},{"name":"Chieh","email":"hsuchieh1010@gmail.com","login":"HsuChieh","count":19},{"name":"Caroline Jean-Pierre","email":"112259290+cjean-pierre","login":"cjean-pierre","count":18},{"name":"Jay DesLauriers","email":"35102795+jaydesl","login":"jaydesl","count":4},{"name":"sauraisg","email":"gael.saurais@gmail.com","login":"sauraisg","count":3},{"name":"Romain ROCHAS","email":"46826777+yipfram","login":"yipfram","count":2},{"name":"dtamien","email":"76497025+dtamien","login":"dtamien","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-27T00:00:12.503Z","repositories_count":6242919,"commits_count":883231511,"contributors_count":34934598,"owners_count":1158009,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"mlco2/ecologits","html_url":"https://github.com/mlco2/ecologits","last_synced_at":"2026-05-23T08:01:22.106Z","status":"active","issues_count":2,"pull_requests_count":12,"avg_time_to_close_issue":912056.5,"avg_time_to_close_pull_request":309253.6,"issues_closed_count":2,"pull_requests_closed_count":10,"pull_request_authors_count":4,"issue_authors_count":2,"avg_comments_per_issue":1.5,"avg_comments_per_pull_request":0.3333333333333333,"merged_pull_requests_count":9,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":912056.5,"past_year_avg_time_to_close_pull_request":309253.6,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":10,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"created_at":"2026-02-21T18:00:08.799Z","updated_at":"2026-05-23T08:01:22.106Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlco2%2Fecologits/issues","issue_labels_count":{"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"MEMBER":1,"NONE":1},"pull_request_author_associations_count":{"COLLABORATOR":7,"NONE":3,"MEMBER":2},"issue_authors":{"samuelrince":1,"fraboniface":1},"pull_request_authors":{"samuelrince":9,"Popidge":1,"dtamien":1,"vinisha231":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-25T00:00:55.688Z","repositories_count":14698204,"issues_count":34049985,"pull_requests_count":111452535,"authors_count":11273569,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"MEMBER":1,"NONE":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":7,"NONE":3,"MEMBER":2},"past_year_issue_authors":{"fraboniface":1,"samuelrince":1},"past_year_pull_request_authors":{"samuelrince":9,"dtamien":1,"Popidge":1,"vinisha231":1},"maintainers":[{"login":"samuelrince","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelrince"}],"active_maintainers":[{"login":"samuelrince","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelrince"}]},"events":{"total":{"DeleteEvent":8,"MemberEvent":2,"PullRequestEvent":8,"ForkEvent":2,"DiscussionEvent":1,"WatchEvent":6,"IssueCommentEvent":3,"PushEvent":28,"CreateEvent":4},"last_year":{"DeleteEvent":8,"MemberEvent":2,"PullRequestEvent":8,"ForkEvent":2,"DiscussionEvent":1,"WatchEvent":6,"IssueCommentEvent":3,"PushEvent":28,"CreateEvent":4}},"keywords":["genai","generative-ai","green-ai","green-software","llm","llm-inference","python","sustainability","sustainable-ai"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/publish-testpypi.yaml","sha":null,"kind":"manifest","created_at":"2026-03-08T01:01:55.905Z","updated_at":"2026-03-08T01:01:55.905Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/.github/workflows/publish-testpypi.yaml","dependencies":[{"id":25833651849,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25833651850,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"v7","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pytest.yaml","sha":null,"kind":"manifest","created_at":"2026-03-08T01:01:55.982Z","updated_at":"2026-03-08T01:01:55.982Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/.github/workflows/pytest.yaml","dependencies":[{"id":25833651851,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25833651852,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"v7","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"uv.lock","sha":null,"kind":"lockfile","created_at":"2026-03-08T01:01:56.105Z","updated_at":"2026-03-08T01:01:56.105Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/uv.lock","dependencies":[{"id":25833651855,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.6.1","direct":false,"kind":"runtime","optional":false},{"id":25833651856,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.13.3","direct":false,"kind":"runtime","optional":false},{"id":25833651857,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":25833651858,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":25833651859,"package_name":"anthropic","ecosystem":"pypi","requirements":"0.45.2","direct":false,"kind":"runtime","optional":false},{"id":25833651860,"package_name":"anyio","ecosystem":"pypi","requirements":"4.12.1","direct":false,"kind":"runtime","optional":false},{"id":25833651861,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":25833651993,"package_name":"attrs","ecosystem":"pypi","requirements":"25.4.0","direct":false,"kind":"runtime","optional":false},{"id":25833652370,"package_name":"babel","ecosystem":"pypi","requirements":"2.18.0","direct":false,"kind":"runtime","optional":false},{"id":25833652371,"package_name":"backports-asyncio-runner","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":25833652372,"package_name":"backrefs","ecosystem":"pypi","requirements":"6.2","direct":false,"kind":"runtime","optional":false},{"id":25833652494,"package_name":"cairocffi","ecosystem":"pypi","requirements":"1.7.1","direct":false,"kind":"runtime","optional":false},{"id":25833652506,"package_name":"cairosvg","ecosystem":"pypi","requirements":"2.8.2","direct":false,"kind":"runtime","optional":false},{"id":25833652544,"package_name":"certifi","ecosystem":"pypi","requirements":"2026.1.4","direct":false,"kind":"runtime","optional":false},{"id":25833652545,"package_name":"cffi","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25833652546,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.5.0","direct":false,"kind":"runtime","optional":false},{"id":25833652547,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.4","direct":false,"kind":"runtime","optional":false},{"id":25833652548,"package_name":"click","ecosystem":"pypi","requirements":"8.3.1","direct":false,"kind":"runtime","optional":false},{"id":25833652549,"package_name":"cohere","ecosystem":"pypi","requirements":"5.20.6","direct":false,"kind":"runtime","optional":false},{"id":25833652574,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":25833652575,"package_name":"cryptography","ecosystem":"pypi","requirements":"46.0.5","direct":false,"kind":"runtime","optional":false},{"id":25833652576,"package_name":"cssselect2","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":25833652579,"package_name":"defusedxml","ecosystem":"pypi","requirements":"0.7.1","direct":false,"kind":"runtime","optional":false},{"id":25833652602,"package_name":"distlib","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":25833652627,"package_name":"distro","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":25833652628,"package_name":"ecologits","ecosystem":"pypi","requirements":"0.9.3","direct":false,"kind":"runtime","optional":false},{"id":25833652664,"package_name":"eval-type-backport","ecosystem":"pypi","requirements":"0.3.1","direct":false,"kind":"runtime","optional":false},{"id":25833652693,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":25833652694,"package_name":"fastavro","ecosystem":"pypi","requirements":"1.12.1","direct":false,"kind":"runtime","optional":false},{"id":25833652737,"package_name":"fastuuid","ecosystem":"pypi","requirements":"0.14.0","direct":false,"kind":"runtime","optional":false},{"id":25833652748,"package_name":"filelock","ecosystem":"pypi","requirements":"3.24.3","direct":false,"kind":"runtime","optional":false},{"id":25833652749,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":25833652750,"package_name":"fsspec","ecosystem":"pypi","requirements":"2026.2.0","direct":false,"kind":"runtime","optional":false},{"id":25833652751,"package_name":"ghp-import","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25833652757,"package_name":"google-auth","ecosystem":"pypi","requirements":"2.48.0","direct":false,"kind":"runtime","optional":false},{"id":25833652758,"package_name":"google-genai","ecosystem":"pypi","requirements":"1.64.0","direct":false,"kind":"runtime","optional":false},{"id":25833652759,"package_name":"googleapis-common-protos","ecosystem":"pypi","requirements":"1.72.0","direct":false,"kind":"runtime","optional":false},{"id":25833652760,"package_name":"griffelib","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25833652776,"package_name":"grpcio","ecosystem":"pypi","requirements":"1.78.1","direct":false,"kind":"runtime","optional":false},{"id":25833652777,"package_name":"h11","ecosystem":"pypi","requirements":"0.16.0","direct":false,"kind":"runtime","optional":false},{"id":25833652778,"package_name":"httpcore","ecosystem":"pypi","requirements":"1.0.9","direct":false,"kind":"runtime","optional":false},{"id":25833652782,"package_name":"httpx","ecosystem":"pypi","requirements":"0.28.1","direct":false,"kind":"runtime","optional":false},{"id":25833652783,"package_name":"huggingface-hub","ecosystem":"pypi","requirements":"0.28.1","direct":false,"kind":"runtime","optional":false},{"id":25833652784,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.16","direct":false,"kind":"runtime","optional":false},{"id":25833652785,"package_name":"idna","ecosystem":"pypi","requirements":"3.11","direct":false,"kind":"runtime","optional":false},{"id":25833652786,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"8.7.1","direct":false,"kind":"runtime","optional":false},{"id":25833652815,"package_name":"importlib-resources","ecosystem":"pypi","requirements":"6.5.2","direct":false,"kind":"runtime","optional":false},{"id":25833652824,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":25833652825,"package_name":"invoke","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":25833652839,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.6","direct":false,"kind":"runtime","optional":false},{"id":25833652840,"package_name":"jiter","ecosystem":"pypi","requirements":"0.13.0","direct":false,"kind":"runtime","optional":false},{"id":25833652841,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.26.0","direct":false,"kind":"runtime","optional":false},{"id":25833652843,"package_name":"jsonschema-specifications","ecosystem":"pypi","requirements":"2025.9.1","direct":false,"kind":"runtime","optional":false},{"id":25833652844,"package_name":"librt","ecosystem":"pypi","requirements":"0.8.1","direct":false,"kind":"runtime","optional":false},{"id":25833652890,"package_name":"litellm","ecosystem":"pypi","requirements":"1.80.0","direct":false,"kind":"runtime","optional":false},{"id":25833652925,"package_name":"markdown","ecosystem":"pypi","requirements":"3.10.2","direct":false,"kind":"runtime","optional":false},{"id":25833652928,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"runtime","optional":false},{"id":25833652929,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":25833652941,"package_name":"mike","ecosystem":"pypi","requirements":"2.1.3","direct":false,"kind":"runtime","optional":false},{"id":25833652988,"package_name":"minijinja","ecosystem":"pypi","requirements":"2.16.0","direct":false,"kind":"runtime","optional":false},{"id":25833652996,"package_name":"mistralai","ecosystem":"pypi","requirements":"1.12.4","direct":false,"kind":"runtime","optional":false},{"id":25833653010,"package_name":"mkdocs","ecosystem":"pypi","requirements":"1.6.1","direct":false,"kind":"runtime","optional":false},{"id":25833653011,"package_name":"mkdocs-autorefs","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":"runtime","optional":false},{"id":25833653027,"package_name":"mkdocs-gen-files","ecosystem":"pypi","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":25833653032,"package_name":"mkdocs-get-deps","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":25833653049,"package_name":"mkdocs-literate-nav","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"runtime","optional":false},{"id":25833653058,"package_name":"mkdocs-material","ecosystem":"pypi","requirements":"9.7.2","direct":false,"kind":"runtime","optional":false},{"id":25833653061,"package_name":"mkdocs-material-extensions","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":25833653064,"package_name":"mkdocstrings","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":25833653153,"package_name":"mkdocstrings-python","ecosystem":"pypi","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":25833653163,"package_name":"multidict","ecosystem":"pypi","requirements":"6.7.1","direct":false,"kind":"runtime","optional":false},{"id":25833653203,"package_name":"mypy","ecosystem":"pypi","requirements":"1.19.1","direct":false,"kind":"runtime","optional":false},{"id":25833653204,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25833653205,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.10.0","direct":false,"kind":"runtime","optional":false},{"id":25833653206,"package_name":"numpy","ecosystem":"pypi","requirements":"2.2.6","direct":false,"kind":"runtime","optional":false},{"id":25833653207,"package_name":"numpy","ecosystem":"pypi","requirements":"2.4.2","direct":false,"kind":"runtime","optional":false},{"id":25833653208,"package_name":"openai","ecosystem":"pypi","requirements":"1.109.1","direct":false,"kind":"runtime","optional":false},{"id":25833653209,"package_name":"opentelemetry-api","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653223,"package_name":"opentelemetry-exporter-otlp","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653246,"package_name":"opentelemetry-exporter-otlp-proto-common","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653258,"package_name":"opentelemetry-exporter-otlp-proto-grpc","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653275,"package_name":"opentelemetry-exporter-otlp-proto-http","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653289,"package_name":"opentelemetry-proto","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653292,"package_name":"opentelemetry-sdk","ecosystem":"pypi","requirements":"1.39.1","direct":false,"kind":"runtime","optional":false},{"id":25833653307,"package_name":"opentelemetry-semantic-conventions","ecosystem":"pypi","requirements":"0.60b1","direct":false,"kind":"runtime","optional":false},{"id":25833653313,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":25833653314,"package_name":"paginate","ecosystem":"pypi","requirements":"0.5.7","direct":false,"kind":"runtime","optional":false},{"id":25833653316,"package_name":"pathspec","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"runtime","optional":false},{"id":25833653319,"package_name":"pillow","ecosystem":"pypi","requirements":"12.1.1","direct":false,"kind":"runtime","optional":false},{"id":25833653320,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.9.2","direct":false,"kind":"runtime","optional":false},{"id":25833653321,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":25833653322,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.5.1","direct":false,"kind":"runtime","optional":false},{"id":25833653323,"package_name":"propcache","ecosystem":"pypi","requirements":"0.4.1","direct":false,"kind":"runtime","optional":false},{"id":25833653324,"package_name":"protobuf","ecosystem":"pypi","requirements":"6.33.5","direct":false,"kind":"runtime","optional":false},{"id":25833653325,"package_name":"pyasn1","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"runtime","optional":false},{"id":25833653326,"package_name":"pyasn1-modules","ecosystem":"pypi","requirements":"0.4.2","direct":false,"kind":"runtime","optional":false},{"id":25833653327,"package_name":"pycparser","ecosystem":"pypi","requirements":"3.0","direct":false,"kind":"runtime","optional":false},{"id":25833653328,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.12.5","direct":false,"kind":"runtime","optional":false},{"id":25833653329,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.41.5","direct":false,"kind":"runtime","optional":false},{"id":25833653330,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.2","direct":false,"kind":"runtime","optional":false},{"id":25833653331,"package_name":"pymdown-extensions","ecosystem":"pypi","requirements":"10.21","direct":false,"kind":"runtime","optional":false},{"id":25833653337,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.3.2","direct":false,"kind":"runtime","optional":false},{"id":25833653338,"package_name":"pytest","ecosystem":"pypi","requirements":"9.0.2","direct":false,"kind":"runtime","optional":false},{"id":25833653339,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":25833653340,"package_name":"pytest-dotenv","ecosystem":"pypi","requirements":"0.5.2","direct":false,"kind":"runtime","optional":false},{"id":25833653369,"package_name":"pytest-recording","ecosystem":"pypi","requirements":"0.13.4","direct":false,"kind":"runtime","optional":false},{"id":25833653371,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":25833653372,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"1.2.1","direct":false,"kind":"runtime","optional":false},{"id":25833653373,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.3","direct":false,"kind":"runtime","optional":false},{"id":25833653374,"package_name":"pyyaml-env-tag","ecosystem":"pypi","requirements":"1.1","direct":false,"kind":"runtime","optional":false},{"id":25833653379,"package_name":"rapidfuzz","ecosystem":"pypi","requirements":"3.14.3","direct":false,"kind":"runtime","optional":false},{"id":25833653380,"package_name":"referencing","ecosystem":"pypi","requirements":"0.37.0","direct":false,"kind":"runtime","optional":false},{"id":25833653381,"package_name":"regex","ecosystem":"pypi","requirements":"2026.2.19","direct":false,"kind":"runtime","optional":false},{"id":25833653382,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.5","direct":false,"kind":"runtime","optional":false},{"id":25833653383,"package_name":"rpds-py","ecosystem":"pypi","requirements":"0.30.0","direct":false,"kind":"runtime","optional":false},{"id":25833653384,"package_name":"rsa","ecosystem":"pypi","requirements":"4.9.1","direct":false,"kind":"runtime","optional":false},{"id":25833653386,"package_name":"setuptools","ecosystem":"pypi","requirements":"82.0.0","direct":false,"kind":"runtime","optional":false},{"id":25833653388,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":25833653389,"package_name":"sniffio","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":25833653421,"package_name":"tenacity","ecosystem":"pypi","requirements":"9.1.4","direct":false,"kind":"runtime","optional":false},{"id":25833653422,"package_name":"tiktoken","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":25833653423,"package_name":"tinycss2","ecosystem":"pypi","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":25833653436,"package_name":"tokenizers","ecosystem":"pypi","requirements":"0.22.2","direct":false,"kind":"runtime","optional":false},{"id":25833653437,"package_name":"toml","ecosystem":"pypi","requirements":"0.10.2","direct":false,"kind":"runtime","optional":false},{"id":25833653438,"package_name":"tomli","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":25833653439,"package_name":"tqdm","ecosystem":"pypi","requirements":"4.67.3","direct":false,"kind":"runtime","optional":false},{"id":25833653440,"package_name":"types-requests","ecosystem":"pypi","requirements":"2.32.4.20260107","direct":false,"kind":"runtime","optional":false},{"id":25833653441,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.15.0","direct":false,"kind":"runtime","optional":false},{"id":25833653442,"package_name":"typing-inspection","ecosystem":"pypi","requirements":"0.4.2","direct":false,"kind":"runtime","optional":false},{"id":25833653443,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.6.3","direct":false,"kind":"runtime","optional":false},{"id":25833653444,"package_name":"vcrpy","ecosystem":"pypi","requirements":"8.1.1","direct":false,"kind":"runtime","optional":false},{"id":25833653445,"package_name":"verspec","ecosystem":"pypi","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":25833653458,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.38.0","direct":false,"kind":"runtime","optional":false},{"id":25833653489,"package_name":"watchdog","ecosystem":"pypi","requirements":"6.0.0","direct":false,"kind":"runtime","optional":false},{"id":25833653490,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":25833653565,"package_name":"websockets","ecosystem":"pypi","requirements":"15.0.1","direct":false,"kind":"runtime","optional":false},{"id":25833653566,"package_name":"wrapt","ecosystem":"pypi","requirements":"1.17.3","direct":false,"kind":"runtime","optional":false},{"id":25833653567,"package_name":"yarl","ecosystem":"pypi","requirements":"1.22.0","direct":false,"kind":"runtime","optional":false},{"id":25833653568,"package_name":"zipp","ecosystem":"pypi","requirements":"3.23.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish-docs.yaml","sha":null,"kind":"manifest","created_at":"2026-03-08T01:01:55.459Z","updated_at":"2026-03-08T01:01:55.459Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/.github/workflows/publish-docs.yaml","dependencies":[{"id":25833651823,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25833651824,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"v7","direct":true,"kind":"composite","optional":false},{"id":25833651825,"package_name":"samuelcolvin/check-python-version","ecosystem":"actions","requirements":"v4.1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish-pypi.yaml","sha":null,"kind":"manifest","created_at":"2026-03-08T01:01:55.584Z","updated_at":"2026-03-08T01:01:55.584Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/.github/workflows/publish-pypi.yaml","dependencies":[{"id":25833651845,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25833651846,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"v7","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pre-commit.yaml","sha":null,"kind":"manifest","created_at":"2024-02-20T12:29:06.920Z","updated_at":"2024-02-20T12:29:06.920Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/.github/workflows/pre-commit.yaml","dependencies":[{"id":16336331955,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16336331956,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16336331957,"package_name":"actions/cache","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":16336331958,"package_name":"pre-commit/action","ecosystem":"actions","requirements":"v3.0.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-02-20T12:29:07.196Z","updated_at":"2024-02-20T12:29:07.196Z","repository_link":"https://github.com/mlco2/ecologits/blob/main/pyproject.toml","dependencies":[{"id":16336331987,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.8,\u003c4","direct":true,"kind":"runtime","optional":false},{"id":16336331988,"package_name":"pre-commit","ecosystem":"pypi","requirements":"^2.20.0","direct":true,"kind":"develop","optional":false},{"id":16336331989,"package_name":"pytest","ecosystem":"pypi","requirements":"^7.2.0","direct":true,"kind":"develop","optional":false},{"id":16336331990,"package_name":"tox","ecosystem":"pypi","requirements":"^4.4.8","direct":true,"kind":"develop","optional":false}]}],"score":8.520188700396037,"created_at":"2024-05-25T00:05:16.730Z","updated_at":"2026-05-27T10:02:12.539Z","avatar_url":"https://github.com/mlco2.png","language":"Python","category":"Consumption","sub_category":"Computation and Communication","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/logo_dark.png\"\u003e\n    \u003cimg alt=\"EcoLogits\" src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/logo_light.png\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n🌱 **EcoLogits** tracks the energy consumption and environmental impacts of using generative AI models through APIs.\n\n[![PyPI version](https://img.shields.io/pypi/v/ecologits?color=00bf63)](https://pypi.org/project/ecologits/)\n[![PyPI downloads](https://static.pepy.tech/badge/ecologits/month)](https://pepy.tech/projects/ecologits)\n[![Python version](https://img.shields.io/pypi/pyversions/ecologits)](https://pypi.org/project/ecologits/)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1VxrpJ5xuWZKQLsSN12kdqUqkppHRct3G?usp=sharing)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15601289.svg)](https://doi.org/10.5281/zenodo.15601289)\n[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?\u0026logo=discord\u0026logoColor=white)](https://discord.gg/CAecQ2zM4n)\n\nRead the full **documentation on [ecologits.ai](https://ecologits.ai/)**.\n\nEcoLogits is part of the **[CodeCarbon](https://codecarbon.io/) non-profit, chat with us on [Discord](https://discord.gg/CAecQ2zM4n)**.\n\n\n## ⚙️ Installation\n\n```shell\npip install ecologits\n```\n\nFor integration with a specific provider, use `pip install ecologits[openai]`. We are currently supporting the following providers: `anthropic`, `cohere`, `google-genai`, `huggingface-hub`, `mistralai` and `openai`. See the full [list of providers](https://ecologits.ai/latest/tutorial/providers/).\n\n\n## 🚀 Usage\n\n```python\nfrom ecologits import EcoLogits\nfrom openai import OpenAI\n\n# Initialize EcoLogits\nEcoLogits.init(providers=[\"openai\"])\n\nclient = OpenAI(api_key=\"\u003cOPENAI_API_KEY\u003e\")\n\nresponse = client.chat.completions.create(\n    model=\"gpt-4o-mini\",\n    messages=[\n        {\"role\": \"user\", \"content\": \"Tell me a funny joke!\"}\n    ]\n)\n\n# Get estimated environmental impacts of the inference\nprint(f\"Energy consumption: {response.impacts.energy.value.mean} kWh\")\nprint(f\"GHG emissions: {response.impacts.gwp.value.mean} kgCO2eq\")\n```\n\nSee package documentation on [EcoLogits](https://ecologits.ai/)\n\n\n## 💚 Sponsors\n\n\u003ca href=\"https://resilio-solutions.com/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/resilio.png\" alt=\"Resilio\" height=\"100\" width=\"250\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.terra-cognita.ai/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/terra_cognita.png\" alt=\"Terra Cognita\" height=\"100\" width=\"250\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://sopht.com/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/sopht.png\" alt=\"Sopht\" height=\"100\" width=\"250\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.avanade.com/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/avanade.png\" alt=\"Avanade\" height=\"100\" width=\"250\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.theodo.com/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/theodo.png\" alt=\"Theodo\" height=\"100\" width=\"250\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.culture.gouv.fr/\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mlco2/ecologits/main/docs/assets/sponsors/ministere_culture.png\" alt=\"Ministère de la Culture\" height=\"100\" width=\"132\"\u003e\n\u003c/a\u003e\n\n\n## 💪 Contributing\n\nTo get started with setting up a development environment and making a contribution to EcoLogits, see [Contributing to EcoLogits](https://ecologits.ai/latest/contributing/).\n\n\n## ⚖️ License\n\nThis project is licensed under the terms of the [Mozilla Public License Version 2.0 (MPL-2.0)](https://www.mozilla.org/en-US/MPL/2.0/).\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.15601289"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/193332","html_url":"https://ost.ecosyste.ms/projects/193332"}