Skip to content

Commit 065a8c9

Browse files
igerberclaude
andcommitted
Bump version to 2.1.4
Updates version in all locations: - diff_diff/__init__.py - pyproject.toml - rust/Cargo.toml - CHANGELOG.md (new entry with comparison link) Release includes: - R-style rank deficiency handling across all estimators - Development checklists and workflow improvements in CLAUDE.md - get_params() fix for rank_deficient_action parameter - NaN vcov fallback in Rust backend Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f838bef commit 065a8c9

4 files changed

Lines changed: 26 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,28 @@ 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+
## [2.1.4] - 2026-01-20
9+
10+
### Added
11+
- **Development checklists and workflow improvements** in `CLAUDE.md`
12+
- Estimator inheritance map showing class hierarchy for `get_params`/`set_params`
13+
- Test writing guidelines for fallback paths, parameters, and warnings
14+
- Checklists for adding parameters and warning/error handling
15+
- **R-style rank deficiency handling** across all estimators
16+
- `rank_deficient_action` parameter: "warn" (default), "error", or "silent"
17+
- Dropped columns have NaN coefficients (like R's `lm()`)
18+
- VCoV matrix has NaN for rows/cols of dropped coefficients
19+
- Propagated to all estimators: DifferenceInDifferences, MultiPeriodDiD, TwoWayFixedEffects, CallawaySantAnna, SunAbraham, TripleDifference, TROP, SyntheticDiD
20+
21+
### Fixed
22+
- `get_params()` now includes `rank_deficient_action` parameter (fixes sklearn cloning)
23+
- NaN vcov fallback in Rust backend for rank-deficient matrices
24+
- MultiPeriodDiD vcov/df computation for rank-deficient designs
25+
- Average ATT inference for rank-deficient designs
26+
27+
### Changed
28+
- Rank tolerance aligned with R's `lm()` default for consistent behavior
29+
830
## [2.1.3] - 2026-01-19
931

1032
### Fixed
@@ -470,6 +492,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
470492
- `to_dict()` and `to_dataframe()` export methods
471493
- `is_significant` and `significance_stars` properties
472494

495+
[2.1.4]: https://github.com/igerber/diff-diff/compare/v2.1.3...v2.1.4
473496
[2.1.3]: https://github.com/igerber/diff-diff/compare/v2.1.2...v2.1.3
474497
[2.1.2]: https://github.com/igerber/diff-diff/compare/v2.1.1...v2.1.2
475498
[2.1.1]: https://github.com/igerber/diff-diff/compare/v2.1.0...v2.1.1

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
load_mpdta,
137137
)
138138

139-
__version__ = "2.1.3"
139+
__version__ = "2.1.4"
140140
__all__ = [
141141
# Estimators
142142
"DifferenceInDifferences",

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 = "2.1.3"
7+
version = "2.1.4"
88
description = "A library for Difference-in-Differences causal inference analysis"
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 = "2.1.3"
3+
version = "2.1.4"
44
edition = "2021"
55
description = "Rust backend for diff-diff DiD library"
66
license = "MIT"

0 commit comments

Comments
 (0)