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
  • SyntheticDiD - Synthetic DiD combining standard DiD and synthetic control for few treated units
  • 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
  • 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

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.3.2.tar.gz (1.0 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.3.2-cp314-cp314-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.3.2-cp314-cp314-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp314-cp314-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp314-cp314-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.3.2-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.3.2-cp313-cp313-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp313-cp313-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.3.2-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.3.2-cp312-cp312-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp312-cp312-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.3.2-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.3.2-cp311-cp311-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp311-cp311-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.3.2-cp310-cp310-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.3.2-cp310-cp310-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp310-cp310-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.3.2-cp39-cp39-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.3.2-cp39-cp39-manylinux_2_28_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.3.2-cp39-cp39-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.3.2-cp39-cp39-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: diff_diff-3.3.2.tar.gz
  • Upload date:
  • Size: 1.0 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.3.2.tar.gz
Algorithm Hash digest
SHA256 178699933e3d5f710877f15f17625bfe1a40830e42a91455d7c31500a5dc7119
MD5 cfdcfa8484ad5206b41d8caa53b218c9
BLAKE2b-256 7972f8889b4e0f80228b0d22d0d9eb726f40f7f7d5720f86b508bbc4912b24ca

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 39a11f5f07fe4c568c015b7b8f24565708721aeb222764c7ea99ac7232020f8e
MD5 a77217956671765729ae4daba793da37
BLAKE2b-256 4e1154095559f59add4052396e5fdb959c996c40ad875cc798d9bd7ba7dd3a28

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5847e2046e00df95c46392c26a87d5fc91cd4caa4a71afed0a2cbc61e7ea135c
MD5 92908621a97984a47b550b137b14cc92
BLAKE2b-256 b920b899fced180bf1f0f436c46b6e51d29ab1db3f3fc708615506d3198ce3a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e60d73d6e9f7187d3769e62bc646c0a29a58c3dbc9c2df5d84cdfbc7365bc0f4
MD5 75e31a0cdb794e0466cfd732492e80e2
BLAKE2b-256 e6a5af56272516841bb60270fe312933b39b177b902166520379e7f9e0fd823d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e34a948a39fd74c35a81d1ad42bd00412449848c97d1974cc541e11c9880e2d
MD5 b5da8013a66f8c17ebcaf59dba6771fd
BLAKE2b-256 8e1cab71eee7da1e2c899697da6b89b75defd1b19496723ab646bcd3bb45512e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1d484085fb6418d90423bba0a634696f68ab650cbf963b5749e0200d52f367b4
MD5 635ac534e2c3f63b7fd8fe37ce09d5d7
BLAKE2b-256 40f795310cec939f0b9d11afedc9d42088778cf043cd1eb7a8ecaac9fae1ed2f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc15e661f62383608611be44a12042c77b821a02de79ff42bedf1e183452fe26
MD5 c6bfc17fac28aa10b27df39e428ca6e4
BLAKE2b-256 0a4e487e967baa915d3c2c7e170a21b6ef0bc84f3c529911d6856e66ae559c7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1e01fe3cead7cba7038702b23b17d11d23b3a72f462c2528fa6fa8fc4a79d35d
MD5 8d6cc1348a6d7c2ddceb3d5c87df159b
BLAKE2b-256 c19e022b3a0f163bba93efad978578ffc71d5f19faf7290a21672338d809e253

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d30f3b358d45a09ae13284b20b483c13704f8a8ef29fb4c43f3fe3b756c30fe9
MD5 c5b69ff3ccb7330f64be3e61799bd827
BLAKE2b-256 0c0e3a04560a96979cd75b61d2b855206bed2de49d77350ac2b119e1b5249271

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 16925d6cac67d323e4a0e842e760585810c0d5160f91b6b3583da81ee6edc5a9
MD5 fa517d18431df4322547d9318f78a337
BLAKE2b-256 46cad78b653855782933e7f798b41f73cbd08ce853f975eb6417cfef93ee90fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 811fc7958395495e0fb34821b3088784467a73c0d79299e87eae41da1398f609
MD5 2e11cab145fe1bdc71f36ce9d3942246
BLAKE2b-256 3eaab683ec858078c717e62a821fc07264f4dec9854f7e0366156be07243ba43

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a1627fd7f7597156703779ac21ca3618cf86d31a9fb2b9c2157b65fbe3f35f49
MD5 fae5bdb9013a594d5a6e7befa7fed608
BLAKE2b-256 8d30111974f86cee70473775699f087a9ff6aa463ecdc16d7e2aaccfcad549a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d704c1bdc248fcf83aa367af920343be1a744465e37f9eb3b5c489e21d82d251
MD5 81ce09cd0909ba5eeee96f40a55fdc22
BLAKE2b-256 08ae0aca4b21dce33f7b417837477eddfb4f1643b431767fd10acc2bfa8a258c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8aaf57552c670030e5d97a794f004ecaafcb2ef0f854967d1f9c2419cf0fca56
MD5 534558d15ef62894554dbd12f6cdd1e9
BLAKE2b-256 832d339a52e6bb10f2c17f3267b9f0a5d189100a799215d9cc0025a6961e3941

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1b444a8941e4354186b0b6651f056b2df2050a7f63b74cd98e7607c291a2011b
MD5 c68aabd1c9eb11fb645e6a937f715e12
BLAKE2b-256 9e35ecf8e2439abd1a1a7f337c0cda480af56fcce99ed3fb04ed442f6c48dbe9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b090756f7957aa39845c1a2d4bf2b0e9247d4e4d705b9f01874b142149e81032
MD5 67c92be3034a6d576f7db83f9921e00e
BLAKE2b-256 10031b5674e197b2e3a6da305623edae3821e2963db96dd7460a41f516af4cbd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 549c098b0902de711f671e4042862f6241dcff4babfa610d05229bbcc824a4da
MD5 219023b6fc572d421a997a04664b9c45
BLAKE2b-256 325cb594b29b1e6470e43418479b2f32db33b22559835ab4f0afd28ae267fd17

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 983d1f8f9ba5e61070628f5b6a131b5ee6879f03b5b291261dc5ac1ac79936e4
MD5 80c26f2556787dc8658f31c08697017f
BLAKE2b-256 a3cf45a98a1d4707d7415d299198b325fc37a4d7452fa8f06950e96e4c15fa55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f23dd353270023a32b0aae8214dc3b6f2e9d3c73b91665b79615b37f7e6a5280
MD5 8142e1bb961fb802eb4efba86e2f6d4b
BLAKE2b-256 d677dff739a18cb085a503b6b58e30c5c8c2b7dbd13488965420d6bf5c2fb19a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2512d22733ca01b2348b7072be706a08425a8cd0c7ed38c14da72accc445d36a
MD5 b0fe1c3b292e7e1a40da1ed22f71eea0
BLAKE2b-256 9db0f273a6422cbfdeeaafd3cea5793386751583197dce783e27c46b7f531385

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24de4e2c99337a6fd838d8ebbd89799503c87e6478e6c522e89e91842d73d88f
MD5 4126b5e238c782a95e9b55b55b2489e3
BLAKE2b-256 5e5c7654101c3e2c63743a9a7a0bf00c5cb3a5b3876b0abb811bc899c47feb06

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.0 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.3.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2f9ff2d570d80843a1b21233d03df6f54a0338cb36f0a99757110c3138043775
MD5 fbe72b3a28fe6fab9d682fd420f7cc83
BLAKE2b-256 b23f6c94c63688034e96f4ab1ce15d7297af4b42fe6b37d511757d921fb46b07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73b9c18fede72e90eb2956988ace7867c46450f37b68420df01f83289ecbfefd
MD5 af6674e5abf815fd68b28d940c3979a3
BLAKE2b-256 7f8f8bf8f7839925d3ad6e36bf24935e7d2663bf7b2c7242c853331a4ca1824d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0b106142bd51100f5abe88a5475c8a3f7f9fea3b9cb2937097183b2b66765d9a
MD5 83ffcdaa87166437fb1a98641df1261c
BLAKE2b-256 d6e760aa3f80a359f8596ba9407fe7d1a43b94abc3f1cf93f8b36edba941fc52

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 badffcfcb61178619493b2652fde26826edb23cd0a4fd319fd4afafb627d4044
MD5 d162cd83172eca4512c912987bb15db4
BLAKE2b-256 b3b3087d44c8ecc54808bd359481f66757b00c812380cb346707c0a74bbdfaf9

See more details on using hashes here.

Provenance

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