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.
  • 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
  • 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.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.6.1.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.1-cp314-cp314-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.6.1-cp314-cp314-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.6.1-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.6.1-cp313-cp313-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.6.1-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.6.1-cp312-cp312-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

diff_diff-3.6.1-cp311-cp311-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

diff_diff-3.6.1-cp310-cp310-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

diff_diff-3.6.1-cp39-cp39-manylinux_2_28_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.6.1-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.1.tar.gz.

File metadata

  • Download URL: diff_diff-3.6.1.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.1.tar.gz
Algorithm Hash digest
SHA256 5666737e583e066b2c30f37214b581c1b9c7e7a4523b88dfcc0c620a1f69172c
MD5 67888864fa883d0636d6355f95768d0a
BLAKE2b-256 71c2c71c7ea7f3ca878bd85858f3136cf0290960d3752b9a79a6df827a0e5079

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1.tar.gz:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 831fbd83e6700529a66cd155ee81c63d800728ea7b1000a306657c3cd065aedf
MD5 3df8f58f4bb088ed7df5ac7e6d1691cd
BLAKE2b-256 657b3edf4bdfc8aaf8e036f1d3d66661e3f4be48721152a76de2cfdfe7dedb4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b6f4e093988886ee87e62a71899fc8115584ba448d6660be667e0d924e70c5f
MD5 0eb8dd2d2873dc43cd3d078aba63180c
BLAKE2b-256 654349e03af26bae347962b47880fd8d59009de959f8b1b8b4d050a9b1325505

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 636265ea752d158c84600593116b912bccf0cce029f12437a7c27101ef71fa8f
MD5 b9a5c9a5b66d1ae0767ff2bf651a6816
BLAKE2b-256 3de8b15674a67865807dbc36e7d75ac96ea9c545af04243918686c6c3d3a8d0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9ebbdeb8abe3690b0f7abadc25f550f3bc982efc791773bbd1c02a6422e84a5
MD5 02a6699fb90c4e01803f99649e75612c
BLAKE2b-256 611d09ae608044a06328a9ef32b5678ed20a1ee1830ce05e21e34c39613fcad9

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3f08097efa586f061ab0dc4f78e896993e4d590e0356cc522c931b6948072322
MD5 d2f4c9d3a96f7f7c51de60fb4436698a
BLAKE2b-256 27b97429923bf97164652f7a3d5e1e7dae624d4e9876d65efbbaa9216c19edf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8dfdbf13c8c4d33f9d0235867550421644b4a0ec7d2edf906d02ab9af45e8ae
MD5 2baaec9ca48d2da4a8703d3416c52140
BLAKE2b-256 4c66cd4d3c427a2c361113f3a02a455484abd2a25f617c018e2949ecd9fc6b21

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6ae17a5e19787cb6a1038db954d7e5980a45f792a03add81b6a12573a560b6a
MD5 72c5bab0d3d03f13d13555b4e46cfb9a
BLAKE2b-256 07c254a26acf8f81107bddac394fa806218f88a7c8ae14f6a70a7ec11cf19e2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 908ebbf806a4e231619d5af0aefcc78d1fec6e09aa2d567707d44847f10449d6
MD5 adb2b0b1d91e152dcb03dee0aa945aa2
BLAKE2b-256 d0f5ffce47098f0c5f253b8cb59ed04041d08b9eaa3ad25fbf23ff44fa457b46

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2ef48d3bd7e056bf9b746cf950a80fc6d53a581243584bec4fcb268248d9d7ee
MD5 d28f8d4cbb4e45fa9b11bc3bcfa89ffc
BLAKE2b-256 6e3e00c69a811fd7a92b8348c8adab54deda349b1c3b1d7a5442499eada5a732

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e9844f27288b6cb06e850ead61df9e240d6c66e224837a47f20b576ef4cb4e4
MD5 1a1a8f5672aae698c1f95a26dd151845
BLAKE2b-256 4d278276f5fbfd0cc549a76dded8416b42ec7c1797efca362eabc4eeb0479d64

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a416d18b0ed3c14da10bb0c70363f6d99a64b90ee7bd3a0c3dc16f0fc9c0736c
MD5 aa0c7364c30384645018d4ade92bc392
BLAKE2b-256 388adc33006fdaa858ba493f78b21199a026cb4d49859a8c4a5208eda1448c04

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6fb346e612e263ad5e7ed875b24156b1491ea90b2f87a7c81e947003251702f
MD5 bfced25a5e087852387e7f7fe9d8a2e9
BLAKE2b-256 2588b12f460508c8803f657e93d929238d06354769b742a6072a12374cee7fb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d3561c8a069dacb08bc5f00b9170be7cc6969256946210b1cc5aa145d3898bf8
MD5 d30f52bc4c4fd3acbc81f8d165bbd112
BLAKE2b-256 67db5a456a40d7293260febbd462411cac9e132d01e2120aed7a59ece123b34f

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0c3ea3aa8f7ebd5a0437e852c51bbfb2e5847843bbd3db3a40e206ab3557e5f2
MD5 ca4c0e73140cccef851dd5009947b7ad
BLAKE2b-256 31ea512ae6e2734a20560ee173fe69f07c3142328f2d073aebe900f1aa649435

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e43632f974665530ede76c7df32f447f11db848a403397588276fdee8dba110b
MD5 0fa29a425ac403b9ee8d642b080b215e
BLAKE2b-256 332e399541c4a3a04e37eaae484ade121f9d9a75ec3eda0677183e1bc73b77a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eda60d09df1290b90544cbfda9d12ab130d0e77904ad0bf24997683a1af99b35
MD5 dd10fe04a34ed349d9f068efd9e07b60
BLAKE2b-256 31595ea7efd85b8fa29f1062b545750a629c6bbe10ec8b93dcc7095686c32e0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc81e0c419c2f18e07744ed7816077e269d7d44254616a631b99f5db08ac3da9
MD5 463a0504c8948ad211e4a0f6957857fa
BLAKE2b-256 1bfc085310f8721ebc11641adbecf2da06022b8a68ecebed46d9ad41e0968937

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 25beee4a46f2dbffa535d2251573b00c93356c9f897e0cc8c1a63bf855932917
MD5 cf19d1fb5f69a29bdbb1b1035ffaca65
BLAKE2b-256 f927632868ba72c553a12961b1f9350f29398cae519ba9e6c2824521806ddec2

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 356b04595fa11df302158fda78fc8444719886ec6c3945e91cd55c33e80a7bc5
MD5 276993ac0bbe4df27e6e940878ec481b
BLAKE2b-256 d26da9d2f16ee289e5f8f272a1e5ec7d13a8eaaf98c5089f544b7b55fa58f34e

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae87ba7777767fa0ee31ddef4315dc71c18c708d43652d0474532cf89ac48fd5
MD5 4f4d790e3a0a20c189c35ad936b772ce
BLAKE2b-256 7c61971bdb037cb7218898a7d65256f0e1a6859a52e966a096beecde1b88381b

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: diff_diff-3.6.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d0bd625d54429b889fd29c83bd30da6803578af5f6bca9739737922293a956ab
MD5 f59c048537dbb7416936b6b1abe7f4ce
BLAKE2b-256 923922169db2838945011ddc97dff8900dbcfba475632f1758c96106b4798697

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 151fa629a18ac16fb5ad193da6d4903a50652a1cb2f910acf30eb13110cd1c43
MD5 4cfbc661514037335870d0a7f510cc2e
BLAKE2b-256 e34f46865ea55ea4812ec8e2d7ef5503a976ebae3011b4af39aa165c2d9fb7de

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0e942433ac1fe741e755927d9745260adaf97f49e42fe9f766e3a658851f0be7
MD5 bfc7842fd605fff8550731ac60d82eb5
BLAKE2b-256 1d193d2f1eddd31c8aeebbc9d6da9688360a2eea820f88695df2c17ad7acf1cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diff_diff-3.6.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diff_diff-3.6.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e6a5b6bd28105e396d400d7ba710dadeb67995542ef745370f8bb2360799da9
MD5 5357400a2bb5f6e5600a97b15769cc44
BLAKE2b-256 68fe815a7580a0cf321c7d1043777ec36a977169c2869d8a491a63b534c3bf16

See more details on using hashes here.

Provenance

The following attestation bundles were made for diff_diff-3.6.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on igerber/diff-diff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

Supported by

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