Skip to main content

PUDL Diff: Compare Two Sets of PUDL Outputs

Project Status: Active pytest pyrefly Codecov Test Coverage Documentation PyPI Latest Version conda-forge Version Supported Python Versions License: MIT Formatted by ruff pre-commit CI

pudl_diff compares two sets of PUDL Parquet outputs, table by table, and reports on what changed: the schema (columns and dtypes), the row counts, and the rows themselves, matched on primary keys where a table has them. It's useful for confirming that a change to PUDL's code, its dependencies, or its raw inputs did, or didn't, change the data, and for seeing how nightly builds and stable releases differ. It reads local directories or remote buckets, and works on tables too big for memory.

It produces:

  • a colorized summary in the terminal, one line per table plus totals,
  • a JSON report of the whole comparison, described by a published JSON Schema, and
  • Parquet files holding the rows that differ, for tables that do.

An existing report can be shown again as the same terminal summary, without comparing anything, with pudl_diff --from-report.

Installation

uv pip install catalystcoop.pudl_diff
# or
pip install catalystcoop.pudl_diff
# or
conda install -c conda-forge catalystcoop.pudl_diff
# or
pixi add catalystcoop.pudl_diff

Python 3.14 or newer is required.

pudl_diff doesn't depend on PUDL itself. If PUDL is installed in the same environment it is used for its metadata and defaults, and otherwise pudl_diff falls back on PUDL's published outputs.

Usage

Compare a table from the last nightly build against your local outputs in $PUDL_OUTPUT/parquet:

pudl_diff out_eia__yearly_generators

Compare every table in two datasets, local or remote, writing the reports to diffs:

pudl_diff --left s3://pudl.catalyst.coop/stable --right ~/my_outputs --output-path diffs

See the documentation for more, or run pudl_diff --help.

Contributing

Bug reports, questions and pull requests are welcome in the issue tracker. Please follow our Code of Conduct. The changelog lists what has changed, and why.

Development

  • Install pixi if you don't already have it.
  • Run pixi install to create the development environment, and pixi run prek install to install the pre-commit hooks defined in .pre-commit-config.yaml, using prek as the runner.
  • Run git config merge.ours.driver true so the merge=ours rule in .gitattributes (which keeps your side of pixi.lock on conflict) takes effect.
  • Run pixi run test, pixi run lint and pixi run format. See AGENTS.md for the rest of the tasks. The repository follows the layout of Catalyst's Python template, cheshire.

About Catalyst Cooperative

Catalyst Cooperative is a small group of data wranglers and policy wonks organized as a worker-owned cooperative consultancy. Our goal is a more just, livable, and sustainable world. We integrate public data and perform custom analyses to inform public policy (Hire us!). Our focus is primarily on mitigating climate change and improving electric utility regulation in the United States.

Contact Us

  • For general support, questions, or other conversations around the project that might be of interest to others, check out the GitHub Discussions.
  • If you'd like to get occasional updates about our projects sign up for our email list.
  • Want to schedule a time to chat with us one-on-one? Join us for Office Hours.
  • More info on our website: https://catalyst.coop
  • For private communication about the project or to hire us to provide customized data extraction and analysis, you can email the maintainers: pudl@catalyst.coop.

Metadata

Release files for catalystcoop.pudl-diff 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for catalystcoop.pudl-diff 0.1.1
File Size Uploaded
catalystcoop_pudl_diff-0.1.1.tar.gz 251.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for catalystcoop.pudl-diff 0.1.1
File Interpreter ABI Platform
catalystcoop_pudl_diff-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 309.3 kB

Release files / catalystcoop_pudl_diff-0.1.1.tar.gz

Download URL catalystcoop_pudl_diff-0.1.1.tar.gz
Size 251.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cc5c82099f92b2d9e85263f724fc76169729156c679531cd8979a1002cf301e8
BLAKE2b-256 checksum
How to use checksums
edfd092de3852633abf05ad22493593dd2bed9dc779786e06fa227951484df98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / catalystcoop_pudl_diff-0.1.1-py3-none-any.whl

Download URL catalystcoop_pudl_diff-0.1.1-py3-none-any.whl
Size 58.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6845c1cf27c3dece759c66d0edb1b665ec40dff5a5e1d66a1caeb26c04d13db0
BLAKE2b-256 checksum
How to use checksums
8cfaf93b69a403d8ce0c9def5577bc213c0cdf460bad68873541b2e5e2864919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page