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

Uploaded CPython 3.14Windows x86-64

diff_diff-3.6.2-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.2-cp314-cp314-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

diff_diff-3.6.2-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.2-cp313-cp313-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

diff_diff-3.6.2-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.2-cp312-cp312-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

diff_diff-3.6.2-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.2-cp311-cp311-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

diff_diff-3.6.2-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.2-cp310-cp310-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

diff_diff-3.6.2-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.2-cp39-cp39-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.6.2-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.2.tar.gz.

File metadata

  • Download URL: diff_diff-3.6.2.tar.gz
  • Upload date:
  • Size: 1.4 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.6.2.tar.gz
Algorithm Hash digest
SHA256 f06baa14eeb228b34bc4cd55744df220ae687801f56cfcc81954fa0f5cf404f0
MD5 4c28653bfa5ce7650ef980aa54627682
BLAKE2b-256 619b0b8da4849d782802c5b48dac36ffaabceb9641a8e6d25097d45debe7fb8a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9e716db8771de58fa78afc8a53eb14fd510e610c5a89ceedf40445e3fb9a3135
MD5 ef11023a5f23c79410d4a01760d6df02
BLAKE2b-256 833931a96f8f228ec6c9d1f825dec45e60e1a06b1e7bbc01692c5e456758a41a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79cd14a67ac8b6daeaa5f13351bc3d32f90e4a5baafec416875eca6cbf913781
MD5 1764079224fd81c14f7522e4625c0b93
BLAKE2b-256 380814a00fd0089b820f659fc8ffd5aca200c8fba9b53e020f5e9562789d0b89

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 17fc1aad07843484f7a843fe4652b851e9d6fd468bfda1218006760d842419b6
MD5 27c5a447b5a99fa5f539d89ce495c090
BLAKE2b-256 8275ba1f78e740b5eb41064e36e382ead2b8934f037fa4b0bec0ac9c3f82471f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fa9bfc5e08234a5bdc833dd754b4ffc42565217d5694a58c28a4f609a3942bb
MD5 4a66dc2607488741addbff6ce43b0ded
BLAKE2b-256 abcb2a9acb566080dfb2de092dbd9740a9508979174791415a4149c5f45f5eea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cea1c7507c91a828f015691f6efd9616e440a46848681bee6c455bbbe0ed2065
MD5 1506fe311f70d5c0a73e627c1d3f6e9b
BLAKE2b-256 f3aa3a0d709632bf47a1e17a6dc62c51b2c2ad570cdf7567bd089a57dfb5f907

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4bda45cf7774126beecde48dd1767f27127c3a2935d758711d61f0e9511d0249
MD5 80325954d1b4c1024aa233b6bd624612
BLAKE2b-256 3d61976c2f447263a25f4faef872f2ef5eaddb4c487b913b71d91310f77d46e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11e198fa51ac7f06a1fb619a4b826f379f214a6f960d950db93ac96e65000475
MD5 24d883ce45d99ab7f77762a852e9803a
BLAKE2b-256 3d6e8d017c09ece045fac363ea168fe938f08bafe3b9a623860047d2633c5b39

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 743b908a43c82491782b1d6863f7724756e6be677883cb37376af1f5767cae14
MD5 b5e3676e981c9199382ea837201c81b9
BLAKE2b-256 5b3f728931c29312ffdbabd5d68876b6ec85581cb8df5db82380e6ea07d89f38

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0e1ce93d870d3ed0d81a6448ade77d1f434355a251860cac8afe9980a9e50a07
MD5 db282d81fbb3d614dcc2d71d7f8c9a39
BLAKE2b-256 2aa544ae1a9bc04e63e855938002970fbdcf03be4ada4eff62cb9d9c117510ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 27d91f4aaba0d33040e61f578d31815a1031aca2e394a594ea8b0bae8eab61a5
MD5 2201761236c3b89ab8424875583f9118
BLAKE2b-256 cb9fb6afa60b98f7877993f72d39e9cb17c043aacbb7a58570e7c71a8ecd0731

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c9d854cee7337fca3110db7f8530c636572e24dab1761d7edfd078def678ea89
MD5 c5b7e01d91adfb086f41ade4a7d67fc8
BLAKE2b-256 492b67dfd0deb8b1992792a3d06c57feb88dd4666be735ee4468798709037556

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca6cea77d2a9cb518a72d68dc179baa15d752bcc04daf6358a1c6ea3373b445f
MD5 b68bf604f9a5c26ddf7f584c96ebcf64
BLAKE2b-256 99575400f0e5fa66f69412e5356a0963d17eb9fa739f538659b35962ac0b94b3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8a31c54b7849f062a485975d9155f03ec5435d8b3cf56583c66e4602e1814c7f
MD5 da87107604ff3b65349f3d60d747532a
BLAKE2b-256 d3faa7c14cba8c3833d2c1c65e14c5708d49647183f6ce4d0d15110b91658574

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a9d72cd15df95c6f1e7a11fa8e1024851734cd97687839562f64db16e095d84
MD5 a1fd26e7c44eba97aa9dfc4cfc707985
BLAKE2b-256 0b81fe99dca3ebe6b47a1b4b4adaf09bc0c84046027558bd376bc67c93360d35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 90b92cac9fd4bde56cd1755ec21d83c57f80b5a264c71937aaa8ca65a27a6390
MD5 e2188a8ef2bb32ad11464612a90e15ff
BLAKE2b-256 86eff074a0c15b757d70d0002ea5d9caba03c227d4877c1779ae9658a3bfcc54

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65e67b92fa49394568420429e6e3bb83ef78d45c5681399155681ea6de209723
MD5 fa33823555457c1923a72eaf3021e796
BLAKE2b-256 62eacf2a8548857040de544b38e9a6a6b91267dc9990537409b0fd9c212c50ea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2c6c9dce83b249a1ed3308f7a56cdfc2cb8a0e0b55f3674d393b2842e8f574f1
MD5 14f1ab00b673c90d442e0157e0a41fd4
BLAKE2b-256 fa361c7384ce3fa9c6d662b2a2bbfa0c8ca64da97b0be4d2c63dac64d3db70a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e73d1688e553838e1ee201bbb0a68a7f57395a1cf947eb6928471e8141965669
MD5 6bda91811fdd0c8fab208bda17e2a040
BLAKE2b-256 b7b4d4009a1e355cf3d9d8b7e51acfe399c1acfbb231cbb0ddeebc3b68891af8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 45eb667b30f1e007fddb66d48e37a38f5fd57602ac0b1a8641cbf5ace959243f
MD5 a1bbf0f0d91df509211aeabc9d70a3af
BLAKE2b-256 dde30c2571cb483fdacf52ede573d148f6dcb88c338b7fe5ad67deacb31d7adb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e9aa73bd643c2dd29f12abd723439bed146ac2213d2fe1f68f8ae57d108278c
MD5 7a61e485568921f2c8a88cf4f4b79c7d
BLAKE2b-256 ee8eb29cf3e29ca8715b7cef4d3c07e38d18af2240f93a396330e837f4265460

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.6.2-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.13

