There is a newer version of the record available.

Published April 10, 2026 | Version v2026.4.0
Dataset Open

Public Utility Data Liberation Project (PUDL) Data Release

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

  • Updated EIA-860M with monthly data through February 2026. See #5148 and #5161.

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

    See issue #4822 and PR #5057 for more details.

  • 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

Bug Fixes & Data Cleaning

  • Fixed a bug in pudl.analysis.allocate_gen_fuel that 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 the product_name metadata descriptions and allowed values for core_ferceqr__contracts and core_ferceqr__transactions so their constraints match their distinct ENUM constraints as documented in v3.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_dr table. 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_FILES now preserves generated docs artifacts for debugging, and PUDL_DOCS_DISABLE_INTERSPHINX disables intersphinx lookups when needed (for example in CI docs checks to avoid external docs outages). See PR #5095.

  • Added a fast docs-check Pixi task for validation-only Sphinx runs and updated the pytest GitHub Actions docs check job to use it, while leaving Read the Docs and GitHub Pages HTML builds unchanged. See PR #5128.

  • Added a docs-linkcheck Pixi task and a separate manually triggered GitHub Actions workflow for experimenting with automated documentation link checking. See PR #5128.

  • Switched repository tooling from pre-commit to prek and added trufflehog and detect-secrets hooks to help prevent secrets from being committed to the repository. See #5141.

Other PUDL v2026.4.0 Resources

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:

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