{"id":20024,"name":"pyEIA","description":"An Energy Information Administration API Python client for researchers who need data.","url":"https://github.com/thomastu/pyEIA","last_synced_at":"2026-04-27T00:01:22.204Z","repository":{"id":31829038,"uuid":"35395943","full_name":"thomastu/pyEIA","owner":"thomastu","description":"An Energy Information Administration (EIA) API python client for researchers who just need data.","archived":false,"fork":false,"pushed_at":"2025-11-06T07:57:04.000Z","size":269,"stargazers_count":30,"open_issues_count":5,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-03-05T01:58:05.196Z","etag":null,"topics":["eia","eia-api","energy","energy-data","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thomastu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"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":"2015-05-11T01:43:04.000Z","updated_at":"2025-12-26T03:24:29.000Z","dependencies_parsed_at":"2023-01-14T19:52:12.484Z","dependency_job_id":null,"html_url":"https://github.com/thomastu/pyEIA","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/thomastu/pyEIA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/sbom","scorecard":{"id":882574,"data":{"date":"2025-08-11","repo":{"name":"github.com/thomastu/pyEIA","commit":"192c1c829d53d77dde8520bc569fa7b04ae33d72"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/thomastu/pyEIA/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/thomastu/pyEIA/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/thomastu/pyEIA/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/thomastu/pyEIA/codeql-analysis.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: GHSA-vqfr-h8mv-ghfj","Warn: Project is vulnerable to: PYSEC-2022-183 / GHSA-h8pj-cxx2-jfg2","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2022-42969"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T08:46:43.200Z","repository_id":31829038,"created_at":"2025-08-24T08:46:43.200Z","updated_at":"2025-08-24T08:46:43.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30454975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"online","status_checked_at":"2026-03-13T02:00:07.565Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"thomastu","name":"Thomas Tu","uuid":"11164430","kind":"user","description":"Software/data engineer working in energy efficiency.","email":"","website":"thomastu.io","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11164430?u=d8069fc8baed3d7874baa9bebe6f9e3fdeff3d17\u0026v=4","repositories_count":34,"last_synced_at":"2024-06-11T15:44:09.759Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thomastu","funding_links":[],"total_stars":33,"followers":18,"following":50,"created_at":"2022-11-06T17:06:54.948Z","updated_at":"2024-06-11T15:44:14.142Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu/repositories"},"packages":[{"id":2870321,"name":"pyeia","ecosystem":"pypi","description":"Python client for the Energy Information Administration (EIA) API","homepage":"https://github.com/thomastu/pyEIA","licenses":"BSD-3-Clause-LBNL","normalized_licenses":["BSD-3-Clause-LBNL"],"repository_url":"https://github.com/thomastu/pyEIA","keywords_array":[],"namespace":null,"versions_count":6,"first_release_published_at":"2020-08-21T04:19:20.000Z","latest_release_published_at":"2022-01-26T23:22:26.000Z","latest_release_number":"0.1.6","last_synced_at":"2026-03-04T22:01:04.552Z","created_at":"2022-04-10T12:12:13.795Z","updated_at":"2026-03-04T22:01:04.553Z","registry_url":"https://pypi.org/project/pyeia/","install_command":"pip install pyeia --index-url https://pypi.org/simple","documentation_url":"https://pyeia.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: Other/Proprietary License","Programming Language :: Python :: 3","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9"],"normalized_name":"pyeia","project_status":null},"repo_metadata":{"id":31829038,"uuid":"35395943","full_name":"thomastu/pyEIA","owner":"thomastu","description":"An Energy Information Administration (EIA) API python client for researchers who just need data.","archived":false,"fork":false,"pushed_at":"2022-12-08T12:17:48.000Z","size":158,"stargazers_count":25,"open_issues_count":5,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-11T17:51:50.980Z","etag":null,"topics":["eia","eia-api","energy","energy-data","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thomastu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-11T01:43:04.000Z","updated_at":"2023-03-07T16:32:38.000Z","dependencies_parsed_at":"2023-01-14T19:52:12.484Z","dependency_job_id":null,"html_url":"https://github.com/thomastu/pyEIA","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217515425,"owners_count":16189013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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_record":{"login":"thomastu","name":"Thomas Tu","uuid":"11164430","kind":"user","description":"Software/data engineer working in energy efficiency.","email":"","website":"thomastu.io","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11164430?u=d8069fc8baed3d7874baa9bebe6f9e3fdeff3d17\u0026v=4","repositories_count":34,"last_synced_at":"2024-06-11T15:44:09.759Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thomastu","funding_links":[],"total_stars":33,"followers":18,"following":50,"created_at":"2022-11-06T17:06:54.948Z","updated_at":"2024-06-11T15:44:14.142Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomastu/repositories"},"tags":[{"name":"0.1.6","sha":"192c1c829d53d77dde8520bc569fa7b04ae33d72","kind":"commit","published_at":"2022-01-26T23:22:08.000Z","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/0.1.6","html_url":"https://github.com/thomastu/pyEIA/releases/tag/0.1.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.6/manifests"},{"name":"0.1.5","sha":"bd6c0472af47d87efcbf4092205ab0bf732973e1","kind":"commit","published_at":"2022-01-26T23:14:45.000Z","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/0.1.5","html_url":"https://github.com/thomastu/pyEIA/releases/tag/0.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.5/manifests"},{"name":"0.1.4","sha":"11e687f0b2ce35ce2829750dc3b16d857494aa91","kind":"commit","published_at":"2020-11-05T08:08:04.000Z","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/0.1.4","html_url":"https://github.com/thomastu/pyEIA/releases/tag/0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.1.4/manifests"},{"name":"0.0.2","sha":"9e9466a7ddfa6d84af65bea2afa60414f8b7a131","kind":"commit","published_at":"2017-01-20T22:17:02.000Z","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/0.0.2","html_url":"https://github.com/thomastu/pyEIA/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.0.2/manifests"},{"name":"0.0.1","sha":"e38ffec2abcbb9bf3d954ac7f4a3662e03913541","kind":"commit","published_at":"2016-10-21T22:59:48.000Z","download_url":"https://codeload.github.com/thomastu/pyEIA/tar.gz/0.0.1","html_url":"https://github.com/thomastu/pyEIA/releases/tag/0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/tags/0.0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-07T19:51:10.531Z","dependent_packages_count":0,"downloads":47,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":43.803932175015156,"dependent_repos_count":22.23250655214879,"dependent_packages_count":7.373338280337238,"stargazers_count":12.203078101041754,"forks_count":14.286982826494912,"docker_downloads_count":null,"average":19.97996758700757},"purl":"pkg:pypi/pyeia","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyeia","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyeia","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyeia/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-07T18:30:58.259Z","issues_count":16,"pull_requests_count":9,"avg_time_to_close_issue":25839714.714285713,"avg_time_to_close_pull_request":5052603.666666667,"issues_closed_count":14,"pull_requests_closed_count":6,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":1.0625,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/issues","maintainers":[{"login":"thomastu","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thomastu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyeia/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyeia/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyeia/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyeia/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyeia/codemeta","maintainers":[{"uuid":"thtu","login":"thtu","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/thtu/","role":null,"created_at":"2023-02-25T03:30:50.345Z","updated_at":"2023-02-25T03:30:50.345Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/thtu/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":813982,"maintainers_count":346084,"namespaces_count":0,"keywords_count":0,"github":"pypi","metadata":{"funded_packages_count":52762},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-03-12T08:07:04.219Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":636133,"full_name":"thomastu/pyEIA","default_branch":"main","total_commits":57,"total_committers":3,"total_bot_commits":2,"total_bot_committers":1,"mean_commits":19.0,"dds":0.4736842105263158,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-03-12T09:39:37.714Z","last_synced_commit":"192c1c829d53d77dde8520bc569fa7b04ae33d72","created_at":"2023-03-09T08:37:40.095Z","updated_at":"2026-03-12T09:39:36.788Z","committers":[{"name":"Thomas Tu","email":"thomasthetu@gmail.com","login":"thomastu","count":30},{"name":"Thomas Tu","email":"ttu@lbl.gov","login":null,"count":25},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-13T00:00:08.723Z","repositories_count":6203538,"commits_count":934275681,"contributors_count":36190878,"owners_count":1149971,"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":"thomastu/pyEIA","html_url":"https://github.com/thomastu/pyEIA","last_synced_at":"2025-09-01T03:33:29.508Z","status":"error","issues_count":16,"pull_requests_count":9,"avg_time_to_close_issue":25839714.714285713,"avg_time_to_close_pull_request":5052603.666666667,"issues_closed_count":14,"pull_requests_closed_count":6,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":1.0625,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:36:48.142Z","updated_at":"2025-09-01T03:33:29.509Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomastu%2FpyEIA/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":5},"issue_author_associations_count":{"OWNER":14,"NONE":2},"pull_request_author_associations_count":{"CONTRIBUTOR":5,"OWNER":3,"NONE":1},"issue_authors":{"thomastu":14,"MattEwen":1,"lydonjj":1},"pull_request_authors":{"dependabot[bot]":5,"thomastu":3,"gitter-badger":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-13T00:00:08.721Z","repositories_count":13689400,"issues_count":34658244,"pull_requests_count":113057692,"authors_count":11198532,"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":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"thomastu","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thomastu"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":5,"PushEvent":2},"last_year":{"WatchEvent":2,"PushEvent":2}},"keywords":["eia","eia-api","energy","energy-data","python"],"dependencies":[{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2022-09-04T09:22:05.954Z","updated_at":"2022-09-04T09:22:05.954Z","repository_link":"https://github.com/thomastu/pyEIA/blob/main/poetry.lock","dependencies":[{"id":3777711046,"package_name":"appdirs","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":"develop","optional":false},{"id":3777711047,"package_name":"atomicwrites","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"develop","optional":false},{"id":3777711048,"package_name":"attrs","ecosystem":"pypi","requirements":"20.2.0","direct":false,"kind":"develop","optional":false},{"id":3777711049,"package_name":"black","ecosystem":"pypi","requirements":"19.10b0","direct":false,"kind":"develop","optional":false},{"id":3777711050,"package_name":"certifi","ecosystem":"pypi","requirements":"2020.6.20","direct":false,"kind":"runtime","optional":false},{"id":3777711051,"package_name":"chardet","ecosystem":"pypi","requirements":"3.0.4","direct":false,"kind":"runtime","optional":false},{"id":3777711052,"package_name":"click","ecosystem":"pypi","requirements":"7.1.2","direct":false,"kind":"runtime","optional":false},{"id":3777711053,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.4","direct":false,"kind":"runtime","optional":false},{"id":3777711054,"package_name":"dynaconf","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":3777711055,"package_name":"h11","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":3777711056,"package_name":"h2","ecosystem":"pypi","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":3777711057,"package_name":"hpack","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":3777711058,"package_name":"hstspreload","ecosystem":"pypi","requirements":"2020.10.20","direct":false,"kind":"runtime","optional":false},{"id":3777711059,"package_name":"httpcore","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":3777711060,"package_name":"httpx","ecosystem":"pypi","requirements":"0.13.3","direct":false,"kind":"runtime","optional":false},{"id":3777711061,"package_name":"hyperframe","ecosystem":"pypi","requirements":"5.2.0","direct":false,"kind":"runtime","optional":false},{"id":3777711062,"package_name":"idna","ecosystem":"pypi","requirements":"2.10","direct":false,"kind":"runtime","optional":false},{"id":3777711063,"package_name":"iniconfig","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"develop","optional":false},{"id":3777711064,"package_name":"loguru","ecosystem":"pypi","requirements":"0.5.3","direct":false,"kind":"runtime","optional":false},{"id":3777711065,"package_name":"numpy","ecosystem":"pypi","requirements":"1.21.0","direct":false,"kind":"runtime","optional":false},{"id":3777711066,"package_name":"packaging","ecosystem":"pypi","requirements":"20.4","direct":false,"kind":"develop","optional":false},{"id":3777711067,"package_name":"pandas","ecosystem":"pypi","requirements":"1.1.4","direct":false,"kind":"runtime","optional":false},{"id":3777711068,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.8.0","direct":false,"kind":"develop","optional":false},{"id":3777711069,"package_name":"pluggy","ecosystem":"pypi","requirements":"0.13.1","direct":false,"kind":"develop","optional":false},{"id":3777711070,"package_name":"py","ecosystem":"pypi","requirements":"1.10.0","direct":false,"kind":"develop","optional":false},{"id":3777711071,"package_name":"pyparsing","ecosystem":"pypi","requirements":"2.4.7","direct":false,"kind":"develop","optional":false},{"id":3777711072,"package_name":"pytest","ecosystem":"pypi","requirements":"6.1.2","direct":false,"kind":"develop","optional":false},{"id":3777711073,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":3777711074,"package_name":"pytz","ecosystem":"pypi","requirements":"2020.4","direct":false,"kind":"runtime","optional":false},{"id":3777711075,"package_name":"regex","ecosystem":"pypi","requirements":"2020.10.28","direct":false,"kind":"develop","optional":false},{"id":3777711076,"package_name":"rfc3986","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":3777711077,"package_name":"six","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":3777711078,"package_name":"sniffio","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":3777711079,"package_name":"toml","ecosystem":"pypi","requirements":"0.10.2","direct":false,"kind":"develop","optional":false},{"id":3777711080,"package_name":"typed-ast","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"develop","optional":false},{"id":3777711081,"package_name":"win32-setctime","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2022-09-04T09:22:05.984Z","updated_at":"2022-09-04T09:22:05.984Z","repository_link":"https://github.com/thomastu/pyEIA/blob/main/pyproject.toml","dependencies":[{"id":3777711086,"package_name":"python","ecosystem":"pypi","requirements":"^3.8","direct":true,"kind":"runtime","optional":false},{"id":3777711087,"package_name":"pandas","ecosystem":"pypi","requirements":"^1.1.0","direct":true,"kind":"runtime","optional":false},{"id":3777711088,"package_name":"click","ecosystem":"pypi","requirements":"^7.1.2","direct":true,"kind":"runtime","optional":false},{"id":3777711089,"package_name":"dynaconf","ecosystem":"pypi","requirements":"^3.0.0","direct":true,"kind":"runtime","optional":false},{"id":3777711090,"package_name":"httpx","ecosystem":"pypi","requirements":"^0.13.3","direct":true,"kind":"runtime","optional":false},{"id":3777711091,"package_name":"loguru","ecosystem":"pypi","requirements":"^0.5.1","direct":true,"kind":"runtime","optional":false},{"id":3777711092,"package_name":"black","ecosystem":"pypi","requirements":"^19.10b0","direct":true,"kind":"develop","optional":false},{"id":3777711093,"package_name":"pytest","ecosystem":"pypi","requirements":"^6.0.1","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/codeql-analysis.yml","sha":null,"kind":"manifest","created_at":"2023-01-14T19:52:12.468Z","updated_at":"2023-01-14T19:52:12.468Z","repository_link":"https://github.com/thomastu/pyEIA/blob/main/.github/workflows/codeql-analysis.yml","dependencies":[{"id":6905201945,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6905201946,"package_name":"github/codeql-action/init","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6905201947,"package_name":"github/codeql-action/autobuild","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6905201948,"package_name":"github/codeql-action/analyze","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":8.545780648268149,"created_at":"2023-09-11T14:52:09.081Z","updated_at":"2026-04-27T00:01:22.239Z","avatar_url":"https://github.com/thomastu.png","language":"Python","category":"Energy Systems","sub_category":"Energy Data Accessibility and Integration","monthly_downloads":47,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# Configuration\n\nYou can configure pyeia with your API key either at runtime.\n\n- Declare `EIA_APIKEY=\"myapikey\"` in a `.env` file\n- Set an environment variable explicitly, `export EIA_APIKEY=\"myapikey\"`\n- If you are using dynaconf, you can include an `[eia]` environment in your `settings.toml` file (or any other configured settings files.)\n\n```toml\n[eia]\napikey = \"my apikey\"\n```\n\n# About\n\nThe U.S. Energy Information Adminsitration provides an API for access to commonly used datasets for policy makers\nand researchers. See the [EIA API documentation](http://www.eia.gov/opendata/commands.cfm) for more information.\n\nWarning : This package is a work in progress!  A substantial update is expected in January 2020, with a published version on PyPi.  The author took a break from this domain area, but is returning!  Hoping to have a similar or identical R interface/API as well, but that may be much farther down the pipeline.\n\n# Basic Usage\n\nSince this package is still under active development, it has not been pushed to PyPi. That said, I believe it is\nstable and reliable enough for immediate use.  You can install this via git+https, i.e. :\n\n```bash\npip install pyeia\npip show pyeia\n```\n\nThere are two main strategies for interacting with this package.\n\n## EIA Browser\n\n[EIA provides a web-based data browser](http://www.eia.gov/opendata/qb.cfm)\nSince most interactions for discovering data via the API will likely occur\nthrough this browser, this motivated a programmatic version.\n\nThe general strategy is to traverse a datapath or multiple datapaths, and\nwhen you arrive to the desired node, you flag one or more dataseries.  \nThere is also the ability to add in meta information as you flag a dataseries.\n\nRunning the `export` method on a Browser object will make a request to the\n`Series` API to collect data you've flagged.\n\nThere's currently a separate class for each dataset which is mostly syntactic.\nIn the future, there will likely be methods and visualizations builtin that are\nspecific to the datasets described at the root category level from EIA.\n\n1. [Browser Quickstart to Collect AEO data](examples/aeo_quickstart.py)\n2. [Computing Marginal Values for AEO data](examples/aeo_marginal_values.py)\n\n## Direct API usage\n\nEach endpoint has a corresponding class in `eia.api`.  Every class has a `query` method that makes a call to EIA.\nThe returned result is always the response body.  Metadata about the request is dropped.  The `Series` and `Geoset`\nclasses have a special `query_df` method since their response bodies have a naturally tabular schema.\n\n\n```python\nfrom eia import api\n\nmyapikey = \"\"  # Register here : www.eia.gov/opendata/register.cfm\n\n# Make a call to the Category endpoint\ncategory = api.Category(myapikey)\ncategory.query()\n\n# Make a call to the Series endpoint\nseries = api.Series(\n    \"AEO.2015.REF2015.CNSM_DEU_TOTD_NA_DEU_NA_ENC_QBTU.A\",\n    \"AEO.2015.REF2015.CNSM_ENU_ALLS_NA_DFO_DELV_ENC_QBTU.A\",\n    api_key=myapikey,\n)\nseries.to_dict()  # Export data from its json response\n# Make the same query, but get results as a pandas DataFrame\nseries.to_dataframe()\n\n# Make a call to the Geoset endpoint\ngeoset = api.Geoset(\"ELEC.GEN.ALL-99.A\", \"USA-CA\", \"USA-FL\", \"USA-MN\", api_key=myapikey)\ngeoset.to_dict()\ngeoset.query_df()\n\n# Make a call to the SeriesCategory endpoint\n\nseriescategory = api.SeriesCategory(\n    \"AEO.2015.REF2015.CNSM_DEU_TOTD_NA_DEU_NA_ENC_QBTU.A\",\n    \"AEO.2015.REF2015.CNSM_ENU_ALLS_NA_DFO_DELV_ENC_QBTU.A\",\n    api_key=myapikey,\n)\nseriescategory.to_dict()\n\n# Make a call to the Updates endpoint\n\nupdates = api.Updates(\n    category_id=2102358,\n    rows=0,\n    firstrow=\"currently_not_used\",\n    deep=False,\n    api_key=myapikey,\n)\nupdates.to_dict()\n\n# Make a call to the Search endpoint\nsearch = api.Search(api_key=myapikey)\n\n# Make a series_id search\nsearch.to_dict(\"series_id\", \"EMI_CO2_COMM_NA_CL_NA_NA_MILLMETNCO2.A\", \"all\")\n\n# Make a name search\nsearch.to_dict(\"name\", \"crude oil\", 25)\n\n# Make a date-range search\n# Dates can be input as a list/tuple of any valid pd.to_datetime argument\nsearch.to_dict(\"last_updated\", [\"Dec. 1st, 2014\", \"06/14/2015 3:45PM\"])\n```\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","archiving","measur","transforms","generic","compose","observation","conversion","projection","animals"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20024","html_url":"https://ost.ecosyste.ms/projects/20024"}