Skip to main content

Difference-in-Differences causal inference with sklearn-like API. Callaway-Sant'Anna, Synthetic DiD, Honest DiD, event studies, parallel trends.

Project description

diff-diff

diff-diff: Difference-in-Differences causal inference in Python - sklearn-like API with Callaway-Sant'Anna, Synthetic DiD, Honest DiD, and Event Studies

PyPI version Python versions License: MIT Downloads DOI

A Python library for Difference-in-Differences (DiD) causal inference - sklearn-like estimators with statsmodels-style outputs, built for econometricians, marketing analysts, and data scientists running campaign-lift, policy, and staggered-rollout analyses.

Installation

pip install diff-diff

For development:

git clone https://github.com/igerber/diff-diff.git
cd diff-diff
pip install -e ".[dev]"

Quick Start

import pandas as pd
from diff_diff import DifferenceInDifferences  # or: DiD

data = pd.DataFrame({
    'outcome': [10, 11, 15, 18, 9, 10, 12, 13],
    'treated': [1, 1, 1, 1, 0, 0, 0, 0],
    'post': [0, 0, 1, 1, 0, 0, 1, 1],
})

did = DifferenceInDifferences()
results = did.fit(data, outcome='outcome', treatment='treated', time='post')
print(results)              # DiDResults(ATT=3.0000, SE=1.7321, p=0.1583)
results.print_summary()     # full statsmodels-style table

Documentation

For AI Agents

If you are an AI agent or LLM using this library, call diff_diff.get_llm_guide() for a concise API reference with an 8-step practitioner workflow (based on Baker et al. 2025). The workflow ensures rigorous DiD analysis - testing assumptions, running sensitivity analysis, and checking robustness, not just calling fit().

from diff_diff import get_llm_guide

get_llm_guide()                 # concise API reference
get_llm_guide("practitioner")   # 8-step workflow (Baker et al. 2025)
get_llm_guide("full")           # comprehensive documentation
get_llm_guide("autonomous")     # autonomous-agent variant

The guides are bundled in the wheel - accessible from a pip install with no network access. After estimation, call practitioner_next_steps(results) for context-aware guidance on remaining diagnostic steps.

For Data Scientists

Measuring campaign lift? Evaluating a product launch? Rolling out a policy in waves? diff-diff handles the causal inference so you can focus on the business question.

  • Which method fits my problem? - start from your business scenario (campaign in some markets, staggered rollout, survey data) and find the right estimator
  • Getting started for practitioners - end-to-end walkthrough from marketing campaign to causal estimate to stakeholder-ready result
  • Brand awareness survey tutorial - full example with complex survey design, brand funnel analysis, and staggered rollouts
  • Have BRFSS/ACS/CPS individual records? Use aggregate_survey() to roll respondent-level microdata into a geographic-period panel with inverse-variance precision weights for second-stage DiD

BusinessReport and DiagnosticReport are experimental preview classes that produce plain-English output and a structured to_dict() schema from any fitted result - wording and schema will evolve. See docs/methodology/REPORTING.md for usage and stability notes.

Practitioner Workflow (Baker et al. 2025)

For rigorous DiD analysis, follow these 8 steps. Skipping diagnostic steps produces unreliable results.

  1. Define target parameter - ATT, group-time ATT(g,t), or event-study ATT_es(e). State whether weighted or unweighted.
  2. State identification assumptions - which parallel trends variant (unconditional, conditional, PT-GT-Nev, PT-GT-NYT), no-anticipation, overlap.
  3. Test parallel trends - simple 2x2: check_parallel_trends(), equivalence_test_trends(); staggered: inspect CS event-study pre-period coefficients (generic PT tests are invalid for staggered designs). Insignificant pre-trends do NOT prove PT holds.
  4. Choose estimator - staggered adoption -> CS/SA/BJS (NOT plain TWFE); few treated units -> SDiD; factor confounding -> TROP; simple 2x2 -> DiD. Run BaconDecomposition to diagnose TWFE bias.
  5. Estimate - estimator.fit(data, ...). Always print the cluster count first and choose inference method based on the result (cluster-robust if >= 50 clusters, wild bootstrap if fewer).
  6. Sensitivity analysis - compute_honest_did(results) for bounds under PT violations (MultiPeriodDiD, CS, or dCDH), run_all_placebo_tests() for 2x2 falsification, specification comparisons for staggered designs.
  7. Heterogeneity - CS: aggregate='group'/'event_study'; SA: results.event_study_effects / to_dataframe(level='cohort'); subgroup re-estimation.
  8. Robustness - compare 2-3 estimators (CS vs SA vs BJS), report with and without covariates (shows whether conditioning drives identification), present pre-trends and sensitivity bounds.

Full guide: diff_diff.get_llm_guide("practitioner").

