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/custom V; in-space placebo permutation inference via in_space_placebo())
  • 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
  • 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.0.tar.gz (1.3 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.0-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.5.0-cp314-cp314-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp314-cp314-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.5.0-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.5.0-cp313-cp313-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp313-cp313-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.5.0-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp312-cp312-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.5.0-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.5.0-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.5.0-cp39-cp39-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.5.0-cp39-cp39-manylinux_2_28_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

diff_diff-3.5.0-cp39-cp39-manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.5.0-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.0.tar.gz.

File metadata

  • Download URL: diff_diff-3.5.0.tar.gz
  • Upload date:
  • Size: 1.3 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.0.tar.gz
Algorithm Hash digest
SHA256 7befb5a26028ef4dace9fddc1de30f11f80b73ca82f96d5fc4e4ffc93fae7cf1
MD5 f63a2da2f8540f604337923eb2de338f
BLAKE2b-256 fcaf99a0dd4779fec71417f2ad4c5c2cd2b2103fd79a239b193311fd07f8cbec

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2e88aed777eaf26403ebdcfc6a1029b998ee030398c4d7fced02c0818b61bcd5
MD5 41f083aafcc9982fc88de4f94bfc7645
BLAKE2b-256 1a6cd6c1844cab1449d69a7cf8198a35ef36049df0bc731f92f1556b286c14ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a619295693178b15e6efa6b078a19570685e5ab6e8d62749753464c06974428
MD5 5637e36896c7374cbc7d382bcceda5bb
BLAKE2b-256 969c0e72f57465e11e7400bdfe12ce43edd43504b67f563e44bc22095a6da8f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a87f425de69fa6546006a0108440923bfd84b6208b8132029423d5f3bf9b7492
MD5 a4fc6074704c27fc25ab719879d06f07
BLAKE2b-256 14f630e962a0dc645228863c3d22b5305a2ff343bf9ee8c5b5724d80384d4fa5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02f05558731413915d4e4fb121f583960aa1182c415bbe01699170535cdeaf76
MD5 3554a6124ca66ca7edced54b55e2cadf
BLAKE2b-256 95759600746ac0c497c06ef80564892f5523f167355a7017dbc9feb5a2384b5b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 249c6d101cfbf0f2293ddaaf2bc2b3586bd039149cf1fa7c03c9b4c9f9854935
MD5 c070de3a2fb3846466b92a8ff2dfbd21
BLAKE2b-256 46cf61bed23cec0047e19caf888baae6cc298a74bc9c1b233809c6d3ec1881f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c8a3aca952938c58544fdc10f54624a45463baeb95479678fcaabce7a8910c1f
MD5 020e5fa48a1c7bfbfb0c3906ab60fbbb
BLAKE2b-256 9992fcc6e8332875360af704a48a05d28c9115b893cd9d60b48c39220f158fee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6f0edc934646d70eefbf9f924251f11c2086f84b6167d564fd826550dc3c356d
MD5 79ab0eb40f2de4189531b80ef95c00dd
BLAKE2b-256 cf196a1fafd4e69e3cf32c79b39c55093be7f70c31d0f50a34a5052e2628ef77

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55df48fa3041e7233379166a6a62c7d690390b3f53a8413895f73f389eb987c1
MD5 2a7137f2ae185f214ee38de6fb07d402
BLAKE2b-256 8a7f0ae415d10ab1b76392cbf10fbbaa1d789bb6bbc2824a484ddc40368f3e77

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3ee3fb4da6b30f04f6f5c6682483f7173c9333608f2f86dd105f11f96c395c71
MD5 e01d339742f9daed7198719d81d76065
BLAKE2b-256 8610bdac52ca29d01e5ecbdcbd623409712a9b027142a7a1b5286a651829f158

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03c52bfa49c06371753a21933280736e0b13f798694bde27755ad14bccaec0e2
MD5 91b3350c5446d68e3ad370cdf553b3b5
BLAKE2b-256 f66272a3b4e453e6f8f06f57a3ebf7a0c34b01e2e71cb21af07d270f2f511971

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2fe19a7929cebbc78bdcc994160dbf4df02f4566e4b47616a0c6f3e27b3ca07a
MD5 fe0c86f7a20553526d0247fd6f440f6d
BLAKE2b-256 61e9eec94a39ef651b9cd32e74c660c3093066d7d0572f2f808e7564cb846878

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee775b5680394c14def8bdce24cf6af26fccee993c9cae6cec30730fae382fef
MD5 b1b205b7e02037a6bc4223a75d70454a
BLAKE2b-256 21407dc07f340ab2dfafa72548f40ddd42a85179150c3dc5e19e5af79a8a3643

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 227de6fb1a24bd04b415a36d13d80dc80b2223a4d1d30aaf02a3304fe3d3d479
MD5 f37ea7180cefc97b1185f90474c3809e
BLAKE2b-256 acf82314197f643fbefd29fe6455e8defaa206e3b50b638b5ac99b49e7e5abfe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bd7cec4bcc572efd551ed99904b4748f04d6959a060acc8ef1b3d13b5720fb3
MD5 aa89d1cb59e0a6c598e54878127edb29
BLAKE2b-256 0a349da55e22fee05b91b7eef7caacda5f5c7d1294054d09a052eeae5bb2630d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d97d288b5157586ed940609550a77ca6338d9db6514f3db508ff43c31cbeec7
MD5 c4fb1265a0c03fefe557a7da58cc166e
BLAKE2b-256 9c67d4d3ff15f0a1a6edbbff89d64c2dfb9f0ce0f6149a9f814fd161e1cb5a14

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c2c5125da0c6c74ef5a923b07af977d8da4c1c9a06a6d404aa756a3b59a5e73
MD5 dc02fab540b97cf8d68de05412c1ccc7
BLAKE2b-256 1d06451c61998eff0af8cb2018f6f9b04fdc72175eee374ca0c595c489297039

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d6d38c80fe0a0a0a3e75a228e3734bbac09bbb6204efe5044f1af52fbb781713
MD5 8d5aa2c4a03438b1fde8ea8470f1fef9
BLAKE2b-256 588d563150531910380695b6d7aa32b712d10d7b5c58a3abac5687e642d6fca4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 500691f925ebc2a25d17dc4633b2f7513f20782a0a002aa6de84c44ce6c05685
MD5 80a77598eed83b78eb551f5c61e3499c
BLAKE2b-256 ec59a668e24711c8315396e8a903dedb9f4cf0e56ad29005bfde640b8c3d82af

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5acaed89d49e6a03b482e55907d7efb81fd22950b5f527e39b9fd91dd1bacb06
MD5 b3198cb1831f1f34b70465a6e96fecb7
BLAKE2b-256 fd4fbc3c73a22d5b29a6e49d7449f351e5d29a6a43295e442216209211902894

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 faa28e8561b28060e28541852fe23a5c7189bf53c5f8a66b4a396efa0b695860
MD5 4c832860db08586339e8fe8bd434fb1d
BLAKE2b-256 fe4a7e91dcbd0f36dd6fd29390e1c2776560a25d8b0bdcfac5cc25b3295bc6d8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.2 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5d70853dcc94336a0e7667943c620cc0c9f6b350786406d4fe50d8b68ab0a798
MD5 1db21b1f1276d3e0242917b0ae8ffe38
BLAKE2b-256 6752a0c2a9a40b3dc6621c6d4175792446e333d6bb171fb2c3c3fd1a1bbdc3b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1fa6e4c0b05d0d218ef4c98ddd71524f94bbbdd508ea86821de8566479a4b2e5
MD5 60db3d2b80e2e8d85185a4cdde7955e6
BLAKE2b-256 5312dc0158a6a8ffa308d1e15f77f1eb6f2657930dcd5cb59baaf9f36dc130e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60f9b26be1fc1c2a1d1c375eeffc07eba1f0712cfed797351469043a3bc0d245
MD5 b71f409e1a6b1538ece89ed8a6ec6f15
BLAKE2b-256 a62386d294391aa2fbd3f2f3b56d74c74f7f24421e2bfad99cc8b197d956c140

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 196672faabd3c04ca9705d98d9991a71a469b5e2bac31fb6d934f6bef27471e3
MD5 a5c0240fc2c639f9833a383980cfffae
BLAKE2b-256 4809007bf60854499e3bd89de6d83cb2bd5cb16aafe960e029b34ee29fa039cb

See more details on using hashes here.

Provenance

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