Skip to main content

diff-diff

diff-diff: Difference-in-Differences causal inference in Python - sklearn-like API with Callaway-Sant'Anna, Synthetic DiD, Honest DiD, and Event Studies

PyPI version Python versions License: MIT Downloads DOI

A Python library for Difference-in-Differences (DiD) causal inference - sklearn-like estimators with statsmodels-style outputs, built for econometricians, marketing analysts, and data scientists running campaign-lift, policy, and staggered-rollout analyses.

Installation

pip install diff-diff

For development:

git clone https://github.com/igerber/diff-diff.git
cd diff-diff
pip install -e ".[dev]"

Quick Start

import pandas as pd
from diff_diff import DifferenceInDifferences  # or: DiD

data = pd.DataFrame({
    'outcome': [10, 11, 15, 18, 9, 10, 12, 13],
    'treated': [1, 1, 1, 1, 0, 0, 0, 0],
    'post': [0, 0, 1, 1, 0, 0, 1, 1],
})

did = DifferenceInDifferences()
results = did.fit(data, outcome='outcome', treatment='treated', post='post')
print(results)              # DiDResults(ATT=3.0000, SE=1.7321, p=0.1583)
results.print_summary()     # full statsmodels-style table

Documentation

For AI Agents

If you are an AI agent or LLM using this library, call diff_diff.get_llm_guide() for a concise API reference with an 8-step practitioner workflow (based on Baker et al. 2025). The workflow ensures rigorous DiD analysis - testing assumptions, running sensitivity analysis, and checking robustness, not just calling fit().

from diff_diff import get_llm_guide

get_llm_guide()                 # concise API reference
get_llm_guide("practitioner")   # 8-step workflow (Baker et al. 2025)
get_llm_guide("full")           # comprehensive documentation
get_llm_guide("autonomous")     # autonomous-agent variant

The guides are bundled in the wheel - accessible from a pip install with no network access. After estimation, call practitioner_next_steps(results) for context-aware guidance on remaining diagnostic steps.

For Data Scientists

Measuring campaign lift? Evaluating a product launch? Rolling out a policy in waves? diff-diff handles the causal inference so you can focus on the business question.

  • Which method fits my problem? - start from your business scenario (campaign in some markets, staggered rollout, survey data) and find the right estimator
  • Getting started for practitioners - end-to-end walkthrough from marketing campaign to causal estimate to stakeholder-ready result
  • Brand awareness survey tutorial - full example with complex survey design, brand funnel analysis, and staggered rollouts
  • Have BRFSS/ACS/CPS individual records? Use aggregate_survey() to roll respondent-level microdata into a geographic-period panel with inverse-variance precision weights for second-stage DiD

BusinessReport and DiagnosticReport are experimental preview classes that produce plain-English output and a structured to_dict() schema from any fitted result - wording and schema will evolve. See docs/methodology/REPORTING.md for usage and stability notes.

Practitioner Workflow (Baker et al. 2025)

For rigorous DiD analysis, follow these 8 steps. Skipping diagnostic steps produces unreliable results.

  1. Define target parameter - ATT, group-time ATT(g,t), or event-study ATT_es(e). State whether weighted or unweighted.
  2. State identification assumptions - which parallel trends variant (unconditional, conditional, PT-GT-Nev, PT-GT-NYT), no-anticipation, overlap.
  3. Test parallel trends - simple 2x2: check_parallel_trends(), equivalence_test_trends(); staggered: inspect CS event-study pre-period coefficients (generic PT tests are invalid for staggered designs). Insignificant pre-trends do NOT prove PT holds.
  4. Choose estimator - staggered adoption -> CS/SA/BJS (NOT plain TWFE); few treated units -> SDiD; factor confounding -> TROP; simple 2x2 -> DiD. Run BaconDecomposition to diagnose TWFE bias.
  5. Estimate - estimator.fit(data, ...). Always print the cluster count first and choose inference method based on the result (cluster-robust if >= 50 clusters, wild bootstrap if fewer - for DifferenceInDifferences pass cluster=; TwoWayFixedEffects auto-clusters at unit level).
  6. Sensitivity analysis - compute_honest_did(results) for bounds under PT violations (MultiPeriodDiD, CS, or dCDH natively; the TwoWayFixedEffects event_study=True surface and a StackedDiD results.aggregate('event_study') container also admit - Stacked needs kappa_pre >= 2), run_all_placebo_tests() for 2x2 falsification, specification comparisons for staggered designs.
  7. Heterogeneity - CS: results.aggregate('group')/'event_study' (post-fit, no refit); SA: results.event_study_effects / to_dataframe(level='cohort'); Stacked: results.aggregate('event_study')/'simple' post-fit views (surface always computed since 3.9); EDiD: results.aggregate(...) post-fit from retained EIFs (3.9); ImputationDiD/TwoStageDiD: results.aggregate(...) post-fit from panel-backed kits (3.9); ContinuousDiD: results.aggregate('dose'/'simple'/'event_study') post-fit (3.9; dose/simple are views, event_study recomputes); subgroup re-estimation.
  8. Robustness - compare 2-3 estimators (CS vs SA vs BJS), report with and without covariates (shows whether conditioning drives identification), present pre-trends and sensitivity bounds.

