Skip to content

v3.0.0: Deprecation removals, version bump, docs refresh#281

Merged
igerber merged 1 commit into
mainfrom
release-v3.0
Apr 7, 2026
Merged

v3.0.0: Deprecation removals, version bump, docs refresh#281
igerber merged 1 commit into
mainfrom
release-v3.0

Conversation

@igerber
Copy link
Copy Markdown
Owner

@igerber igerber commented Apr 7, 2026

Summary

  • Remove 3 deprecated parameters (breaking changes justifying major version):
    • CallawaySantAnna(bootstrap_weight_type=) → use bootstrap_weights
    • TROP(method="twostep") → use method="local"
    • TROP(method="joint") → use method="global"
  • Rename internal attribute bootstrap_weight_typebootstrap_weights in bootstrap mixin and StaggeredTripleDifference
  • Add TROP set_params() validation — invalid method values now raise ValueError
  • Schedule SyntheticDiD deprecationslambda_reg/zeta formally scheduled for removal in v3.1
  • Bump version 2.9.1 → 3.0.0 across all 5 locations
  • ROADMAP refresh — Phase 10 items marked shipped, survey_aggregate() future item added
  • Documentation consistency — remove all stale WooldridgeDiD survey gap notes, update survey-roadmap.md, REGISTRY.md, troubleshooting.rst, llms.txt, llms-full.txt, TROP tutorial

Methodology references (required if estimator / math changes)

  • Method name(s): N/A — no methodology changes, only parameter/alias removal and documentation
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

  • Tests added/updated: test_trop.py (replaced 4 deprecated alias tests with 1 rejection test), test_staggered.py (updated param names), test_methodology_callaway.py (removed deprecated param tests), test_staggered_triple_diff.py (updated assertion)
  • Backtest / simulation / notebook evidence: N/A — no methodology changes

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

Generated with Claude Code

Breaking changes:
- Remove CallawaySantAnna bootstrap_weight_type param (use bootstrap_weights)
- Remove TROP method="twostep" alias (use method="local")
- Remove TROP method="joint" alias (use method="global")

Also:
- Rename internal bootstrap_weight_type attr to bootstrap_weights in mixin
- Add TROP set_params() method validation
- Schedule SyntheticDiD lambda_reg/zeta removal for v3.1
- Bump version 2.9.1 → 3.0.0 across all 5 locations
- Update ROADMAP Phase 10 items as shipped
- Remove stale WooldridgeDiD survey gap notes from all docs
- Add survey_aggregate() future item to ROADMAP

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 7, 2026

Overall Assessment

✅ Looks good. No unmitigated P0/P1 findings. I did not find a methodology deviation, incorrect variance/SE change, or silent correctness regression in the changed estimator paths. Review limitation: I could not execute pytest in this environment because it is not installed.

Executive Summary

Methodology

Code Quality

Performance

  • No findings. The reviewed changes are parameter validation, attribute renaming, and docs/test updates; they do not alter hot numerical loops, bootstrap algorithms, or estimator complexity.

Maintainability

Tech Debt

Security

  • No findings. I did not see secrets, new user-controlled execution paths, unsafe subprocess/network behavior, or data-handling changes in the diff.

Documentation/Tests

  • Severity: P3. Impact: The breaking API removals are only partially regression-tested. tests/test_trop.py checks generic invalid constructor input and set_params() rejection, but not explicit constructor rejection of the removed twostep/joint aliases; tests/test_staggered.py removes the old bootstrap_weight_type deprecation tests without adding a direct assertion that the removed constructor parameter now fails. That leaves a minor gap where accidental alias reintroduction or a different failure mode could slip through unnoticed (diff_diff/trop.py:L138-L142, diff_diff/staggered.py:L288-L349, tests/test_trop.py:L2898-L2924, tests/test_staggered.py:L1587-L1600).
  • Concrete fix: Add explicit negative tests for TROP(method="twostep"), TROP(method="joint"), and CallawaySantAnna(bootstrap_weight_type="mammen"), asserting the intended exception type/message for the v3.0 removal.
  • Residual review gap: I could not run the targeted test slice because pytest is unavailable in this environment.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Apr 7, 2026
@igerber igerber merged commit 5c5b6fa into main Apr 7, 2026
21 of 23 checks passed
@igerber igerber deleted the release-v3.0 branch April 7, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-ci Triggers CI test workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant