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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.5.3-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.3.tar.gz.

File metadata

  • Download URL: diff_diff-3.5.3.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.3.tar.gz
Algorithm Hash digest
SHA256 be76c38f3b51377719aaeb614415ef6e9dd4fa5fbedc95be81f731e99db49372
MD5 4b8a98ccd51315fe3719334e4d497922
BLAKE2b-256 799d628971c60d37a642f37ad76ca4d62cb59f23a5a947ebca9631dd2be52509

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cc7fd8f0692005b48ab4cb81f1802545ac5c3f8a4d6c436fc746e396749b9443
MD5 2daf932e3f911a12b9506c0fb35e4d0c
BLAKE2b-256 7b8497e87f89eb87e0df26b2b26462d3b67e76b4bc07fe25ae239556ee65f30e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d9d940832e836abbaa1d838eff6fe55dbace31172591b7b35c9f782884a9d22
MD5 40b4aa494a483a755035f13a1d4f70fb
BLAKE2b-256 df8baa385ee0b565f6779ecf7ecb370facd612ceb4972eca41371775db99be29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 37d98f00e5f43b46832d52b8152e44ad5cf0313b3758bc70d3500f4c00dc9e3f
MD5 07bfa939566b9713c2a96de380e71b6b
BLAKE2b-256 bc90aff5caf050c657ea1dc145037556e18398d19191770c5ad1b995f6da8985

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42b4c94df3aa09d72a12b077e3e05f77cc80956af2f5f6c3e956bdd5a9ba3ce8
MD5 39a743c96afae6cf7cf800b80418f7ca
BLAKE2b-256 837af85b698d17bbab049fc12dea6f5225590911c9e3b6e52f1135bf8e36c6b7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4274595bb7c89bfe0641817aa2f086c9b4c4e61e199be01ddc4aac93d3713922
MD5 6ce06b42fd3efc6cd903a899e7f30622
BLAKE2b-256 d5635383973e21d4aec66d93106995af872c8df2c5c910a4658ec0f7ca1e92aa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad467382588bf36a843bb817154b23a1982cbda85421c34dca00eb231be43e82
MD5 74044f65e52b295dfd9015ac857306bd
BLAKE2b-256 122923f2d8d010a44cebc939d39d95fd1a7e0783ad49898e1f83dbe5c425a48d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 debdb4b07f3042520c2c0991978e11d78282a75701fbda3d4fbf0623e66ab949
MD5 dc34893981faa6d17ac9128cc5e49a35
BLAKE2b-256 029083a9130cd2b927161ef08dd1c301c7e8c6f29e8510228f44d9fd1a71129f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f4e96da5dde5e6df1cdbdcf6d921c31a520a17b253526d2c4b6f83937b635e6
MD5 e94588b715a6322acf4be7283e11169c
BLAKE2b-256 8fe262f8fe2639ccff8af65dc42ad6eb885d6aafc7259a41bd261828cc70d6e4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ebabe3a48128aec9e9b99371ac346722c9ae75b0fc760294e77fba6d6fa68cc2
MD5 3bb0a0c02e0c57d30ab8cb65420cefae
BLAKE2b-256 6375be400411232ecef8105a2a59f49b0f34aa8d19c24ff71938aca5cd36b89f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e687ae0ef8dba5bd3a4edf545c778b53fbc8b5cfc61c91f253283c7cfc52f083
MD5 eb7f02f43114311afae11273da6442ea
BLAKE2b-256 309ca6d1abef875dfc99d8053623f258637caae93606d2c568af1ab04de5acce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 984b0980b8f059e24f983f8f1503dde924802fa52f812e454c863c2a1a442211
MD5 202526ed77eb0152028f9f9110a9496d
BLAKE2b-256 9de33e7b9c96ebb5168c1517c6cfd5675dce7b8bfd5d22c8f73b1c74073d9bb9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 017263a83f66e72a3b330a12aa72d9378855d1e0a82a41e5785385c0e8a1eb91
MD5 280b4a9a4f23d455864b4d38ae5500b5
BLAKE2b-256 00181cca14f397ab7a89eee1c4f6f651e4529c5fa72da75b0877d1a06cb9d880

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b450ca7684d873f5df48e2e5ec02327c23c59e62e4b7e457f52b71bb8c007367
MD5 6475bbbe80f62fd35836eb217004f9e4
BLAKE2b-256 a50ef4caa8593927e782f38001a6759f39c30302dc662a0e37da8ad6fafd4656

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 442b4cc34baf2872243776b27a2e2c8dfa41dd92a579e59dd38858a77824163d
MD5 ea2d9f841b7f154f914e5689adbcd9c0
BLAKE2b-256 747f9d44814ce89f6f3e49aade48fc88a175b32b27e2a6ba7b57fad52380c9a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5e5215d61c57559cf4b78b9a96e169387622d537732bfad3d2341fa9d25e5e17
MD5 cad17b3fd9057304cf87b1095efedabf
BLAKE2b-256 1597c2c9ead446ef17c367d7344449fbfe7fe2237b0509b69818707e8b69bbb5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f7266733c7b3909a42f340e6c80d0516a80fd6290e0f4135efdd01770adcfd0
MD5 e5f4dc7834f0c3020f3da509e6cfdc9f
BLAKE2b-256 4ce968eede9081a7556181025ac4abc26bb34cfe673e12957ae9e49512d1ff22

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 74e80d0cc981ab1fc22a6c67c2a9af65df9781c01d590420a63b3992b10b1486
MD5 1233fea97e4c907352b48a49bca4e2bf
BLAKE2b-256 1963c7566309a5d9e459b4715c9c31ef464f94f935e3aef92bc686680531ebbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e40266266eee7262632b661bd0e541898e2ca769f5412d62a7358fffefc720b5
MD5 014c56d9373a4ba28f071a1046d88d98
BLAKE2b-256 7d06606cd71963b1e589e41077e753e281811fbecdaf19b27dae08568d6ce983

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2300e9db90bccaaf36714efb7932727b3496695472c345ad17ba1ea5ed5cf668
MD5 5f267b04831e56cf9deeec26ca88dbdd
BLAKE2b-256 ce885e27657571914f2883fae98e1055fda18762b52232f848a6386c60618e85

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6322750db99f3830e794e2c83fc255a4165e9167ec3ec331120acce56f7e2a76
MD5 5ae8e502e8209d0055618c6877b86a37
BLAKE2b-256 8aba2851dddaafeb0cc8b2b68e2d6deea0d1dbb989065852c434cb032cb5090c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8257eeeb0d1e50320f98643c8a3d21c2b130e07f359a4ba4ce49338c48749d8b
MD5 3034713f027dc18bc8d0984c589f826b
BLAKE2b-256 7ca31b898c941ab1117a375ce450cf06b9b4c93a69c37ad445c25f7d4e053e19

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 988fb8e6625fb9c260cf9eaa4f48ca2998ad13900bf0b66bc5d59e16758e3506
MD5 c2fbfe53947b971c7ea54c7bd91891e9
BLAKE2b-256 bf5116020af3312274a6f72c315f663910ddbfa5a3714c0c941e4f0018b9aba2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 988c38d23be2f6ec12a5182692f124417376bbaf97448d7e9da8a9fda418db19
MD5 63e9cceb8ff6d87e4c2846459b21bb4c
BLAKE2b-256 f64e8f04a8001348f65c882833b46510f988e4a1bdc2ccf710b90f28a51c608c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d75ed02cd57fe76f9914559479352785cb9a6786c582b064a44b54e85d9ff70
MD5 cabf0bdc3d681c0039f91aad118a603a
BLAKE2b-256 ca6c29f79b2df14cce66ac9742246a7b73ba9dbfc7d3eaf1ee241eb4a57fb321

See more details on using hashes here.

Provenance

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