Full guide: diff_diff.get_llm_guide("practitioner").

Estimators

  • DifferenceInDifferences - basic 2x2 DiD with robust/cluster-robust SEs, wild bootstrap, formula interface, and fixed effects
  • TwoWayFixedEffects - panel data DiD with unit and time fixed effects via within-transformation or dummies
  • MultiPeriodDiD - event study design with period-specific treatment effects for dynamic analysis (deprecated 3.9 - use TwoWayFixedEffects event_study=True)
  • CallawaySantAnna - Callaway & Sant'Anna (2021) group-time ATT estimator for staggered adoption
  • ChaisemartinDHaultfoeuille - de Chaisemartin & D'Haultfœuille (2020/2022) for reversible (non-absorbing) treatments with multi-horizon event study, normalized effects, cost-benefit delta, sup-t bands, and dynamic placebos. The most general option for treatments that switch on AND off (see also LPDiD/TROP non_absorbing). Alias DCDH.
  • SunAbraham - Sun & Abraham (2021) interaction-weighted estimator for heterogeneity-robust event studies
  • ImputationDiD - Borusyak, Jaravel & Spiess (2024) imputation estimator, most efficient under homogeneous effects
  • TwoStageDiD - Gardner (2022) two-stage estimator with GMM sandwich variance
  • SpilloverDiD - Butts (2021) ring-indicator spillover-aware DiD identifying direct effect on treated + per-ring spillover on near-control units; handles non-staggered and staggered timing; supports survey-design variance under survey_design= for HC1 / CR1 (Wave E.1 Binder TSL) and Conley (Wave E.2 panel-aware stratified-Conley sandwich on per-period PSU totals; extended in Wave E.2 follow-up to conley_lag_cutoff > 0 via panel-block composition with within-PSU serial Bartlett HAC — lag>0 requires an effective PSU via explicit survey_design.psu or injected cluster=<col>); SurveyDesign.subpopulation() preserves full-design n_psu / df_survey via zero-padded scores (Wave E.3, R svyrecvar(subset()) form)
  • SyntheticDiD - Synthetic DiD combining standard DiD and synthetic control for few treated units
  • SyntheticControl - Abadie, Diamond & Hainmueller (2010) classic synthetic control for a single treated unit (donor-weight counterfactual, nested/cv/inverse-variance/custom V; in-space placebo permutation inference via in_space_placebo(), plus ADH-2015 leave_one_out() + in_time_placebo() robustness, Firpo-Possebom (2018) test-inversion confidence sets, and Chernozhukov-Wüthrich-Zhu (2021) conformal inference)
  • TripleDifference - triple difference (DDD) estimator for designs requiring two criteria for treatment eligibility; serves both the 2x2x2 and the staggered-adoption design from one signature (fit(..., first_treat=) selects the staggered engine)
  • ContinuousDiD - Callaway, Goodman-Bacon & Sant'Anna (2024) continuous treatment DiD with dose-response curves
  • HeterogeneousAdoptionDiD - de Chaisemartin, Ciccia, D'Haultfœuille & Knau (2026) for designs where no unit remains untreated; local-linear estimator at the dose support boundary returning Weighted Average Slope (WAS) on Design 1' (d̲ = 0 / QUG) or WAS_{d̲} on Design 1 (d̲ > 0, continuous-near-d̲ or mass-point), with a multi-period event-study extension (last-treatment cohort, pointwise CIs). Panel-only in this release - repeated cross-sections rejected by the validator. Alias HAD.
  • RegressionDiscontinuity - Calonico, Cattaneo & Titiunik (2014) sharp, fuzzy, AND covariate-adjusted regression discontinuity with robust bias-corrected inference and rdrobust-parity bandwidth selection (all 10 selectors, mass-point handling; fuzzy via takeup= with a first-stage block and weak-identification warning; covariates via covariates= - CCFT 2019, same estimand, covariate-aware bandwidths). Canonical att is the bias-corrected estimate with a coherent robust CI (rdrobust's printed headline is att_conventional). Alias RDD.
  • StackedDiD - Wing, Freedman & Hollingsworth (2024) stacked DiD with Q-weights and sub-experiments; optional covariate balancing (Ustyuzhanin 2026)
  • EfficientDiD - Chen, Sant'Anna & Xie (2025) efficient DiD with optimal weighting for tighter SEs
  • TROP - Triply Robust Panel estimator (Athey et al. 2025) with nuclear norm factor adjustment
  • StaggeredTripleDifference - Ortiz-Villavicencio & Sant'Anna (2025) staggered DDD with group-time ATT (deprecated 3.9 - use TripleDifference with first_treat=)
  • WooldridgeDiD - Wooldridge (2023, 2025) ETWFE: saturated OLS, logit/Poisson QMLE (ASF-based ATT). Alias ETWFE.
  • LPDiD - Dube, Girardi, Jorda & Taylor (2025) Local Projections DiD: per-horizon long-difference event study on clean controls (no negative weighting), variance- or equally-weighted ATT, for absorbing or non-absorbing (reversible) treatment
  • ChangesInChanges - Athey & Imbens (2006) nonlinear/distributional DiD for the 2x2 design: full counterfactual distribution and quantile treatment effects via CDF transformation, plus the QDiD comparison estimator via method="qdid"; bootstrap inference; R qte parity. Alias CiC
  • LWDiD - Lee & Wooldridge (2025, 2026) rolling-transformation DiD: unit-specific demean/detrend converts panel to cross-section, staggered adoption, estimation_method in reg/ipw/dr/psm (the papers' RA/IPW/IPWRA plus propensity-score matching), exact small-N inference on the classical collapsed regression
  • DMLDiD - Chang (2020) double/debiased machine learning DiD: staggered ATT(g,t) with cross-fitted ML nuisance learners (DML2) and Neyman-orthogonal scores, for flexible/high-dimensional covariate adjustment under conditional parallel trends; panel or declared repeated cross sections (panel=False); survey/cluster support on both lanes
  • BaconDecomposition - Goodman-Bacon (2021) decomposition for diagnosing TWFE bias in staggered settings

Diagnostics & Sensitivity

  • RD Plots - Calonico, Cattaneo & Titiunik (2015) optimal data-driven RD plots (RDPlot): all 8 rdrobust binselect bin selectors, implied-scale/WIMSE-weight reporting, optional matplotlib rendering
  • Manipulation Testing - Cattaneo, Jansson & Ma (2020) density-discontinuity test (RDDensityTest): rddensity 3.0 parity, robust bias-corrected inference, unrestricted/restricted models, mass-point adjustment
  • Parallel Trends Testing - simple and Wasserstein-robust parallel trends tests, equivalence testing (TOST)
  • Placebo Tests - placebo timing, group, permutation, leave-one-out
  • Honest DiD - Rambachan & Roth (2023) sensitivity analysis: robust CI under PT violations, breakdown values
  • Pre-Trends Power Analysis - Roth (2022) minimum detectable violation and power curves
  • Power Analysis - analytical and simulation-based MDE, sample size, power curves for study design
  • MMM Calibration Export - convert experiment results into MMM calibration inputs: PyMC-Marketing lift-test frames and Google Meridian lognormal ROI priors
  • Conley spatial HAC SE (vcov_type="conley") on cross-sectional LinearRegression / compute_robust_vcov plus panel DifferenceInDifferences / MultiPeriodDiD / TwoWayFixedEffects (with conley_lag_cutoff for within-unit Bartlett temporal HAC) - Conley (1999) spatial-correlation-aware SEs with parity vs R conleyreg on cross-sectional + panel fixtures, optional combined spatial + cluster product kernel via explicit cluster=, auto-activating sparse k-d-tree fast path for n > 5_000

Survey Support

Most estimators accept an optional survey_design parameter (or survey= / weights= for HeterogeneousAdoptionDiD) for design-based variance estimation. Coverage and supported weight types vary by estimator - see the Survey Design Support compatibility matrix for the per-estimator support table.

  • Design elements available across the supported set: strata, PSU, FPC, lonely PSU handling, nest. Weight types vary by estimator: some surfaces (e.g. CallawaySantAnna, StackedDiD, the HAD continuous path) accept pweight only; others accept pweight / fweight / aweight.
  • Variance methods: Taylor Series Linearization (TSL via Binder 1983), replicate weights (BRR / Fay / JK1 / JKn / SDR), survey-aware bootstrap
  • Diagnostics: DEFF per coefficient, effective n, subpopulation analysis, weight trimming, CV on estimates
  • Repeated cross-sections: CallawaySantAnna(panel=False) for BRFSS, ACS, CPS
  • Weight calibration / raking: upstream by design - pair with Meta's balance package, whose balance.interop.diff_diff adapter hands raked samples straight to diff-diff; see the composition-drift tutorial

No other Python or R DiD package offers design-based variance estimation for modern heterogeneity-robust estimators.

Requirements

  • Python 3.9 - 3.14
  • numpy >= 1.20
  • pandas >= 1.3
  • scipy >= 1.10

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black diff_diff tests
ruff check diff_diff tests

References

This library implements methods from a wide body of econometric and causal-inference research. See the full bibliography on Read the Docs for citations spanning DiD foundations, modern staggered estimators, sensitivity analysis, and synthetic controls.

Citing diff-diff

If you use diff-diff in your research, please cite it:

@software{diff_diff,
  title = {diff-diff: Difference-in-Differences Causal Inference for Python},
  author = {Gerber, Isaac},
  year = {2026},
  url = {https://github.com/igerber/diff-diff},
  doi = {10.5281/zenodo.19646175},
  license = {MIT},
}

The DOI above is the Zenodo concept DOI - it always resolves to the latest release. To cite a specific version, look up its versioned DOI on the Zenodo project page.

See CITATION.cff for the full citation metadata.

Note on authorship: academic citation (CITATION.cff, the BibTeX above) lists individual authors with ORCIDs per scholarly convention. Package metadata surfaces (pyproject.toml, Sphinx docs) list "diff-diff contributors" to acknowledge the collective - see CONTRIBUTORS.md for the full list.

License

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diff_diff-3.11.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

diff_diff-3.11.1-cp314-cp314-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.11.1-cp314-cp314-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp314-cp314-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp314-cp314-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.11.1-cp313-cp313-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.11.1-cp313-cp313-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp313-cp313-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp313-cp313-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.11.1-cp312-cp312-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp312-cp312-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp312-cp312-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.11.1-cp311-cp311-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp311-cp311-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.11.1-cp310-cp310-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp310-cp310-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp310-cp310-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.11.1-cp39-cp39-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.11.1-cp39-cp39-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.11.1-cp39-cp39-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file diff_diff-3.11.1.tar.gz.

File metadata

  • Download URL: diff_diff-3.11.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1.tar.gz
Algorithm Hash digest
SHA256 2d35ba08e61210ef54fd936af5affa5a4b38f3d5fcd027d2bf7563eee7a874ec
MD5 80391a1699654784241934c7d7c5aee3
BLAKE2b-256 77f803017e5492e5fc6edf216e86bbb676932f63c30ce2d1394af80ef9651686

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1.tar.gz:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8096eeaa8c358fa5e867240488fd469449b8275ff5f6efd7f705977ef8eb1eee
MD5 2500e7a5393f66267aa4d95ccd21c9d9
BLAKE2b-256 841ddc69733628345cfb2d888d3d031d8b97f93b5cc80ccf37472b3884f0d5e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c5026404e91953612b95065aa86f22571e19d991c4eaf9cdb78c974dfc141f4
MD5 d9d1205d704915438edbda544b225eb6
BLAKE2b-256 b1e4a3ae41c8e46dc1232dc7f53c4b427862b6bbe778ff439db71aff82040e10

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 226d99b418588e9105f084e38eafb401050573672a01ba045a8c67baf563eee6
MD5 44af8849feffd8f3c839fc9752fe1358
BLAKE2b-256 203cc52d29dcee39e63151e80f9263f4676bbdba88dfef17d461e55d860f9564

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95441f97bbf74c06c926df0371ef452e0dbb128f99d63c3cc71d6afb9b882132
MD5 2ad6cd82a503e67616d893278af7bfdf
BLAKE2b-256 804ab71254a4ddb04a007188d917d5d6aecd3a2072343f2db104c0f137cab91e

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2490cd306735b9048438e43d300ccaba5bde6cdbec3cfc3af07882098b3af39d
MD5 4bb288f5ad22058670506c9143cd9d5c
BLAKE2b-256 f8d559dfe4662dab94904324ec66821e8f7296d509a8d24431a9a7f365a46d7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 edac718988265db9cc0625cc35c299a593b367b77866d42bdacc54dd490f76d1
MD5 34845b151d26e22968d0ef1d498ecf36
BLAKE2b-256 1172ca50b6d98e4c5a6e46c529754f696c149baa02abbf115d4e0920afc7978a

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9019285cd983e3b5d4f9dd582bbc3bc45473de642f9183ab12d6f2487224f918
MD5 e2fe7c136649162437fc848423364efb
BLAKE2b-256 bc70fe779d92a3284fe0e5abe2e3f8723c3bba80caa7817b68f3342cfe84f620

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5029a5a86cf4c2dee9056b467358fb98bc35e4f5d395c64b91b27fd7eda1e67
MD5 619e8045b55bf344f520a94dddfa8e17
BLAKE2b-256 21abf05a7ce301ea29fb7d0fab320c2dde6e1e9e653b5874ed71ffe61056403b

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 50838d92fe7dc251fe42d7d690d689ad198df2a13a273f8c61f6f389f8f9d4c8
MD5 ff915e94bff4c741e144029754f0ab43
BLAKE2b-256 92c4840db4c8af6ea2259c2ac6d64169af08fd3db5fcf9ce3c8379a9fbe477f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dbe7e36780666617300f0c71b86354f740bb6e8cf38aefe85161814986d73e26
MD5 411b201af6601a82afaa7b18b5f8bf40
BLAKE2b-256 b97684d56b8fc5ddd0e4ac09ae09895ac34412ef01b2e5ed632fddc0b4be8f13

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 acdb92112db20fec131bab79977b85d99fbe9bcfa2824d8db67f1f7bee38512f
MD5 011479ce15c2b65728d63d8a9d5f5dc5
BLAKE2b-256 f080c2b28960fd6953d237e08618f7ee8dc7489b30f36f27eea79d24282f7751

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1305973ac7bed99d5eb4af891cd7de83dcd09c3da6d1bb01c7715815c5d969de
MD5 8fc54c73fec4e656b947d1fc94862cc5
BLAKE2b-256 caaa37499dc3f755a2999cf8683c8d4305f0c7e96e65193083bc3154715b9b6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 10d7e378c24e13f299a5d81229e39f9591f5877cee319d0735836853a7d5310e
MD5 73edfd0a3f5e67c0d599e63e37effa95
BLAKE2b-256 9d7fd0f94da69d578c7be6fbcc702bea4d4fd70a25fcd744858cfc19a3c07d10

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f13e117017eb7c7f4c945f691e071aec28a4e054e4329d965834924fccf65aa
MD5 484d6ade5ff6d930bb7dec097fd7c1bf
BLAKE2b-256 5df7dce0885b659882900e51c28f1f6d881761e96103434d2d2c74376b1f6ef7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eb5f3e5c9b8b6ea150fd592852f462f97b84454f7efe6b6da011d705c360d78c
MD5 a33ae889166120e69e9f163cec39742f
BLAKE2b-256 630b3b03e7e916ba36b96d9a38560db97bb753e4e98e07af1a12d8ad895dccb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a56ff2e18617380c8d884f8a8a87de65bbdc7f3c125b56deb82b55687d4fd879
MD5 75ad428c53be2cebb86d0dce5009fcee
BLAKE2b-256 b262be2c30a26a5f4ac09ca712dec300877693256b5b371f777c5d9e554b083d

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5ddda014f4f2e111247e881f74b3cd6bdd5b7bf7ec5161637b249acf063ac150
MD5 a483768b6564b6e225a56085cdd5378b
BLAKE2b-256 638b96161584ed7ec2afaf2d399c621e0360ce247769e31ed069c4d9a85c961c

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6a17940bbc11e374b707ce7de8cd028ee4d1aff3060917956ba11b015a2990c4
MD5 fea80948c73a49c61fd622b9b160ccd2
BLAKE2b-256 49e5f5be67619e0f075d9d83a74123261991ef0b895236ab48e75cd8ef33215c

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c99aeb0e22e23a8ab0268d167e87a28028eca3cf5bcf00f6ef3b9a6eaa624a4
MD5 7afd6032864033e9b9ea9139233f8eb7
BLAKE2b-256 188d672ecf10f03f6d11f725cebbcfc55aec7cdf004f47dac5754e1a61822ee1

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1853df12c28d28003d8dbb46b01f3e581334a437ee021df9a3b3afff00d3d16
MD5 93e26d4de7aff8a2cb3d6965cfca7836
BLAKE2b-256 44bcf28b55e76b933b30412aaad3eb536e3d9b5f53293b9a5a5a8b4f02366086

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for diff_diff-3.11.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 550037cdf03f27915c31e2f7cec4bcf00470283cd9cd2f99f59b613bec9014b3
MD5 d2e278cc82ef6f3923a4856e67c3a15d
BLAKE2b-256 b874cb15760b94099af1ed827f6d9f1ff65f9eeb1c3a148a8c7d1e7be57d87cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee9513c28c983f6d9877c91d3466af4711f2126b6e85d582ab738bfaa690d8bf
MD5 cd6e4e00e7f71cacdac4f4a5288e81ad
BLAKE2b-256 ea96d8ee1310383daf88c5dd488a1f07c1af2e54af35fc74d121e68a605dd500

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ba4bf553673989138cc44a6f039d2b8b1f8cbd5eca4460441d1d1ebf0761e8f4
MD5 6aae616f0023f89b8093b3eeec7c353f
BLAKE2b-256 4d3f4f2b5b7612f4f217bd436cfe7abe4ca261abb17a4eae51a0cd3f47c0c5a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.11.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e8de25fa528873e1557c6fea5e83813770245acee7544a6cf2a26c6333d07b0
MD5 a5e08a145546c753d2778cd379794493
BLAKE2b-256 450f656fb5c5f619ea6e2960fd151645c3bdc01cc4b201201d355ced9984b290

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

3.11.1 This release

25 files

3.11.0

25 files

3.10.0

25 files

3.9.1

25 files

3.9.0

25 files

3.8.0

25 files

3.7.0

25 files

3.6.2

25 files

3.6.1

25 files

3.6.0

25 files

3.5.3

25 files

3.5.2

25 files

3.5.1

25 files

3.5.0

25 files

3.4.2

25 files

3.4.1

25 files

3.4.0

25 files

3.3.3

25 files

3.3.2

25 files

3.3.1

25 files

3.3.0

25 files

3.2.0

25 files

3.1.3

25 files

3.1.2

25 files

3.1.1

25 files

3.1.0

25 files

3.0.2

25 files

3.0.1

25 files

3.0.0

21 files

2.9.1

21 files

2.9.0

21 files

2.8.4

21 files

2.8.3

21 files

2.8.2

21 files

2.8.1

21 files

2.8.0

21 files

2.7.6

21 files

2.7.5

21 files

2.7.4

21 files

2.7.3

21 files

2.7.2

16 files

2.7.1

16 files

2.7.0

16 files

2.6.1

16 files

2.6.0

16 files

2.5.0

16 files

2.4.3

16 files

2.4.2

16 files

2.4.1

16 files

2.4.0

16 files

2.3.2

16 files

2.3.1

13 files

2.3.0

13 files

2.2.1

13 files

2.2.0

13 files

2.1.9

9 files

2.1.8

9 files

2.1.7

9 files

2.1.6

9 files

2.1.5

9 files

2.1.4

9 files

2.1.3

9 files

2.1.2

9 files

2.1.1

9 files

2.1.0

9 files

2.0.4

9 files

2.0.3

9 files

2.0.2

9 files

2.0.1

9 files

2.0.0

9 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 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