Public Utility Data Liberation Project (PUDL) Data Release
Authors/Creators
- 1. Catalyst Cooperative
Description
v2026.4.0 (2026-04-09)
This is a monthly PUDL data release, primarily motivated by updating the EIA-860M monthly data through February 2026. As usual, it also includes all of the other changes that have accumulated on main since our last release.
This month, that means a substantial expansion of our USDA Rural Utilities Service (RUS) Forms 7 and 12 coverage, and additional validations and metadata cleanup as those tables stabilized. We addressed a few data quality issues, including fixes for FERC EQR, EIA-757A extraction, EIA-861 column naming, and duplicate utility ID mappings.
On the tooling and documentation side, PUDL now has a refreshed PyData-based docs theme, a new entity-resolution methodology page with Mermaid diagrams, an experimental standalone data deployment workflow, and several improvements to developer tooling and automation, including automated Zenodo DOI updates, more resilient docs checks, and new secret-scanning hooks. See below for all the details.
New Data
RUS 7 & RUS 12
-
Added de-normalized output tables for RUS 7 and RUS 12 as a follow up from #5040. See #5077.
-
Added last rounds of core and output tables from RUS Form 7 and 12. See #5087, #5091 and #5145.
Expanded Data Coverage
EIA-860M
Documentation
-
We have a new look! As part of preparing to move our documentation from RTD to our own GitHub Pages site, we needed to switch our Sphinx theme from Furo to PyData, in order to take advantage of their version switcher feature. All pages are still there, no URLs have changed, but you may find familiar links in a different spot on the page than you are used to. The top nav bar has limited real estate so we have collected our docs into two groups:
-
Data Documentation now houses the data access, data dictionary, data source, and methodology pages
-
Development now houses the API reference, developer guide, contributing guide, and code of conduct
-
-
Added a methodology page explaining how EIA entity harvesting reconciles inconsistently reported plant, utility, boiler, and generator attributes into normalized entity and yearly SCD tables. The docs now also support Mermaid diagrams for illustrating pipeline behavior. See #5108.
-
Fixed the data dictionary’s Polars examples for public AWS-hosted Parquet access so they work without AWS credentials. See #5171.
New Data Tests & Validations
-
Validate that sub-components in core_rus7__yearly_energy_efficiency, core_rus7__yearly_patronage_capital, core_rus7__yearly_power_requirements_electric_customers, core_rus7__yearly_power_requirements_electric_sales, core_rus7__yearly_statement_of_operations and core_rus12__yearly_statement_of_operations and their corresponding output tables sum to their reported totals. See #5039 and #5073.
-
Expanded validation coverage for newly added RUS Form 7 and 12 tables as the tables and their metadata stabilized. See #5125, #5131, and #5138.
-
Modified schema checks so they can be applied to the largest tables, which have typically been excluded from these checks. See Issue #5022 and PR #5043.
Bug Fixes & Data Cleaning
-
Fixed a bug in
pudl.analysis.allocate_gen_fuelthat caused out_eia923__monthly_generation_fuel_by_generator_energy_source to incorrectly allocate generation and fuel consumption to retired generators. The previous logic identified “retiring” generators by checking whether any generation or fuel columns were non-null after the generation fuel table was merged in on prime mover and energy source code (not generator ID), so a retired generator sharing a PM/ESC combo with active generators at the same plant was incorrectly kept as active. The fix narrows the retiring-generator check to only the generator-level generation table column and also preserves retired generators whose PM/ESC combination is unique to them at the plant, enabling generator-level attribution of the reported fuel/generation. See #4789. Thanks to @grgmiller for identifying this issue and making a PR! -
Fixed a FERC EQR transform bug that was incorrectly parsing non-date contract fields as datetimes, which caused several output columns to become entirely
NULL. Also clarified and separated theproduct_namemetadata descriptions and allowed values for core_ferceqr__contracts and core_ferceqr__transactions so their constraints match their distinct ENUM constraints as documented inv3.5 of the FERC EQR data dictionary. See #5085. -
Fixed EIA-757A extraction so raw columns are renamed correctly into PUDL’s standard naming conventions. See #4722 and #5107.
-
Removed approximately 200 duplicate PUDL utility IDs from
src/pudl/package_data/glue/utility_id_pudl.csv, where a FERC or EIA utility was mapped to more than one PUDL ID. See #4988 and #5117. -
Fixed some wonky column names in the EIA-861
core_eia861__yearly_demand_side_management_ee_drtable. See issue #5132 and PR #5135.
Quality of Life Improvements
-
Added a new standalone data deployment workflow,
deploy-pudl.yml. This is still in testing, but will allow us to separate deployment from builds, enabling deployment from an existing build and creating more modular and reusable infrastructure. See issue #5003 and PR #5016. -
Moved large FERC1 category dicts to .yaml files to reduce LOC. See #4989 and PR #5023. Thanks to @andbusch for getting this in!
-
Added a script and GitHub Actions workflow to automatically update Zenodo DOIs in package data for straightforward data-source refreshes. See #5051.
-
Added environment variable controls for Sphinx docs builds:
PUDL_DOCS_KEEP_GENERATED_FILESnow preserves generated docs artifacts for debugging, andPUDL_DOCS_DISABLE_INTERSPHINXdisables intersphinx lookups when needed (for example in CI docs checks to avoid external docs outages). See PR #5095. -
Added a fast
docs-checkPixi task for validation-only Sphinx runs and updated thepytestGitHub Actions docs check job to use it, while leaving Read the Docs and GitHub Pages HTML builds unchanged. See PR #5128. -
Added a
docs-linkcheckPixi task and a separate manually triggered GitHub Actions workflow for experimenting with automated documentation link checking. See PR #5128. -
Switched repository tooling from
pre-committoprekand addedtrufflehoganddetect-secretshooks to help prevent secrets from being committed to the repository. See #5141.
Other PUDL v2026.4.0 Resources
- PUDL v2026.4.0 Data Dictionary
- PUDL v2026.4.0 Documentation
- PUDL in the AWS Open Data Registry
- PUDL v2026.4.0 in a free, public AWS S3 bucket: s3://pudl.catalyst.coop/v2026.4.0/
- PUDL v2026.4.0 in a requester-pays GCS bucket: gs://pudl.catalyst.coop/v2026.4.0/
- Zenodo archive of the PUDL GitHub repo for this release
- PUDL v2026.4.0 release on GitHub
Contact Us
If you're using PUDL, we would love to hear from you! Even if it's just a note to let us know that you exist, and how you're using the software or data. Here's a bunch of different ways to get in touch:
- Follow us on GitHub
- Use the PUDL Github issue tracker to let us know about any bugs or data issues you encounter
- GitHub Discussions is where we provide user support.
- Watch our GitHub Project to see what we're working on.
- Email us at hello@catalyst.coop for private communications.
- On Mastodon: @CatalystCoop@mastodon.energy
- On BlueSky: @catalyst.coop
- On Twitter: @CatalystCoop
- Connect with us on LinkedIn
- Play with our data and notebooks on Kaggle
- Combine our data with ML models on HuggingFace
- Learn more about us on our website: https://catalyst.coop
- Subscribe to our announcements list for email updates.
Files
censusdp1tract.sqlite.zip
Files
(17.5 GB)
| Name | Size | Download all |
|---|---|---|
|
md5:b60db90f1b3442cd4abec0187717bf06
|
18.2 MB | Download |
|
md5:1dbe6493af6ccb2e2d5ec94101f050e5
|
506.7 MB | Preview Download |
|
md5:ea8e0857c72530b6aa6caf06ade961c5
|
271.3 MB | Preview Download |
|
md5:78e0b32df8068ed3764d07db9c80a3e8
|
1.0 GB | Download |
|
md5:1d686c09c472c98e3c009ff5717ce5d1
|
190.6 MB | Preview Download |
|
md5:a56fbb5caf57f49b8497d8da60e58d0f
|
2.3 MB | Preview Download |
|
md5:02c69518e60b733979671e73d2e12f9f
|
7.3 MB | Preview Download |
|
md5:95d0e49c49326bf7112f32d6ca473e67
|
73.9 MB | Preview Download |
|
md5:ce1f1996702ecbd47ebc55295c4c44f9
|
153.1 MB | Download |
|
md5:38a8985ab3e8b491e0ea4ac4bf0e11f8
|
28.2 MB | Preview Download |
|
md5:8c3d6a7eb25cfe79f6e904ebac47bf18
|
2.6 MB | Preview Download |
|
md5:bd09d11e1a79a1623b3d9789bf336c9e
|
7.2 MB | Preview Download |
|
md5:539656bdf41aec1dfd1dc9b26e8635fc
|
2.9 MB | Preview Download |
|
md5:c6e106a004822eca28c1713b487e106b
|
52.7 MB | Download |
|
md5:11ed963a68b00e7d437ccb9cc34c01e4
|
4.4 MB | Preview Download |
|
md5:0f0dfca5db7b6fa0b0fdcefc0088bded
|
964.5 kB | Preview Download |
|
md5:4667b8113e5e6d61af554a6304bf5ebc
|
1.9 MB | Preview Download |
|
md5:8bd8bee000ba745cf3593405f8eeba17
|
43.5 MB | Preview Download |
|
md5:79d5c8a32d26bcc312b6725020169bb4
|
75.5 MB | Download |
|
md5:2a917565227d35c59b576a3aa34727fb
|
22.8 MB | Preview Download |
|
md5:4cec3c251ad1028f03a05a744b473964
|
1.4 MB | Preview Download |
|
md5:240ab648e9b6fb13f2540b217638676e
|
3.0 MB | Preview Download |
|
md5:e582941386edfad9280007012f4f9bbb
|
66.6 MB | Download |
|
md5:4af76751c37bac0ccf0e15b47986aecf
|
193.7 MB | Preview Download |
|
md5:807d496babdfe7e9781aff2bd9fd9e5c
|
85.3 kB | Preview Download |
|
md5:694686904ca1871e1b96f2002d2a136d
|
192.9 kB | Preview Download |
|
md5:7eb07c8b0586f6068ac6beebeb54000e
|
3.2 GB | Preview Download |
|
md5:dabb79d7f409b355b27f47a2dcccf643
|
11.6 GB | Preview Download |