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
  • 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.10.0.tar.gz (2.0 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.10.0-cp314-cp314-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.10.0-cp314-cp314-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp314-cp314-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp314-cp314-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.10.0-cp313-cp313-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.10.0-cp313-cp313-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp313-cp313-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp313-cp313-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.10.0-cp312-cp312-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp312-cp312-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.10.0-cp311-cp311-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.10.0-cp311-cp311-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp311-cp311-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.10.0-cp310-cp310-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.10.0-cp310-cp310-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp310-cp310-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.10.0-cp39-cp39-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.10.0-cp39-cp39-manylinux_2_28_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.10.0-cp39-cp39-manylinux_2_28_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.10.0-cp39-cp39-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: diff_diff-3.10.0.tar.gz
  • Upload date:
  • Size: 2.0 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.10.0.tar.gz
Algorithm Hash digest
SHA256 4f21ad862ef8e920c5ae76b444b24e5cb6803f4176f85bac563281702e7736f1
MD5 df515ff0b76a16a731a44fd74e49613a
BLAKE2b-256 3acfe831c26cce623ab2d556bdba61e9e622e04d204c3d17f07d15ce8c03de8f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 60015949ba4d60f84de5f0679385f95c534e7a0c70292cb33fe7576eff717688
MD5 81d9d3c2a86c9e81f7a1b999b63de4d5
BLAKE2b-256 a31b89264d8b5ed910cfbd6680663556b26d8cf83fdeea1a3297d13178de4f59

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4fd61c37cac765447885cd82699e519fdacc4cebeace690b0b4513954250368f
MD5 779a550022d66f208506e64da97df427
BLAKE2b-256 b1f8dd3e193bf034d5ff551d050c04a78c15a6450d096b8f3878e509ec67c267

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 295751cd5e77d5c5267342e088d540a3a476b04b2e810d30c70648797f18f731
MD5 2829d5c977c943daaab5235a408c9362
BLAKE2b-256 cdc2c953c0f33b005128fbb7f77920252ab921865df4ac68e1a31c95bb11a787

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18d789f09eb004f37dd4af0d1a330a1fbf36abbad7fc570d766729502a1aba69
MD5 89b332107ad93918004c90a1a1f45332
BLAKE2b-256 a1230957cbaa37965b156d41ac364b0617873928de41109ce8b64699ca32a359

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 144b7cbd3d4607b4c8a4afe35f97ead63dd1ebae9d26bc73fd5ddcb5f3a45242
MD5 b7c6d109da4ee14b66df8a4aab44ab99
BLAKE2b-256 1782d1483ada6763a9287f4d2827dec5d8c563887c2dbfe605046e662b49d984

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b48654da0348c4760e3bdd0a98c4e5eaf104ecd104f89c68811e280ee0d6f36
MD5 d77af45a61670861b13e159c14e5b059
BLAKE2b-256 538a998a2a60faf5358cf2d9413024e3976ad794f643cb3cba8bf584ad5ce875

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5b6642382a551607c5d48999936e09af2abf620f9039729985504977fc5a52df
MD5 eea4571690c8f6730eb7a335295b8cb3
BLAKE2b-256 95cdb6a5ce20f34dbc72a0dc94fa1737abc9886e92aaab1fc8f70eab56a68a94

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c225b27e92cc4a71a07ab33b1b6508dcb2fc809ce323dd82a70340656075319f
MD5 bd09d4047ee626e45bcbdafc6ef741a7
BLAKE2b-256 b42ce8197fe1f8c8aeea63bb11a54aa046a7d74dbadb114bcb960377b481c925

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f4f847d3d0c75d8f8629ef345db50ab1b1b6e5bf5fd58e64baf30a3959795de1
MD5 be70c82da2e59ae151f1acde996c4e79
BLAKE2b-256 3168c1b638c5770c9e034734507db32428dc7fe743901faa107065e64e868fe9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f820a9918e2b32f4a77f2298e9467c97d3a215c71d0013424ff3a9326b82cc00
MD5 9643c0cdcc4c47a52853576c292bb360
BLAKE2b-256 56f4b89e8124627fb3c81914e1103d8e7c26c37bb7e8d70e5cc79fd91a4abc85

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e21adb54cd9dca602eba2af67fa814f37cdcab1cb58c567d55668ccf5d8c3e35
MD5 aee6293904fed8004fd334444303880b
BLAKE2b-256 3d61823c13f23b1e8defd9fee74d594c6a0726b2e677c3ee3f111a8510630cc0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac0cdb8055a3187189cbfec4a38b2743bce4715f07810a88611acb1fee357d15
MD5 6439d06b6acf3ee339f480369a133e57
BLAKE2b-256 b39a3f048ce03c6e06add5dc9eb4ba379af2ef40d21782683f07d5d6940b387b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 42d16bfcca45dfaaf7ada4cf795c70670f53b8e3fd131d2d9b63432626ad0f06
MD5 e5541ac4188db618ee8054c7bc938933
BLAKE2b-256 573ae6e46cef35853c6d952117e751c395567ffbd90ff38f803eeb3755d03196

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7aeb12ed27e7be62f232dbb1e2c66cc259722d52a34bd69104b3261779e0475c
MD5 1dc7cd0e53b2af375894b00448844ec2
BLAKE2b-256 f21ff9bd342cda26759fe85eaab10d75e6ecd77d24131dac85f9d6237f30e047

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 02e2496092b839f1624e1df73d4aadf83a5de705b02662b387efc2849a3deb23
MD5 ac7f3ac52b8b55287e7e7495b49ff97b
BLAKE2b-256 6c6572d6bccba8e9c2b66965d39ca0956b43a3b0c1d476a8d35a059bdf1b30c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6df98c8d286e804a5825556752af5033e1ca961105b01167e60412e845e6c62a
MD5 a1326ac6eba188defdde30b3781fd556
BLAKE2b-256 7baf2943eeb769d4825d980c163b87c9d2151aec23f980a8a0f0a41a52388d8d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e15d270b79c27e7898a0c53551025a0e1164e52a8b505a7748970d3599b81189
MD5 90e1dc5ec5a2f190bfbaac279a313358
BLAKE2b-256 e86cf22adb17ad48400f0b3820249ebcabcf4521aa91e79c963a7df124f346af

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afb3e530b9d1a34c81947ab4c7fd2f6e1e7e615131cd901377efc3be08825c79
MD5 b520283be756f0edeaf48080bf159a26
BLAKE2b-256 4640fe3992b6fc4b9a26bce125167e7e548204bf30819d8977ca9b81b3e35a00

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2feffea55e86602b65b3df2145e1fecd6144018321b32d98f1f05829c7c37cb7
MD5 f6f988fe0f077574e78e8b86bd4f08f1
BLAKE2b-256 5511bbc7a3c57c65d4816be51e3de5943473fcd01091ae7681fdee5017ae19de

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf5bce299cc1236f2e4391dd3ee1d5b951cd822816f233377d226dd7007ce7ed
MD5 8e8b8a135a907b7b71d2a07ba0deb0b8
BLAKE2b-256 71eff2576a616351888ea5e58f4b9c3f9df8775b51f30d6fdd2ad33dcc25799b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.10.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.0 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.10.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 810b3ee6fe3560d00afb2ae1d0c13ab4e0b55c9c4ebc26f0d2c44330f33054ff
MD5 c05f127a7e020232a670e3cef8e5d58a
BLAKE2b-256 379368bf1658c083ff6922cd8db9ff90fa1a40c23babe04aa82a5835bdb83ec3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e65d620c9b0e32594de102404875c53997303ce3406e097b3801e9affb5830f
MD5 8d565e7ad27681603ef19472af99da83
BLAKE2b-256 0e53c1993c04959a60732ba462869e981e443db09aee025842365f49e13f2b95

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b2adf5384d284d2fdd9b1bc5fc1689ea4a57d04d1ba2137cd740ad1a5bb6e1cb
MD5 1f8129b6f5643f6f5f195058608ec8a5
BLAKE2b-256 75dfd62b3aa130f27c55a8d9bcafb649e6e07a68628d15964c176cf7ff14a497

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.10.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48ebff5273ea584967ce237e3f68551ec690f6839ec973ac4058ba6561183070
MD5 32bab2678d076e2d48238f2d8e872d4c
BLAKE2b-256 4193c2b8c35fc6559d55640ae8e4092bfa90cb7b39dd5329f9a622c80d2d62be

See more details on using hashes here.

Provenance

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

3.11.0

25 files

This release

3.10.0 This release

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