Skip to content

Commit 2d41cbe

Browse files
authored
Bump version to 3.10.0 (#788)
1 parent 79a5f08 commit 2d41cbe

7 files changed

Lines changed: 18 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [3.10.0] - 2026-08-22
99

1010
### Added
1111
- **LPDiD non-absorbing SEs now anchored against the authors' Stata `lpdid` package
@@ -5347,6 +5347,7 @@ for the full feature history leading to this release.
53475347
[2.1.2]: https://github.com/igerber/diff-diff/compare/v2.1.1...v2.1.2
53485348
[2.1.1]: https://github.com/igerber/diff-diff/compare/v2.1.0...v2.1.1
53495349
[2.1.0]: https://github.com/igerber/diff-diff/compare/v2.0.3...v2.1.0
5350+
[3.10.0]: https://github.com/igerber/diff-diff/compare/v3.9.1...v3.10.0
53505351
[3.9.1]: https://github.com/igerber/diff-diff/compare/v3.9.0...v3.9.1
53515352
[3.9.0]: https://github.com/igerber/diff-diff/compare/v3.8.0...v3.9.0
53525353
[3.8.0]: https://github.com/igerber/diff-diff/compare/v3.7.0...v3.8.0

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ authors:
77
family-names: Gerber
88
orcid: "https://orcid.org/0009-0009-3275-5591"
99
license: MIT
10-
version: "3.9.1"
11-
date-released: "2026-08-17"
10+
version: "3.10.0"
11+
date-released: "2026-08-22"
1212
doi: "10.5281/zenodo.19646175"
1313
url: "https://github.com/igerber/diff-diff"
1414
repository-code: "https://github.com/igerber/diff-diff"

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ def __getattr__(name: str) -> _Any:
368368
raise AttributeError(f"module 'diff_diff' has no attribute {name!r}")
369369

370370

371-
__version__ = "3.9.1"
371+
__version__ = "3.10.0"
372372
__all__ = [
373373
# Estimators
374374
"DifferenceInDifferences",

diff_diff/guides/llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> A Python library for Difference-in-Differences causal inference analysis. Provides sklearn-like estimators with statsmodels-style output for econometric analysis.
44

5-
- Version: 3.9.1
5+
- Version: 3.10.0
66
- Repository: https://github.com/igerber/diff-diff
77
- License: MIT
88
- Dependencies: numpy, pandas, scipy (no statsmodels dependency)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "diff-diff"
7-
version = "3.9.1"
7+
version = "3.10.0"
88
description = "Difference-in-Differences causal inference with sklearn-like API. Callaway-Sant'Anna, Synthetic DiD, Honest DiD, event studies, parallel trends."
99
readme = "README.md"
1010
license = "MIT"

rust/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "diff_diff_rust"
3-
version = "3.9.1"
3+
version = "3.10.0"
44
edition = "2021"
55
rust-version = "1.85"
66
description = "Rust backend for diff-diff DiD library"

tests/test_naming_guard.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,14 @@
100100
# test_ship_version_map_matches_table).
101101
_SHIP_VERSION = {2: "3.9", 3: "3.9", 4: "3.9", 5: "4.0", 6: "4.1"}
102102

103-
# Release ladder (v4-design section 2): maps the CURRENT (major, minor) to the
104-
# NEXT release. Keyed off diff_diff.__version__ so the Duty C lifecycle gate
105-
# re-arms mechanically at each version bump; a missing key fails loudly.
106-
_NEXT_RELEASE = {(3, 8): "3.9", (3, 9): "4.0", (4, 0): "4.1"}
103+
# Enforcement horizon (v4-design section 2 release ladder): maps the CURRENT
104+
# (major, minor) to the version whose deprecation windows must already be
105+
# enforced — NOT necessarily the literal next release (interim minors like
106+
# 3.10 keep the 4.0 horizon; "fixing" an entry to a nearer version would
107+
# silently disarm 4.0-window checks). Keyed off diff_diff.__version__ so the
108+
# Duty C lifecycle gate re-arms mechanically at each version bump; a missing
109+
# key fails loudly.
110+
_NEXT_RELEASE = {(3, 8): "3.9", (3, 9): "4.0", (3, 10): "4.0", (4, 0): "4.1"}
107111

108112
# Section-8 vocabulary predicate (Duty A). Every param/field rename token in
109113
# the ledger - current and lifecycle-gated - must be matched here
@@ -1542,6 +1546,8 @@ def test_lifecycle_gate_windows_and_loud_keyerror():
15421546
assert _version_tuple("4.0") > horizon_38, "4.0-window rows defer at 3.8.x"
15431547
horizon_39 = _version_tuple(_NEXT_RELEASE[(3, 9)])
15441548
assert _version_tuple("4.0") <= horizon_39, "4.0-window rows arm at the 3.9 bump"
1549+
horizon_310 = _version_tuple(_NEXT_RELEASE[(3, 10)])
1550+
assert _version_tuple("4.0") <= horizon_310, "4.0-window rows stay armed at 3.10.x"
15451551
assert (99, 99) not in _NEXT_RELEASE, "unknown versions must fail the gate loudly"
15461552
current = _version_tuple(diff_diff.__version__)[:2]
15471553
assert current in _NEXT_RELEASE, f"extend _NEXT_RELEASE for __version__ {diff_diff.__version__}"

0 commit comments

Comments
 (0)