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 Documentation 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.1.tar.gz (998.8 kB 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.1-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.3.1-cp314-cp314-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

diff_diff-3.3.1-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

diff_diff-3.3.1-cp313-cp313-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

diff_diff-3.3.1-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

diff_diff-3.3.1-cp312-cp312-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

diff_diff-3.3.1-cp311-cp311-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11Windows x86-64

diff_diff-3.3.1-cp311-cp311-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

diff_diff-3.3.1-cp310-cp310-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.10Windows x86-64

diff_diff-3.3.1-cp310-cp310-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

diff_diff-3.3.1-cp39-cp39-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.9Windows x86-64

diff_diff-3.3.1-cp39-cp39-manylinux_2_28_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

diff_diff-3.3.1-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.1.tar.gz.

File metadata

  • Download URL: diff_diff-3.3.1.tar.gz
  • Upload date:
  • Size: 998.8 kB
  • 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.1.tar.gz
Algorithm Hash digest
SHA256 c9e5621e8bac567177181c0a703d1c4361cba420a90fd76d487c7908adf04bd4
MD5 0fc5401be87354d1c3c23d2a1c1ae0ba
BLAKE2b-256 684d296d16acc5f08922cebc94b57e96b48e90655959ac566632d58ff25fb145

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 33a5bbc2ac9adbe18232bc9e2adda237075bb50f2d2185a55f43511550aa8b3c
MD5 7b6b0c8ca619fec8af87f06979e6317b
BLAKE2b-256 b2dfaf809f2b9e09369f4a210e1845c0be61ef3aaa643bc96fb9fd5a32934b4b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f53adba1dc3d49fe89f7ff6890c2a67754043bb4418943c9db8fd307d293400a
MD5 ed6bd3ad30927363d85f2d0fb2c448b2
BLAKE2b-256 e855f5bd21a79792bc35cad9c1a86c881eaf2ab86b84186d0ebb05b98b2324d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 385ec8e9114f926e087446921f108a977cfc7a494ae19373b8e1f6e93ece36df
MD5 eb7c9074d0d428d0b956763dcdb345e6
BLAKE2b-256 5604859ae4ab32a82a63405893f6daf48922476bc038f243eef425694fa35308

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79ba22088099f77728fed2b74c21ae426be28239ffd07b2437d93aeab6714fd1
MD5 6af77acea3655c23003adf01c8c6d278
BLAKE2b-256 d8206238cf914c2b3e31ce39612079f904a47f58d9d7ff162b8d753d1b00e9be

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 33a84364c450bd5ee77a6fa4ab31f6d30bfbfc066dc77b586788b9c612012ee8
MD5 953448b04eda002dfeea760566dca45e
BLAKE2b-256 9cfd719442bf89fb7ae9f997f78217345f5532d4b494356be883b7e4022b399a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2433810bfa0bad2d5088710edcfb195e563d3a28486515d179999a3210d35ede
MD5 aa5209060efccdf67e9bb70e53002c2c
BLAKE2b-256 d16c2756aaeeb0c51ea636b33af9d47be0f1188a93a12d65bf7a7005854906e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 275a146414dd9b443b998d13ec06707306d28f850218d1846a946b02097be2e8
MD5 eac0f31ee3e040b4e6595113ab691a81
BLAKE2b-256 aed68920969ad4e45e3e81e7fd36eeda9ceb15f70f8a20fffa72c6745f5227b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac4ec49a07f1ba89944fd762db5b1eeaa42fc9dca22441bb5fd310df94f4cc38
MD5 25a3a11f9c1ddc5a7605591ac8dca95c
BLAKE2b-256 bcebca7f7059e9310125f2458e6c20ddb2c4498e911fc39876156d66fae374e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a5aaf173ba9ce167472e77fc201f69f72c5f3c40c63e980c7329b593e9e3be7b
MD5 7e4d962a2eaef8010a6bed62cffc9b44
BLAKE2b-256 0321dabc6667da30ed65219266982e87bcfecefbe69ee8d7a5927375d9ae89a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 29662765b553728c185d3c460976a1db6b765dc0b440c652af265272aea249e8
MD5 df6e9d13b5ebc61db14c95a5d5f510fa
BLAKE2b-256 1f655180092d202db953f9dead3d22b5f4fb6b726e671de92147ae8d9c4d4bf5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f16da663785c446cb6fd40c469e602911f66527f6a09398b76a50b0e74af0c97
MD5 cdff0d634ab20abe7deaed712e4cae92
BLAKE2b-256 afe886985993a86c08d5a5d5a63cdc57e046f26300e6ea897285bac2ffaa01d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aad9fa941c1a9fc194d67addb6ce8dc1b53835c2623bd576b8d216a20703a9f3
MD5 92c40f1bc00f5ce68876dcb7b89b6e73
BLAKE2b-256 0db32d05dcb652602c344617037b1216957f775705031ad0fcd5cbde8526d799

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b4ffdf4f744f848b2c6e3b8d334d483ab3f70de39cb4d92c158e203f4abeab34
MD5 7a59fbff131ee0760d06642fd72ca04d
BLAKE2b-256 f97dcf9b68454fffa78e9610167dddba2e13e015dcf16db9a6a376df7c856c74

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d679694ca783d808fa6d2003d07a338d1a96a0f5a984d055eca7a74af1d9d96c
MD5 776bc7f6554782576143fd4d89311fca
BLAKE2b-256 ddb44482b3eed6b33101c5cb85622d991f2bc6a0f9a11ade9cbe8ddbd0f5426f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ababc33c459f547b99a579176e8eee41b533e54ae2ba522149e2b8b3ad205aff
MD5 c851053b43c767408db9db1e30506144
BLAKE2b-256 4f0e3f12e231ebe8ddb1166932ce34800f9871154335c40b957d979ce4d1e279

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee15e8fc51abaa8c33fb6c8182a3a433edc52c736bd333271a5caaa133ab3c54
MD5 e6605bc8dbd9cf71c43172e098b6d790
BLAKE2b-256 1f0f0b60a7f1115ff3b46ebb350f1afe0123c8ac98bd199fd7eb77c3c6741a72

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cd532d68eac7341144e5068f44e5dbd510edd5726d557c4dbb611775f1aa16e8
MD5 278d05985d8db34e98ea94678a1401df
BLAKE2b-256 4306edf36393082d651c26f5d7f0fddd7dce7cb51e731405f87aee19d09802f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07bc2a81fccd26875db18e559e145f946a426df9b00747ad5bcb40fef421b75f
MD5 3ecaf56e4554d766ad4838d5be7019a5
BLAKE2b-256 ed1d3452ba4cb9fed482d153cbebb8041f9582bae22fd5a22152dd22fb90875a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1ed5e9ee1be930cb1b846662d845209f047295db1831c517678301c28406b8f1
MD5 ca0309af4607831810eae15c8c01ae1f
BLAKE2b-256 9aca1fa7fbba3af5458b8f35aa7975500ac00bd9e187e057dfc42c5a85731710

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4e9b068486009f199efd2dbab0b4e26d00f2829cdea73d27cef77389d2f0ffd
MD5 9d5ab3ecfce9655073f2ecab85bff91a
BLAKE2b-256 cbddffd16762e74838007e6e5603af017022363d92193f940eb872a9894af53b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.3.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 143d95142d046e4d50e7591e3ffea1e79de5efe7153ba9157b772b4cb5cce52f
MD5 0ac0bab7cd128454988eb9f4dfa97987
BLAKE2b-256 b6d0e5dd8ceb623349e11160fe01645b413e569d280692bad1afba24d03b55b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 201f5985ac8d9cb99e65f3e67a4a7f8a4a301fa8e8c9ab75770b377511bc27a9
MD5 40f3f5e4232f22abb27cf91e9dcbc984
BLAKE2b-256 298bcba5961da7d9bc3109de0c2b01fb50ec1e5a2484429ed675f18aacb702db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3a3cfd2032cebabdd88a7740f2a1e3f20c1b91251650eb8fc8a153569faf2fc6
MD5 d24aa3d5f44bf44ef2edc855b01b812c
BLAKE2b-256 6f5c6d18030bad294deef04e8547e707a5b5eb1961510d46ea4ab71245a65dbb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.3.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e328c9e4a053eb4aa06ac991c2c22a27977fffc52e6329bf66866716342b0a4b
MD5 dccfd8aeede9292ad16f2a0f344df9df
BLAKE2b-256 d3c666310c53148d376dd5ce835d43e151681a22a7a1170bff5ee1d62429b130

See more details on using hashes here.

Provenance

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