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.
  • 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.5.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.5.2-cp314-cp314-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.5.2-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.5.2-cp314-cp314-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp314-cp314-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

diff_diff-3.5.2-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.5.2-cp313-cp313-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp313-cp313-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

diff_diff-3.5.2-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.5.2-cp312-cp312-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp312-cp312-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.5.2-cp311-cp311-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.5.2-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.5.2-cp311-cp311-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp311-cp311-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.5.2-cp310-cp310-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.5.2-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.5.2-cp310-cp310-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp310-cp310-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.5.2-cp39-cp39-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.5.2-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.5.2-cp39-cp39-manylinux_2_28_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.5.2-cp39-cp39-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: diff_diff-3.5.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.12

File hashes

Hashes for diff_diff-3.5.2.tar.gz
Algorithm Hash digest
SHA256 c866d28f05009753db610e1364ff9fed32c7ea57732b75ed9257f5aa18907123
MD5 f37d86d32218af032651eb4c2e6d597e
BLAKE2b-256 f903dabe3874aa317c371f5d5aaf945e76aa04307e96ef22bca29507ed9eb8c5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-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.5.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0b74c6f9d227edfc5cf7d0dbfd01866a4c216a60366ef7b34186b117599b287d
MD5 b4590b4aae11895d6372d72d35bcd244
BLAKE2b-256 19b12a479aa0c0e97c559261037f1356423ddc5cc0176a0d063d4847de29f0f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08ccf4a7e7319c1310caa7323ae967961b798a2d28e4d4a945ec941207d933a2
MD5 1a10d2d3ac6c07790e69a4a1f7aed1d2
BLAKE2b-256 91518f96f479c8b398d5bdfa9d177332f6536e107a5ffc720e10e50567bf0ac2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 16a48feada8ea1169462d2f74c63d869036a5dd904186272dfbc059eca2bb871
MD5 260be2a00795e5f5caa22b2497e058b4
BLAKE2b-256 de160286794c5fe6b6540a9597eb53c224aafa069c4810793402182e860ba03f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1967a237e0005370d450308f09a6f351090337e148205e9cf1a39d9ecb76898
MD5 41a4f1201e85e6a220d510638ab4ccac
BLAKE2b-256 0238ba330899afee95a8cc3d77ad918f92060608b0e6139bfcfe252bdd9cba5e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-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.5.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7764d9f1c31d321ab60d3ed89e2cebfa47ecb4d808b6bce2a9956b0ffb618e99
MD5 93bb4cb8f0d44fefc98d52de954e0e06
BLAKE2b-256 a6c4812cac718c0141443f4192d5a926fa3f83819bd9f824cf78694f158af958

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1974196c4733d2d3652ee4840b48d25dbeb325a585290863ce2b8d20ceec6c27
MD5 014e694c9a0613c9df00e469ee574299
BLAKE2b-256 dddafbeaea12d731729d62cfedd699d639a08e751a18d49dc1ee0271e5a1d3a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 42bee980e76dcae801480703510ada08fa28f5c4493a6daa79c32691100ca720
MD5 e5079403fb1ae1f81a930f5054be12a2
BLAKE2b-256 cded1dadcaf4f2a8ff3f67cbee4a4df4a372be4c7b9b699e46422e564019c97b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d93d8c69a07011b45e739bf506cabc243b10cee0858d537902d451ddb8d9684
MD5 868eb4dee67102b954aad539ab74ba49
BLAKE2b-256 b62915500a178b810a19f2469074c1e654402dcb1b082fc98f0970d1351a941d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-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.5.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 75f8845519649f9a3a658ff016e6ac3ef88fae476e2177de87ad09c6dd9967fd
MD5 1c341fff19e572d4138815ce2be18f4b
BLAKE2b-256 c58c2e086c25e87cd3d34b2548723df7d2300f1cd3e7edfe5e39408f496a344a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0971c9fb51f2d3d3363e41b52355dc5cb6939cd556f0f2ec4bfbd704e0f62a0d
MD5 563ede1d699bcea4280d29a597b73322
BLAKE2b-256 dca65b1602efd15f5eabdb8343aca73e9f968ec6594176f4cb03a29582fffb96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 87425b8e712e4fa08e941644d50dbd143e4e38283ac90d74171ce384db226326
MD5 10a30b3361142f7d95405a8863e38e58
BLAKE2b-256 53b2803caf6cf212d047fc17d8669b21bbe10750e842b74df206c172d0c74188

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 195f5f8117666dceba83dbb83fdbe6ee85217086fe2cc16e852a66983e355731
MD5 82e491ab088c6efefb9e794c97f2b510
BLAKE2b-256 ea679f8dd745b7eaa4a3df89778366d04d2609f4263a89a46b9c1b88f458b133

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 de865f7048fadc105df71cbc3973a6919af20421c959d271f3d12fb497e06ac3
MD5 0b717589a44f933f2bbc75144b42b851
BLAKE2b-256 6a4c9eb1cf9b5f95d5276b40069de3aca0a12abea7a9f3485e30a9f1549fa83f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f615c562022a99743c3d492903330f42c36919d34fa1d7a6fcf9a462c0a4d35
MD5 c96e028cd21c208dc88cd82f837adb7f
BLAKE2b-256 09e4d1cd951ce28c8a101f75408aa9cce9dd2f246a803eb901358efd02e593f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5ddc1c6bf25866bdc8f261a74e67e80864bc12657a40bb25bc071fe626509d65
MD5 2321b22632152c381b5077f722a7d6d7
BLAKE2b-256 9aaba2fda391f2fd2b9ea62f1feb7a422465dde25e1173fae107fe34f9581a52

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 978da7d6a8b833de3101dc39d45bf6cbad69501be536c9c861bf66bcedaacc13
MD5 750215f811de2e382c03faa145e20a1a
BLAKE2b-256 f25009e2b7999a9f1f695a5f20cc2ff5ef29f1f55fe729d8140992ad8afa8f71

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.5.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8b0cbadf62d64b2c7ba539d5a3645bcb9db346c09c2ea3582fbe991876e42078
MD5 814179260e95d91171a1abf75c3473ee
BLAKE2b-256 df9904be49fd4407b9c017d2954923258f22fedd6ceb2a87d511d20b89412363

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca4154b54f340d5bce6c512dd682b600ae66fa229666078beda33479c874b399
MD5 9ff2ea2f9c3281c39c7ca404ec8860c6
BLAKE2b-256 7e28dd7eea16759cc9c1e40f5bf57479b65a83588c6f5f744ff4b1e640910fd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c708baf2c9cd114fb04c5f37be60fd24f0e0287006baa09c3dd43c5431394b3
MD5 94920a1b4ce3460c96a16e2990842678
BLAKE2b-256 31ad722cfb8e2bc3d2211e7fdeb2512032fb7f8e08936b7fb5abf08ae05ff1a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d28cf0ba5662545c8c48c1fda58ce717b407b47ef780ff35490a916b44d6a34c
MD5 5d6bef2a8ab0125f92bc4a21a1c4105e
BLAKE2b-256 e6da6956a02aa7525a4a418b9bd9d90c02c1cce5af47071891554280aaa94913

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.5.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 60f40473f3da0f29c716d3ea88f2009eee8dab6f85a0fbc0052b79dae7f610f8
MD5 570ec0488bb04e360c547e9e78551aa0
BLAKE2b-256 d61ced47f32f4fd783c4d5b1ccf7eec16eeaa618fea275bf4a241d9286bae735

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 33a0aa3e12bc5937afc3262d0da01bea5c7ce55c914a25dac97a97787e5e3d78
MD5 c9caecb3ee038a73f0e6fa50875fca43
BLAKE2b-256 1485430908f0f6a83b0136212cdb29e674e42880e7786fe914bdc985f6800240

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e3e7398b80c10c8921b0253185aa2af1a39ec181b52ad046d5ea545ceade0d24
MD5 9f9637d49de1131c30392ad922510532
BLAKE2b-256 d172b792659e4ff64391fddabf5d30444926d84fa913244a34903a9a4e9936be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5e13ff28a73f41d66c92cac9b67e3906add250218efef6771197e0f9deaa38e
MD5 2de6561e468971761e360c0796df52f4
BLAKE2b-256 4a275e356d15fa5b432878766766615392e15fb0d0a1647bb9b7b0f57a507dc9

See more details on using hashes here.

Provenance

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

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