Skip to content

Commit ba790b0

Browse files
authored
Merge pull request #316 from igerber/release/3.1.2
Release 3.1.2: SDID scale fix, convergence warnings, roadmap refresh
2 parents 32a4d09 + 9230c8f commit ba790b0

7 files changed

Lines changed: 18 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [3.1.2] - 2026-04-18
11+
12+
### Fixed
13+
- **SyntheticDiD catastrophic cancellation at extreme Y scale** (PR #312) - the Frank-Wolfe weight solver lost precision when outcome magnitudes were very large or very small; results are now numerically stable across scales.
14+
- **Non-convergence signaling in FE imputation alternating-projection solvers** (PR #314) - `ImputationDiD`, `TwoStageDiD`, and shared `within_transform` now emit a `ConvergenceWarning` when the alternating-projection / weighted-demean loop exits without meeting the tolerance. `max_iter` and `tol` are documented on `within_transform`.
15+
- **Non-convergence signaling in SyntheticDiD Frank-Wolfe solver** (PR #315) - the numpy-path Frank-Wolfe SC weight solver now emits a `ConvergenceWarning` when the loop exits without meeting `min_decrease`. Wrapper-level and `max_iter=0` regression tests added.
16+
1017
### Changed
11-
- Refresh `ROADMAP.md` to drop top-level phase numbering and reflect shipped state through v3.1.1. Absorbs dCDH into the Current State estimator list; adds Recently Shipped summary; reorganizes open work as Shipping Next / Under Consideration / AI-Agent Track / Long-term. Updates `docs/business-strategy.md`, `docs/survey-roadmap.md`, `docs/practitioner_decision_tree.rst`, `docs/choosing_estimator.rst`, `docs/api/chaisemartin_dhaultfoeuille.rst`, `README.md`, and `diff_diff/guides/llms-full.txt` to remove stale phase-deferral language now that the deferred items have shipped.
18+
- Refresh `ROADMAP.md` to drop top-level phase numbering and reflect shipped state through v3.1.1 (PR #313). Absorbs dCDH into the Current State estimator list; adds Recently Shipped summary; reorganizes open work as Shipping Next / Under Consideration / AI-Agent Track / Long-term. Updates `docs/business-strategy.md`, `docs/survey-roadmap.md`, `docs/practitioner_decision_tree.rst`, `docs/choosing_estimator.rst`, `docs/api/chaisemartin_dhaultfoeuille.rst`, `README.md`, and `diff_diff/guides/llms-full.txt` to remove stale phase-deferral language now that the deferred items have shipped.
19+
- Bump the `SyntheticDiD(lambda_reg=...)` and `SyntheticDiD(zeta=...)` deprecation warnings' removal target from `v3.1` to `v4.0.0`. Removing public kwargs in a patch / minor release would violate Semantic Versioning; the deprecation stays warning-only throughout the `3.x` line and will be removed in the next major release. Use `zeta_omega` / `zeta_lambda` instead.
1220

1321
## [3.1.1] - 2026-04-16
1422

@@ -1298,6 +1306,7 @@ for the full feature history leading to this release.
12981306
[2.1.2]: https://github.com/igerber/diff-diff/compare/v2.1.1...v2.1.2
12991307
[2.1.1]: https://github.com/igerber/diff-diff/compare/v2.1.0...v2.1.1
13001308
[2.1.0]: https://github.com/igerber/diff-diff/compare/v2.0.3...v2.1.0
1309+
[3.1.2]: https://github.com/igerber/diff-diff/compare/v3.1.1...v3.1.2
13011310
[3.1.1]: https://github.com/igerber/diff-diff/compare/v3.1.0...v3.1.1
13021311
[3.1.0]: https://github.com/igerber/diff-diff/compare/v3.0.2...v3.1.0
13031312
[3.0.2]: https://github.com/igerber/diff-diff/compare/v3.0.1...v3.0.2

TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ Deprecated parameters still present for backward compatibility:
124124

125125
- `lambda_reg` and `zeta` in `SyntheticDiD` (`synthetic_did.py`)
126126
- Deprecated in favor of `zeta_omega`/`zeta_lambda` parameters
127-
- Remove in v3.1
127+
- Remove in v4.0.0 (SemVer-safe: public kwarg removal requires a major bump)
128128

129129
---
130130

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
ETWFE = WooldridgeDiD
232232
DCDH = ChaisemartinDHaultfoeuille
233233

234-
__version__ = "3.1.1"
234+
__version__ = "3.1.2"
235235
__all__ = [
236236
# Estimators
237237
"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.1.1
5+
- Version: 3.1.2
66
- Repository: https://github.com/igerber/diff-diff
77
- License: MIT
88
- Dependencies: numpy, pandas, scipy (no statsmodels dependency)

diff_diff/synthetic_did.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,14 @@ def __init__(
149149
warnings.warn(
150150
"lambda_reg is deprecated and ignored. Regularization is now "
151151
"auto-computed from data. Use zeta_omega to override unit weight "
152-
"regularization. Will be removed in v3.1.",
152+
"regularization. Will be removed in v4.0.0.",
153153
DeprecationWarning,
154154
stacklevel=2,
155155
)
156156
if zeta is not None:
157157
warnings.warn(
158158
"zeta is deprecated and ignored. Use zeta_lambda to override "
159-
"time weight regularization. Will be removed in v3.1.",
159+
"time weight regularization. Will be removed in v4.0.0.",
160160
DeprecationWarning,
161161
stacklevel=2,
162162
)
@@ -1471,7 +1471,7 @@ def set_params(self, **params) -> "SyntheticDiD":
14711471
if key in _deprecated:
14721472
warnings.warn(
14731473
f"{key} is deprecated and ignored. Use zeta_omega/zeta_lambda "
1474-
f"instead. Will be removed in v3.1.",
1474+
f"instead. Will be removed in v4.0.0.",
14751475
DeprecationWarning,
14761476
stacklevel=2,
14771477
)

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.1.1"
7+
version = "3.1.2"
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.1.1"
3+
version = "3.1.2"
44
edition = "2021"
55
rust-version = "1.84"
66
description = "Rust backend for diff-diff DiD library"

0 commit comments

Comments
 (0)