Skip to main content

Difference-in-Differences causal inference with sklearn-like API. Callaway-Sant'Anna, Synthetic DiD, Honest DiD, event studies, parallel trends.

Project description

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 only library option for treatments that switch on AND off. 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.
  • 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 treatment
  • 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

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.7

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

Project details


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.6.0.tar.gz (1.4 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.6.0-cp314-cp314-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.6.0-cp314-cp314-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp314-cp314-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp314-cp314-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.6.0-cp313-cp313-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.6.0-cp313-cp313-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp313-cp313-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp313-cp313-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.6.0-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.6.0-cp312-cp312-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp312-cp312-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.6.0-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.6.0-cp311-cp311-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp311-cp311-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.6.0-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.6.0-cp310-cp310-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp310-cp310-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.6.0-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.6.0-cp39-cp39-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.6.0-cp39-cp39-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.6.0-cp39-cp39-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0.tar.gz
Algorithm Hash digest
SHA256 0cb9b234f8611c470fa7f16bff13dcf6a7a233eaa6b493a851a1c1b290406ec9
MD5 abfc24637106a83b725036b8ad1fb548
BLAKE2b-256 212c99c39a91586abc291c3aab1e16bf7770887293f7c724a53b889cf8701227

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 07cde8cb7cfa8bd5f38d5dbbde984207ae96f11a5bbaec954f8923e11949694f
MD5 bc59939a3103a82b7932dda1b806cddd
BLAKE2b-256 a4f2881c3cc5c892feb8dd43b5e953ad3a4f7175f3979ee060e656d4483a024d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 850992a752b4737f2d30fe3ea7536eff4bf24b6fed1d2cb5224255e6b1d9613c
MD5 aebc56c2b100d653486c05d813ac67fd
BLAKE2b-256 2796efca61ad9c858211b4a09bcb5f18c320f352f626395ab56d676d731d2386

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ada1f44315d6ffbdfce0405521acf65b0546bedfc75a0fd0a95c333736c7cc3f
MD5 c36d2ed2e7918bb15417eff3c68a04ca
BLAKE2b-256 c3abc25370020b9af7bc19d3e523574a11b274459b52e8428dc3ff131fb75809

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2d17cc199c664d88cab8d090b04495d3bcc027ebe9d53a672f1715c34be2cec
MD5 93c3a9f1671597acba4bd744667929f6
BLAKE2b-256 b2728a211c0f9e8a85d4bf9256b33a1461772855f85981c1d972761b739b2bc1

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ac0efd02b1faf4a5686856a0bd0622e2766165a66d5e8d44103e680ddd790a8a
MD5 c43aef4c8babe43e2933cec5b5b6a0eb
BLAKE2b-256 45a3392b97ca7ee422e1095e35dfc0114508d412d294b1c10a8e65e2deaa5490

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c502d830ae7ccba1ac76dfcee65b45e803ddd871972f3f37bda8dd477dbc144
MD5 5ebe4afa3999081a642806253ab58c19
BLAKE2b-256 c503a4c2a0bdacead9650a14fde30b26d8e6cce08f14c7cc50a9e02fe092fa96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0abf896bd93bb9dfcf8cf2c97e3bc4ea6f4134cee9e0c780934ec1774f6ae591
MD5 32097d15e0ff2a7ad48387c4a0bebe13
BLAKE2b-256 af4700b91a4b1b22e9bf3038a625bd7958c5a1926399c8ce6e35d7719f60cc01

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bad23b22cb3203481570068496cbecbc3c173cea5479252661a2fd5dce1c6cdb
MD5 8b8e4835d13f824fdbe9f310c63a409f
BLAKE2b-256 d800f51b6dc1f3087007ccd86ac2c416ce4c47042e3b32630ea8ff3324e8877c

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f33626ed839f26e2f1af0a279729941778cf6881e968ecb0fdf84cae65d58e4b
MD5 f45ddcd7bd2f99ac186e732ffbdc4fe3
BLAKE2b-256 cb68f5603507c65c32d84a919733796d211328f85ca6abc0c7558c8a64a84c29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80b44dab3edda966a40699ff0051c6cf409789ca6c3821cdcc01a233e4d2e770
MD5 29338961bde881208cdf67a3bb166cb4
BLAKE2b-256 2f41471585ec5901d594e956b007d8f909bbaf1afb80d28b2189f993e1a078ce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f0b7be63bc49f04db1443f9d5a895bb3001a8aa8d7da74cfc700475a39cda5c4
MD5 80dacdb4c1ed09d87b14f18266c28345
BLAKE2b-256 d3df26ed81264171dc56b43f747be8f2099d1fa4d39628e718a9535d3a900ac7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc9cb77774217f757992f600623a713cb7df35f0d7449295bdd6e8422e3a22aa
MD5 e975e2fec36170a15a4747704f3051ee
BLAKE2b-256 c817a9bcd50b9de39a72093219ab5789e27793c13749893d73e083f5db98a3d1

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 08eb15866891eace620fd9b17463cc990205fc12f7827ee38d62756cba85f6c9
MD5 c4bf70c1b1d26d45652a3853e52ca551
BLAKE2b-256 10e0a139f5c4e6fbc1794126c7c8bf5deb328aeff0e8c3f8c938fad9cb7c716f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ae56f9e4076670e41cb8951d1337186eee477490dde52853749b4b41fc4f1ac
MD5 f66b82bb93924c836ea1717d25427b69
BLAKE2b-256 5b69b446a42b46bcdd9cf94a532977aba963cd1c93f6fd66c057d66973b9fb00

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2284469f6604dbdc633f36760252bcdf860016044d9070ed8d68c6991252bd66
MD5 5629c3e522d74ea51824d7ce45bb55fc
BLAKE2b-256 cda1129324474d1655eb483e9dfebd04f895efe148d6499b67ca6a1ee342db02

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2aa9a8a64766dbf67401cfb5062554df16b6a07c8537ecb9a82cd008610b0dd7
MD5 a2d35832db26b0097aba0d453edee452
BLAKE2b-256 968139ca67c85522336df88ac11f8e906ac70755de53a197e771e1b6ecdcd909

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5885131bd8ee895c3728e45ef21d629bd608e67c2c52582c3296f78414ffdb5e
MD5 1830385dcafd9a4deefa54cf5156b8c2
BLAKE2b-256 d8c12e17ffce8f8a84a3939b4b9adc1efc7a69b64e6db00b607bf63b6e8020d0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8271a06e6aa3a54c1482e8d4db3155b01603ef542ee5e0778732b414120afbc0
MD5 54eeaa5a00d8ac1b468c375f48db90d7
BLAKE2b-256 9ba3e61f84e83ca6a1117e19c8b49654e75139db284f2a04e0354f38e5f098e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c4ba170f8b6d51cc619e08adf6fbd0863f39ea8d0c155aec4bc3dbf91a3e3d0d
MD5 9b469f8d6c68c533056501ea12023647
BLAKE2b-256 1bcdb9888615d000804a804114aef327b8f0023c24b680e539f877cab3f88a27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afb27013f50737e4378dd6dd98ade3b1982aa24c96b7ed5b21e86c36131d32e7
MD5 0ce2782b1a071c27a5542be3fe7e7917
BLAKE2b-256 287bfb6e595bb3f298cacdbe8072e47b6b03954e4085ca5073c9949a5f475601

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for diff_diff-3.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b6375a1c25d46f9f898af42a18c31573693a41c8b135be3cb3f30ec6e5d0f732
MD5 4aab69781abf1fbc5e75bcc276a64314
BLAKE2b-256 373c4df3d7cf70acfb3083c0866f00672ff225b2b0ea2db745cdbbcfd0ab8c24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7d7d5a42f169b4ea1f28f640d03cc2415651c9a28f8fcebf66a9394552fe552
MD5 0e69b867a7ad3623139c9f3f2b1d8fe4
BLAKE2b-256 b9a218eeb01b1d93b5dd6a4b1a9b9058746a9ebf195ee5283ac33116c265e0ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a197f955f7472e10154042b806769be5f643c1ec09d3827e7964572ad6656e6f
MD5 f810c846f0f58d8fc3e4b1c197eb483f
BLAKE2b-256 43863af6125d4f96e6f73ab1c76a65154de2d333777100f4d3a806bab4f3d780

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae3744a2730b459ff0de0929b6925a0f30f1fb873040258bea7c36ecc67702d6
MD5 1ee7838d5aa1114dbb5171b8105cc365
BLAKE2b-256 91553f1c16e8a6116a41493d390b39c058520ff0a94ea299694970b6b046b4fe

See more details on using hashes here.

Provenance

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

Supported by

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