diff-diff 2.1.0__tar.gz → 2.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. {diff_diff-2.1.0 → diff_diff-2.1.2}/PKG-INFO +1 -1
  2. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/__init__.py +11 -1
  3. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/_backend.py +16 -0
  4. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/prep.py +655 -0
  5. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/pretrends.py +104 -11
  6. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/staggered.py +4 -0
  7. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/trop.py +516 -161
  8. {diff_diff-2.1.0 → diff_diff-2.1.2}/pyproject.toml +1 -1
  9. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/Cargo.lock +6 -81
  10. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/Cargo.toml +1 -1
  11. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/src/lib.rs +6 -0
  12. diff_diff-2.1.2/rust/src/trop.rs +861 -0
  13. {diff_diff-2.1.0 → diff_diff-2.1.2}/README.md +0 -0
  14. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/bacon.py +0 -0
  15. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/datasets.py +0 -0
  16. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/diagnostics.py +0 -0
  17. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/estimators.py +0 -0
  18. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/honest_did.py +0 -0
  19. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/linalg.py +0 -0
  20. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/power.py +0 -0
  21. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/results.py +0 -0
  22. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/sun_abraham.py +0 -0
  23. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/synthetic_did.py +0 -0
  24. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/triple_diff.py +0 -0
  25. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/twfe.py +0 -0
  26. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/utils.py +0 -0
  27. {diff_diff-2.1.0 → diff_diff-2.1.2}/diff_diff/visualization.py +0 -0
  28. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/src/bootstrap.rs +0 -0
  29. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/src/linalg.rs +0 -0
  30. {diff_diff-2.1.0 → diff_diff-2.1.2}/rust/src/weights.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diff-diff
3
- Version: 2.1.0
3
+ Version: 2.1.2
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Intended Audience :: Science/Research
6
6
  Classifier: Operating System :: OS Independent
@@ -71,6 +71,11 @@ from diff_diff.prep import (
71
71
  balance_panel,
72
72
  create_event_time,
73
73
  generate_did_data,
74
+ generate_ddd_data,
75
+ generate_event_study_data,
76
+ generate_factor_data,
77
+ generate_panel_data,
78
+ generate_staggered_data,
74
79
  make_post_indicator,
75
80
  make_treatment_indicator,
76
81
  rank_control_units,
@@ -131,7 +136,7 @@ from diff_diff.datasets import (
131
136
  load_mpdta,
132
137
  )
133
138
 
134
- __version__ = "2.1.0"
139
+ __version__ = "2.1.2"
135
140
  __all__ = [
136
141
  # Estimators
137
142
  "DifferenceInDifferences",
@@ -190,6 +195,11 @@ __all__ = [
190
195
  "validate_did_data",
191
196
  "summarize_did_data",
192
197
  "generate_did_data",
198
+ "generate_staggered_data",
199
+ "generate_factor_data",
200
+ "generate_ddd_data",
201
+ "generate_panel_data",
202
+ "generate_event_study_data",
193
203
  "create_event_time",
194
204
  "aggregate_to_cohorts",
195
205
  "rank_control_units",
@@ -23,6 +23,10 @@ try:
23
23
  project_simplex as _rust_project_simplex,
24
24
  solve_ols as _rust_solve_ols,
25
25
  compute_robust_vcov as _rust_compute_robust_vcov,
26
+ # TROP estimator acceleration
27
+ compute_unit_distance_matrix as _rust_unit_distance_matrix,
28
+ loocv_grid_search as _rust_loocv_grid_search,
29
+ bootstrap_trop_variance as _rust_bootstrap_trop_variance,
26
30
  )
27
31
  _rust_available = True
28
32
  except ImportError:
@@ -32,6 +36,10 @@ except ImportError:
32
36
  _rust_project_simplex = None
33
37
  _rust_solve_ols = None
34
38
  _rust_compute_robust_vcov = None
39
+ # TROP estimator acceleration
40
+ _rust_unit_distance_matrix = None
41
+ _rust_loocv_grid_search = None
42
+ _rust_bootstrap_trop_variance = None
35
43
 
36
44
  # Determine final backend based on environment variable and availability
37
45
  if _backend_env == 'python':
@@ -42,6 +50,10 @@ if _backend_env == 'python':
42
50
  _rust_project_simplex = None
43
51
  _rust_solve_ols = None
44
52
  _rust_compute_robust_vcov = None
53
+ # TROP estimator acceleration
54
+ _rust_unit_distance_matrix = None
55
+ _rust_loocv_grid_search = None
56
+ _rust_bootstrap_trop_variance = None
45
57
  elif _backend_env == 'rust':
46
58
  # Force Rust mode - fail if not available
47
59
  if not _rust_available:
@@ -61,4 +73,8 @@ __all__ = [
61
73
  '_rust_project_simplex',
62
74
  '_rust_solve_ols',
63
75
  '_rust_compute_robust_vcov',
76
+ # TROP estimator acceleration
77
+ '_rust_unit_distance_matrix',
78
+ '_rust_loocv_grid_search',
79
+ '_rust_bootstrap_trop_variance',
64
80
  ]