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.0.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.0-cp314-cp314-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.11.0-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.0-cp314-cp314-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

diff_diff-3.11.0-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.0-cp313-cp313-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

diff_diff-3.11.0-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.0-cp312-cp312-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

diff_diff-3.11.0-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.0-cp311-cp311-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

diff_diff-3.11.0-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.0-cp310-cp310-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

diff_diff-3.11.0-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.0-cp39-cp39-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.11.0-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.0.tar.gz.

File metadata

  • Download URL: diff_diff-3.11.0.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.0.tar.gz
Algorithm Hash digest
SHA256 024f859e65182046bf9472f8a4a34818409792021f97d9a20a813b107e7b0737
MD5 6dde6315a501da162d349196e490aa1e
BLAKE2b-256 ff34245daf3e9cd7294b1d72107bd419026eb2ef4010fe51fed965461bf83eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0.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.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d3497861413b1e91890aa54e476e6b5edf43132fc537813516206f79b0402555
MD5 eb05e871c7ccb5a02c87799f32d9b71c
BLAKE2b-256 9c5f336b22ab7ce0754097b95595552bfdd7cc3282a9cad2154a1dd55220689d

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca5d7dcabf2822db23256ac53c4974dc774f6f173a7bcdbc143195366a74d5a4
MD5 6aee3b78e7a18459ee094f9fa87b7c38
BLAKE2b-256 fc7c85227219b62c359362f1a750dbfcfb033207a339224dbc13ff59d9b29df1

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6540ceb98a03f59c7f318aa4ac7605cc5b57275339eafe285082b16f2e84c872
MD5 044dbdf66452da3834b2bbbbd17c4921
BLAKE2b-256 d0f95c4e9130313d5d80897e077eb48458058b91328382a5543e815fab7a63fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c4465dc47ce8e63446385ad2b2e0576713f3e91dbdd29f7f6c4666f9e33df87
MD5 3342b7ebe00215ade5f291fd2a938c76
BLAKE2b-256 12129f6f6f3dc779f3bdc7525161d134d7004f563f21ffbf121d9153055bfddc

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0387369cbfaf1bec1c7d3662d3e1a0ddd87ffbb2255af68c18bfa87cc9da49e0
MD5 700adc27bf2d2730f9aee2cc5216575e
BLAKE2b-256 05d41be86453dd878683a9ed229a60807cba111532e1f4fcc4f4a1c33dccb436

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ef22c48dc83774feb8bb3e1bb179386215afea9974b90395ea932c0bfd29c66
MD5 d243af5627244b717c4b500a0a91e75e
BLAKE2b-256 466c67bfc304d0a3288b91a6b7d616975b46eb27e449de11de55bb69f356de80

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b1bc705e7e23c8496e935e2804449893f7280ccd06d8d105ae8c3c99659c33f0
MD5 da5ed589e137396caf318edeb4ad8ad2
BLAKE2b-256 5a6e321603b746938ed6eeb32f4118bd1ef9e6f0736735e31ef66979c784e6a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f496c289998e3a42af44a00fe8a6dcdd957017ae180dae735a0c90dab3db0860
MD5 dbff726777cd6e6eef23970ef024c440
BLAKE2b-256 98e7cb90a29a309412e03509eda697fa13111db7a2cf6910c7592ef455e930f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0735722df3d32c464b6d3a731a7cabe5059fe83213be7fa3a3b563ab7ce36715
MD5 4564fd6aaea386f3c59f4190011aa107
BLAKE2b-256 ae22eaa20e792ef1b8caa46f94d43d84e76e8aaafd794f5240caec64d163cbb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 102892c0fa364111c5a9b38fcd252fa82a689f189eacd4fc20e0147dd198f199
MD5 e204c5ec88492ef1a0bf2790f9012937
BLAKE2b-256 a96eae2748d3f7b52965303620d6eea7589ed8cee815990d0c5fa1abed6563f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 48cf558ca32ff1dfdea042d55ac49a580a2b208e7cf8b486dfc194b0eeeecd5c
MD5 d580ac5a65565440a4a3dbc05240f160
BLAKE2b-256 d4c6ddaf50833e2832c4679cee4efd1a2250cbee7dd873a381b380910209da95

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af22bef5a9cb9676f9096303a18fe93b8e26d4b9b702a5d93c2f10e5dd1898b8
MD5 0219c3bfce5824e3cd9023c55bdad71a
BLAKE2b-256 c854033df721fe44c7ae8ab0d4e56f778880b1d9c9c735e48ea25b695403a595

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d8c5d55e9918ec3db81e5ac83406cd10351f8a7dd6794c4092895b6ecf49e646
MD5 9914542ec307e157fe41f505a7cfb80f
BLAKE2b-256 78f77be79dfb98371cf14591edc0dbca6f6bb35bafef7e957a8a35f84619aa94

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 114a3c7f9b117c349f1a72c94efdc3c5c0df7d11875e92175cec51c8a79781f2
MD5 6f282b5562f77ffed3f24037714f98dc
BLAKE2b-256 d6f71485d928458bd8803ca6910e4c825d0ac4ffe3528db208c3f77ed48f67a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7acd77152aa7fa2862c2e0cffe3bdf36a7f3a498352c7d47c97b4db5404554f1
MD5 618e2fdc64135a87b822230c4a5a8553
BLAKE2b-256 9f953c91646d73318d3a97c07d1c572f54731e975cdde18936a318aaeb9c9fd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0bec3e96e348582f091f4effc6f074c247ecd31efd6af59d3bf79dc89517491
MD5 fdbb98160bd09504218374596caac045
BLAKE2b-256 dcf7722233b92d7a95f5873b66d86942feaf6755c1f1b95366dfbe8b75b2ab75

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a573654224f12ed25bcc099f8f9b53cd4c05a6e3595d4755a3653cf60d8f2627
MD5 ec21f34b511e05dd7297975da4d50256
BLAKE2b-256 5eadc1966adabafa19e5462e1f4b3334008e54aed49de823f855ff71497c67df

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 667ae865027a13ff3c742cc2b269153d15b1214052b788712f6e65c508e48439
MD5 541c45b49fe26793c88e018299ed4409
BLAKE2b-256 1b84effa2a234cc9f9735197272af813ca0d50d1625bdf5c3b4b8a8609de7e3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 190c32dea51e410763c38a3fafa556bc983625ed4f477f7289927e81a968e3c4
MD5 914bb1dcc7e072d999cc4176f96e5537
BLAKE2b-256 4804b6b1765ee3c5a4133b814d942358f24b9f6d7623fa44d2a34c4e01a080e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bcea1876f8ab5c96ce32512099e7c4034b3fa9355a0f2b195bdb2b7c3494f6b1
MD5 a7561640f9af571767bc9760a8d249b5
BLAKE2b-256 8c28222576c07ddfc97fd0ddc98e5a33db971f5b4336263a77b7a55768f82276

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.11.0-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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7e4aee50280f55550d25849754a7048ebd13ebca82ea9e7ac92b05dc082acd4b
MD5 946850e8ebe18cf36b8c3b72c55aca32
BLAKE2b-256 e628d9f667a84aabdbf11ca8b0dce14802f9507fcc203c9e48c02f12047fcdff

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 165b727e03768cc66ec03c33acda30c09d805bf9d300573365d2651b304875b3
MD5 b361b8c1999ca34e74e9390a4232b8bf
BLAKE2b-256 283ff0f5e1c66f17449f0dcf48cc1cef5cbb75973cebbcb6400d2264cc708281

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b73ecdf0660d1e6a6e8c3fee676746a634196600ae39b227c3f59ece69593aa7
MD5 d76cfafbddee19afac90d0bcbe1393ed
BLAKE2b-256 530b64936d0aefc7d6784e6553ca2b72d17b4336ab399ce25ed6663fc40bb901

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.11.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d70ac55ec2e1fed1d7799ca45988b007fd4e2c9ba021e6b4dd42767c217e557b
MD5 aba586a6a61ce79561d823101d42fa52
BLAKE2b-256 8f04210bec2ed0404112c14aaab2c9a964c6c0446b75078f97a38e37d9552ade

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.11.0-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

3.11.1

25 files

This release

3.11.0 This release

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