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
  • 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.9.1.tar.gz (1.9 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.9.1-cp314-cp314-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.9.1-cp314-cp314-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp314-cp314-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp314-cp314-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.9.1-cp313-cp313-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.9.1-cp313-cp313-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp313-cp313-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.9.1-cp312-cp312-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.9.1-cp312-cp312-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp312-cp312-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.9.1-cp311-cp311-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.9.1-cp311-cp311-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.9.1-cp310-cp310-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.9.1-cp310-cp310-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp310-cp310-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.9.1-cp39-cp39-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.9.1-cp39-cp39-manylinux_2_28_x86_64.whl (15.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.9.1-cp39-cp39-manylinux_2_28_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.9.1-cp39-cp39-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: diff_diff-3.9.1.tar.gz
  • Upload date:
  • Size: 1.9 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.9.1.tar.gz
Algorithm Hash digest
SHA256 190adb3d1e4205bd0f4a639957fa908995d509c51df54d74bd4a21ce584e15f6
MD5 8808ce14cdb1e427e03910e8f5b0dc8e
BLAKE2b-256 107fae72e32bfd8a80ba474b90bab3ee7221d1dad0c375f1ccfeb16024ace085

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e3f3106241087f91354e45cc4d4f90337b853f6f102205fe7c46f10dd28d5fe9
MD5 644bf09651fe96bead7cf448fe4aeb71
BLAKE2b-256 813503a88bf4c6d17a3c87e3da4775807e3d125ac70598e36dcbb4d4b6bb362d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3fba42a8b5f65a31357a59050770f6733269a050788a80105681897d2087b24c
MD5 242702bcd9f2ad66deec16977420ec29
BLAKE2b-256 73be3cdcca424a6e76f15d787ef39a185937c4fdd3df578c393f15389f48890f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd48cfc2e8fb58d5d49c46601f5386d279bf7abe7a03bcc0ec2745f4c48a687e
MD5 4eefb67ed97187d9f1f46fa4b3256e6e
BLAKE2b-256 812dc534d77691e4bec2af649af3ff0cea01e9346e51b7d6adc0a97957f6a064

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0269d82e340bdb1b3c4ff132eb9395619515d7c02f4e7a40d1f4be5e83ce7474
MD5 f464082a825473e63e5f62622ce962bc
BLAKE2b-256 ab3b2badeecf72505a699a4d244f2ed8c24e949ffcd6842fa10bc2d16ee828bc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f74f3881a09a79785e6882966ec16b58b02501c5eab91cedb0bfa2ade7180b92
MD5 4aaccbb3cca6a4ebbce2cd3bee9c8080
BLAKE2b-256 b770a711fece444721fa6efe0cde71e72cf2efb97435aeb7f3a394202b2937db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c64b46946ef52d68804c4bae4504f857778e6ed61ccd24d21507d336e1e2ac5
MD5 ca64704ad7efaff8846f1a19374b5880
BLAKE2b-256 c2ee2ce5ab196c06cc3330a3324053d5a35756308e32ce0b6ea74ce8c66351bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ada27683391f4b6757c36f1ad6667b61f89ff90ff316e160900c9f787b4c824a
MD5 457948f5b7ad30a230e24dc075bcaec7
BLAKE2b-256 5b1a518d593da890ef88a4153f8ed8ef9864a3920abb40aedcda15a446877f82

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 273c45104fe44dceb94655f3903cf147cc6aeca44deb2644b2be53495ddeb468
MD5 2dd83a62bf46e7e05b3a6b4ec8671e08
BLAKE2b-256 771c9d0aca84c73aee6568d41737dba4ed329b1d4de372046e3692a9e64b639f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0386b77dd45e6c74114a8cac197d7ad02583c5e052144a791e018cfa15ccf9a7
MD5 cfdc110e999c75c38a4e4a06c045a624
BLAKE2b-256 1cda0cc7812f94c9aa75e4042951635a0e8bf7534003f3ae4de05168f2cc5702

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4e1eace1e98fec8bc3c217fa87dafb81ec9e0c03c9f3af17c56947393ec1a00
MD5 1c69e6803ba8fe39b2654c9ea41362bb
BLAKE2b-256 b3a338dd44fb377231fe452e780dacdd370b352f0fc68ca3c61e8e7b6f4609cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 42e08117f18f35077bc1603b1b18f42dee80a225b63ba0357ecf59d06938220b
MD5 028612319cacba90c4430166dbd26b01
BLAKE2b-256 dd83ed9dd802d922e4b1b19337bcc62b6a9fc1ac3583a6e141ee35000d8c2695

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6b9fdf0b918459df2821d4ffa15d2ee42c64bb823b687c5297c11a0318aa89f
MD5 37ff68e5d99a9982a5d6c105ea3ef675
BLAKE2b-256 cba5212d3a27cb29d49f1bc1d281b80af4731ee92f3f76c59f85cc322f707f65

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d9f637cbb20a40ac3f0fc615091bb9797b64921455c3b5c957d8d922b635f15e
MD5 e90531d3b7586308558cf8a6a7a886e6
BLAKE2b-256 b713ca82d44d27c95aa74f35460edf6db4f4a6ca272cac4f59ed41a3dd1a3e7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 15bbba3238493344d61ce4a9d35375adc1a7aefe98bd17f2881ad66c0dc6e35b
MD5 259afe719cf656aa33c99d372b8484a0
BLAKE2b-256 ad070bd19a2909ebb1168ced5291e727c8e1a8f0ad4c198b3bcbb0649b1449df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cde7a81eb975d55d605167eae5ef948ad70dff3a1a7079f565bdf842fcf96fb8
MD5 5eb41135bfaebc2e09b467a686ae1061
BLAKE2b-256 61c76072649179843a7f20cfbe30f965d8970192a3d87c110e4d26365399344a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c1ee7cf52e4152bc0bbec5b260f9d208a010bcff66dcac903a1be02fe985948
MD5 725de1694d9578bf84d4dd4a07987cc6
BLAKE2b-256 f9e08ba17783aec2da78d235f1878705cffc6be319ae476548fa182259eaf7d5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b3280bcc18d5a7d01fe937430e2bc07be1bc18374fac8741d305f08393280424
MD5 e05dc5ddf121564bc55a45a781f676ca
BLAKE2b-256 1425255c8f14b09d972a7e3ba6a47332e9eac43baaacbb35ee873a939c1e4444

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf5b5a25f5695f4d5156a6f221e418bdfd0819ce4236c313c871ff70a17a789b
MD5 32e0855dc7cf7c2f2de3058d00ef6500
BLAKE2b-256 192533c9a3212a566fc5d8b9434d143a4dcd8ee536965e6d90727685246b7c11

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c28f939a084e8602b479b5a0bec12f341d67635e3d4c812ac081a78bff6af7d1
MD5 b3c92daaf878a2ff2b21e7f14cb35235
BLAKE2b-256 c789304a9b2cd927bd4c6ca7f36cf33e899af4d649ddc5fdc29327b1d3842c57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 594add08bf242ed2bfed8bba95ce95eeb8cfb12e745294f797c3170c34d426e0
MD5 67c8a85c9bb749b1650171ffb34fc335
BLAKE2b-256 ef6998bf86a1c26206bd4bdea01e6f636cce42184c709d54a482145811f37264

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.9.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.9 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.9.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c9460a21d90067abf74d344f7df0c29a72444b0fa5b698206e194d6457a4b550
MD5 30b6266d32dc5dce85ffbc326c656cdc
BLAKE2b-256 ee2ea25e0c288df952f0c52c6e56009eb588dfc4e2d1e281fbabadb5120d88e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b182315999da43acad2f1d2139073dce0198115c60e2619f573899004895ca7
MD5 a7a1cfe6d478cf88af3a35e461a6d3f4
BLAKE2b-256 64fe72d3e258356dda3aac46a03f3c74085e7946ea8aae8f8ba7f5c0d2813130

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 209b62c35465b71624dbd45123095b331ac87c462ca6a991ea213b8d8e6f39c9
MD5 e2066933cf6f611c33be7f3b06835d08
BLAKE2b-256 f99535ca44d61650ed27c1613bdddb79bfca73accefc56fccbfd7fb587197037

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.9.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a627bc747a2e51738b377a113c9f3a3053c645d5a25620b5ac523994fa88f4bf
MD5 dbfae95c8784a97ea28aae2845f207fe
BLAKE2b-256 8e9c373cf9288c69158bd1c536e171ca271b4c6f0785588a72e25bc96e9b905c

See more details on using hashes here.

Provenance

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

3.11.1

25 files

3.11.0

25 files

3.10.0

25 files

This release

3.9.1 This release

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