File hashes

Hashes for diff_diff-3.6.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 83334d8ede8748fd65f06b390fa2a0bd52aa77bc3da4163737b9eb8e33cbd4f5
MD5 f6e6b3087da4c7f3ff2d388da98d5785
BLAKE2b-256 944c2532bb112b99495a9668e864609d9e9fd3d00cc475454a02feda5ba64f1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13ad97208ad71ba30039ec8163066d4cf4355d257bfff2348d3c3f380519a4c4
MD5 75190eaa12a70e1819f8fe49e31076b2
BLAKE2b-256 fc11b746b7ba6b93fd45b417af61703c42bfd844f4881acb146f92030e192839

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9bad9d8fdee49de84d44497096a563367744f8ce767eef65c0389e5813ba9781
MD5 89ce905659e8dd4d2d88a1c312287885
BLAKE2b-256 c8ca9ea208ef8974310f5b40baf7d89b3629e344ac182349d218ef13e24638be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.6.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b3c9f322969a4f85c4133e41b70b53a9768810bd3177997b6db16c2d15cd43d
MD5 eafec357f7bd880a74290cd0a3bdb012
BLAKE2b-256 d713cb19d9449ba9678cf539b2171ec5c4c9677731d6d2d9855b1e7ff27f681c

See more details on using hashes here.

Provenance

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