Estimators

  • DifferenceInDifferences - basic 2x2 DiD with robust/cluster-robust SEs, wild bootstrap, formula interface, and fixed effects
  • TwoWayFixedEffects - panel data DiD with unit and time fixed effects via within-transformation or dummies
  • MultiPeriodDiD - event study design with period-specific treatment effects for dynamic analysis
  • CallawaySantAnna - Callaway & Sant'Anna (2021) group-time ATT estimator for staggered adoption
  • ChaisemartinDHaultfoeuille - de Chaisemartin & D'Haultfœuille (2020/2022) for reversible (non-absorbing) treatments with multi-horizon event study, normalized effects, cost-benefit delta, sup-t bands, and dynamic placebos. The only library option for treatments that switch on AND off. Alias DCDH.
  • SunAbraham - Sun & Abraham (2021) interaction-weighted estimator for heterogeneity-robust event studies
  • ImputationDiD - Borusyak, Jaravel & Spiess (2024) imputation estimator, most efficient under homogeneous effects
  • TwoStageDiD - Gardner (2022) two-stage estimator with GMM sandwich variance
  • SpilloverDiD - Butts (2021) ring-indicator spillover-aware DiD identifying direct effect on treated + per-ring spillover on near-control units; handles non-staggered and staggered timing; supports survey-design variance under survey_design= for HC1 / CR1 (Wave E.1 Binder TSL) and Conley (Wave E.2 panel-aware stratified-Conley sandwich on per-period PSU totals; extended in Wave E.2 follow-up to conley_lag_cutoff > 0 via panel-block composition with within-PSU serial Bartlett HAC — lag>0 requires an effective PSU via explicit survey_design.psu or injected cluster=<col>); SurveyDesign.subpopulation() preserves full-design n_psu / df_survey via zero-padded scores (Wave E.3, R svyrecvar(subset()) form)
  • SyntheticDiD - Synthetic DiD combining standard DiD and synthetic control for few treated units
  • SyntheticControl - Abadie, Diamond & Hainmueller (2010) classic synthetic control for a single treated unit (donor-weight counterfactual, nested/cv/inverse-variance/custom V; in-space placebo permutation inference via in_space_placebo(), plus ADH-2015 leave_one_out() + in_time_placebo() robustness)
  • 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.1.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.1-cp314-cp314-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14Windows x86-64

diff_diff-3.5.1-cp314-cp314-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

diff_diff-3.5.1-cp313-cp313-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

diff_diff-3.5.1-cp312-cp312-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

diff_diff-3.5.1-cp311-cp311-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

diff_diff-3.5.1-cp310-cp310-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

diff_diff-3.5.1-cp39-cp39-manylinux_2_28_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

File metadata

  • Download URL: diff_diff-3.5.1.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.1.tar.gz
