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', time='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).
  6. Sensitivity analysis - compute_honest_did(results) for bounds under PT violations (MultiPeriodDiD, CS, or dCDH), run_all_placebo_tests() for 2x2 falsification, specification comparisons for staggered designs.
  7. Heterogeneity - CS: aggregate='group'/'event_study'; SA: results.event_study_effects / to_dataframe(level='cohort'); 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
  • 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
  • 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 treatment_col= 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
  • 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; bootstrap inference; R qte parity. Alias CiC
  • BaconDecomposition - Goodman-Bacon (2021) decomposition for diagnosing TWFE bias in staggered settings

Diagnostics & Sensitivity

  • 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
  • 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.8.0.tar.gz (1.6 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.8.0-cp314-cp314-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.8.0-cp314-cp314-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp314-cp314-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp314-cp314-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.8.0-cp313-cp313-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.8.0-cp313-cp313-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp313-cp313-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp313-cp313-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.8.0-cp312-cp312-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.8.0-cp312-cp312-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp312-cp312-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp312-cp312-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.8.0-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.8.0-cp311-cp311-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp311-cp311-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp311-cp311-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.8.0-cp310-cp310-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.8.0-cp310-cp310-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp310-cp310-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp310-cp310-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.8.0-cp39-cp39-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.8.0-cp39-cp39-manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.8.0-cp39-cp39-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.8.0-cp39-cp39-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: diff_diff-3.8.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0.tar.gz
Algorithm Hash digest
SHA256 75f820dfbb4e7acd9f4cca1cfa6ca96f5fb841a820eb0521788ae585984c4ed2
MD5 48235132d6935fb8bc7969d81c2c271f
BLAKE2b-256 0e4d8d0a6d35fc0ecf59dc47dce80a66bbd7ffa5164d747adcdffb4aab196e12

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ebc31482c09ed3a812b89586e11af8c8f84522a13176fd9f4e48176eb679c5ee
MD5 e3f1e676bc20448675b4871fe489dcdf
BLAKE2b-256 8e38d75fd9f428285651fe5f36203d628384467981f80d1e645b81d9f72c500a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dda99c44eeecdd4b8090755f8a963f15c89d3c97932c4649f78585ab290e03ae
MD5 ebf9a9ce1cb9ec50ac2da3217ae823c8
BLAKE2b-256 362c4f8bab3715200299e383257cba809b3979150cfb278947bca049cd567b25

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6dccbbf73315c9951e7bc26ba78166cd04967e1d8a65a0c0c79f4fa4788d3fff
MD5 54ba9cd71a239bcc9b358026574d32e8
BLAKE2b-256 fb577d5119bfe3b612b029842dbb179eb8bb4db7740c682321869fcc176caac1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 656f7ca60b10462a863f6c52bf43005ab4b2def505ca5d60452e726fc5ba81e1
MD5 ce5e5f2969cabd3a07c896b519175456
BLAKE2b-256 e258f7797e2b5e2fed4a234b8e5f125c9079ddd02f8a2136cd9fee4892e051e1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 96bedfc2cbda1c681ac4b18890aecc4ebc33f1ca74c394c9568bfd7078206105
MD5 c9e7cfd710647ad699d1e3b44e2f6e65
BLAKE2b-256 74783d3b1a1cc758765d9c1925421d19dae76bde0a3cdc8f52798af72de459e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86682e213fb8f8247ecc18e1b445b6f7637c9198d253818b08cb9a6c92824f4c
MD5 7428f0f79c8652088c3f09d815e2c38c
BLAKE2b-256 165353c7b6f103d30af34d774189f2dc26750af0d28e22d44a2687082ab0f8b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a5c0339281855a7986aeef960b5fae0572f93bec671678cb3922655e714b2f85
MD5 393abc7ca72c31112e417217ec89b6fe
BLAKE2b-256 d65f68a0e168f55d1935b8d737eea20893d6521416e53d501b578b140dd15c9d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 923c87430561984dd04cf771d2955a997ac7ea2e871f3e24793ec6d270943aa3
MD5 956d118e7de48067263208fcdd987f02
BLAKE2b-256 e7c39ec573e11585f95ed01a8e3088e253710b4816e1dcf53422c7eeffeb2dff

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b8d43d8e8885251638041f135dda1c4b7f16cfafe1b1796d3fd91f14be9b104c
MD5 e48ad6182f19335b608dc763bc5cdd71
BLAKE2b-256 72880356320d5b5cc1126449b4ea82fb6598a6b19b7a6248815eeb2d191906be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7f5bf3da2f14f00a62be39bd4d29468fa976bda5f225e4b6ef8711ed40f4512
MD5 38dddfe28ddd242315900903f37431fe
BLAKE2b-256 f38d0c264c4db82cf0327608fbfeeaa87ad5534c4c38ef56191481466f653a64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 af25c4c8f4a9fe5b4ada74d930fda6c2a6514c7ede91f8a2b6dd0841cf412a50
MD5 7bd437ef912a31f68dbffd0fa8e564fb
BLAKE2b-256 1f58c967122f50df4262603f3b4e35cd9a60ece2362809a17f03540d7458da0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 854ec663d789b8368094ba6685d84589a6cd8e78afda84e232eaeb4a09af525e
MD5 6c0a24eebffff3ec8d8853227530b4b0
BLAKE2b-256 ebd176323683bc6beccb3d38e91269ce06e59168616f9bb5c317eafcaff48a71

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c7912ecff6857a87ed381ec6829b35fecdfba11be3849a1fd516ecf4df0cf5d9
MD5 683f8a9c5e35ccfb492723712aab4f30
BLAKE2b-256 a8fbb1e0e14ff0c5e3686fa7416666040a5e71d6e03ccce85934af667d0eaecb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7fe870eedd087f3bbd94fc7782d9457da927ddcd38193e457bd5e6b84d5715a
MD5 62ab5d40b903ffec1b4effe6c954e0d0
BLAKE2b-256 8cee2b1e3ce9e21e4adabf82153b8a42a207408d93b841511052f1f4b0dd997d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 42d0856e8b586410fa16dbccfa659caad1b369d4f6f61cd8068134cab71d957f
MD5 72f1d8821b0d03067eb3cf02d3b7b865
BLAKE2b-256 3a953805ca2fa400de9cb7ae8b0f882d34e76ec7ecb568d603df678702912d4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1097d1f8f688eca8ca111b1dd7a4607f478275deb5e462a6703b3a4f6de6f10
MD5 8de4cc8e65d1ea48a8dd75108e394f10
BLAKE2b-256 8fadaeecfff95f1db6438a2da5b9a33491a975b8fce9e3c89ce06a3c87ca3dba

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fb9a505716fe055fdcd57d9fd847edb9da467a57586266d0da947918eb390f53
MD5 78f68017eb4865152f9ce53e0d83523f
BLAKE2b-256 8536b32aaf273a5a082ad0b699643f2315af8033e52f50102e82398e8141bf7b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb004d5055077ee414bf5c927242c29db74f23b0d4a26a6f1e852126f3ecaf6e
MD5 2a442f036cb3e12bde832c053e999f73
BLAKE2b-256 0a849b3d9418f8216c507e4376f890a86eac60d8b25ba08ccceaf4d20ddb57b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7ecaca41b0b2260db55a56b806b7d492ab1d2422d4912767f56d5b879580810
MD5 6b7f2c805b104c11f7ed83e982f5fb40
BLAKE2b-256 571df59207da91b2bbae8548d53497054697338f59f605040b2dc7216b134eaa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc73a96c21b0610c5162fbc5fbf36695f88c5388deccef198c888ec3a9c1614c
MD5 25a3de0b794fb46d5eae66e7db53e5a5
BLAKE2b-256 ed0a0a45fc855f4f1cfcee8594cebc816835c6785d5743247bb26c29315c2f5e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for diff_diff-3.8.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ff490ae8efe38e0adbe4904447ae4cbc4aafffa71cbce54450c37a9f9051e398
MD5 a64f28625034f2d7ec2ea034881c6845
BLAKE2b-256 a7b64188ec0a67122c44fae2914166f28f31562602cce94c48f319f9733458ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43189f019c0364daf7ed44c9097fcce4073153fdd3d873adbee04b43f2386e29
MD5 b2b5b9ef2a271cabcb6e3023320cd5b6
BLAKE2b-256 ace579e385c629d77a8874925380faa6a413d35ca6136fea40a5e23326201f6b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f8dbd407c36d3f9ff9bd80a310976663dadb5cd749bbef766c2f243931532137
MD5 356aa542a97770ecb7fadeef885183a4
BLAKE2b-256 b6f0e5a082f4466e7ffb6236697e22da72d5751d6467f18a1dec9a3a6bf147d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.8.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 641be1c0c03d08e97a371ab4166a74eb30e36c4708e4ef5aa76e637b142cee6b
MD5 74dfe0b6ce91d88348f3267932354622
BLAKE2b-256 9760f1ddb43fe023c8fa436ff155e503f303eb9da2b0b3a7677d4bc96520a40e

See more details on using hashes here.

Provenance

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page