Algorithm Hash digest
SHA256 d5cbcbb15f87d9ea8af6dc62b8cbf5bba84b7abac3e3c726ce491e1ccbc3333f
MD5 03ac75bfb4e813ed4c5639e4e80033d7
BLAKE2b-256 148126144e03b6e2bc4783c1236b74d04d1bf644b8ac187d7ebf7d6c24db4da4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 410cdf4216258074a59b4882b0d98d83095eeef58e905e880ef126ba6c02d4cf
MD5 5f823fe3844dee900a4b2efb81af7cdb
BLAKE2b-256 96f397172363223c8ef46b2dc79e62f1eff7112054e86755230ffa73f953ad6c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ec462d6d1bca4b7a803b06750f3b859a68c2b3cd6556c235a7809b617c8a127
MD5 b758053f7113bc8b60f9a2d897288afb
BLAKE2b-256 cb1bf85539434f3f29424a79d115840a13ad31ebff2458380f3131075bc3460e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 20e0f25472fc50ebac0f21dd4f168450f1c26bb6a10c56530e1371cc9a292d64
MD5 936dba6e3a3cfb43c7a83e472c0a9e51
BLAKE2b-256 4198fc284fd898418b2f9cf01046bb655a029b4d26b9a08a795e492988b13273

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ead825c7b12492cd512e886281afa32d2025e7761e643afaf0cbceb29c684c8
MD5 5beed523d32eb45f66790a4ff6c18bda
BLAKE2b-256 019deb596409ddaaacfd47a68937b48b2bccaaea15e560941b544c2effb08848

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 300e28ebd31525354507cd0ef80c03cf21e56e4ee74b9d259c4eedc1b45cb1fb
MD5 a5aa3b2a6ebfdf24fb2f9df7c4bbc158
BLAKE2b-256 dddbe3a6a9e9e0d7e27045e5964fefb9099600c966e8fa8b41519aae359eedbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6f3cd0bff9f6ba742746f978534f6daf2e02fc3d3188c3b38dd2be48e41b06a
MD5 2a0a44cedc3733be9f24a96fb99b587f
BLAKE2b-256 8ae0be994c929f9be8e7849aae0ad200b47aee7223853885d26f41b96df917da

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a070deb24e05f129077860aef38ac0c1931d1b060180bcd55171f7d50ba56339
MD5 534111d11715b8013c59148633dd68ac
BLAKE2b-256 993c50162616a1d7a4d06daaf7fad6ca7dee1084c9ca03d700439d8d704c0e25

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a724859c794d1cc7656d133835ea8ec89ec855a653a8d41ca541777167f15618
MD5 ca5f57c94f61d121f888d5147807b9ca
BLAKE2b-256 84626c222d1350f6030255eba77fa994c64154938ba69d93671c289755300a93

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6bf3dc0a7045c2957ab7e63554017c1608340893c6ac9dafaa23ee0ac4d32119
MD5 7636b8aa771c455b1707f090b624d2f7
BLAKE2b-256 3a532aa176a231bffb2119d11adf71aae2141c93c5e9eff8b07b4539054413e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d72b79d2f9887eb5678103cfbf54a70078a0aa19bfd114520d263de649e9eac
MD5 fd92c5b8633bc7e8cee73ebca463181a
BLAKE2b-256 224bf7f64559c1015bae3863e91f1646aa00bec65524edba0f8796ffad698d08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4dd895ecbb720aef029c505ba9d2a5851f01a9e842d5a37e1fd29f0c80e23c4
MD5 ad8dea429ff48e4226da3e70d7dfc3ff
BLAKE2b-256 7920bc7341d894cb7fffb5bcb62985fd33929d3759d6763b77f20c6c3fdaf212

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7dfb1ab3bb4e254a363f28799a62adcb0e03ec19e8d804a9fc3faf6aa59575c4
MD5 0d58c1d168633b13ae3ff6bd66433cb5
BLAKE2b-256 be2ced7f82f6458b6553c3a065d426b55d00e920acb008f723aa9f6046f20801

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 72edd366f14cfacc6eb6ede1e56041b46a45306fdfe8c737eda0e4878f7e3e0a
MD5 980976eaaec421c162536aa0a710c634
BLAKE2b-256 740b162919880e3edcc97bbfa2419300f88f3b7262b4da69cf8b353be1af9404

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a01de242c91e05880a11faa57cff9a7e0ef385914d22c94f803f15ce4796dad
MD5 675c2f9e18c0389511887c7d73e2df37
BLAKE2b-256 64c6b67e3c660b7f4702e52b603264d84a0224d9c77276b243c1407b3eb07c62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c59339bcb497be41dd55e366c661ddd3c9cdf029bdb0dbf72dd33284d1c31b32
MD5 03e2511cc373f35211d58aa711ca4c0c
BLAKE2b-256 5a7bf2660218d68911abcbb54a52065ca061d6d7bd26f00d81506995f9621f75

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8ab8a1bd67518c8150bc421d34304d2e589dedb25db1cdf6c9598bd41fd0e11
MD5 460ac8e1f175f3aede0f4a4cb1ee634f
BLAKE2b-256 42f809f18aad96c72bcb132d2d5f2f50a67090d052ebad15b4d1f859d737a1c5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4c86435098906510cff7057978237a863a61c88aa7abf719530753824088ba08
MD5 2b9262b78cfd44bed297039c60f48304
BLAKE2b-256 17491fd242d744350943809c83ac9a1f9cfd080c4c0904e60472f69217a260b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32a4eab2fad2371fe4b4adc03d920dea5b38191118843daf7c91f4c69622b23f
MD5 a4560c752ad3af4cf002419d27862461
BLAKE2b-256 64f594e8f937ca213d8c61ea7c4b1928dfa90e4ddf860723a51f893d865411eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d5acc2a0c40765d88f9726f2128c042f95aec1d83a901ab49773ee13017e30d
MD5 f175209a028dcab52c318cbc3f345945
BLAKE2b-256 b266d2db03b67e0978a84f15faa3bf6fd63973d6fabed876d8eba1ee3f80ba55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 375b6adc9a55c967222e14445f0d75d2d221ffcdac971c39fdab558ac946c343
MD5 171fa517eba1452e6715a9152b00694d
BLAKE2b-256 4109090de554bdbace3b47f904da5dc2fbadde2f79388a702fa95167fc5017d0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: diff_diff-3.5.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diff_diff-3.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f4a76e25e986cb0c5debad55834c5b17ef9f0c46e553eb1392c838bfedccb1b3
MD5 05ed3b3d9559d5d49df76b8d93fc0666
BLAKE2b-256 f7c4319dc8de318d0125a2ec4f8cb331120e2b33aa23120a66fe5ef9de1bf301

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c2b3ba8039889f0875acff57fee75084fa28d2604c0bc77a1a212549be1b5781
MD5 9d9d7fa8955deab3ea5c096e38b9e7ae
BLAKE2b-256 bf294f1afc63393ac3cfcd4c94136ffe2637526a1320d58c8289027e90d664ff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2900ba438a13bd00dc2c4d8af40938bb90fe11e69110832c807b962eab05f4b3
MD5 f0c0804db085c9ba4d135e8eb698fda1
BLAKE2b-256 4b3a967dcde4fa175ad3b5881593c42a1da31383140afa02241362918d6b3b99

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for diff_diff-3.5.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1407068712375b0a4ccd49cd54830061f14c149ca9da07542e1b834b1dd2aff7
MD5 37a3876b7b7cba422e8e62b2b372dac0
BLAKE2b-256 f3cd1f8ae1cddc5274b59c0de5403e8274ad75775e8b92fb9d36063d21859d44

See more details on using hashes here.

Provenance

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