-
Notifications
You must be signed in to change notification settings - Fork 856
Comparing changes
Open a pull request
base repository: uber/causalml
base: v0.15.5
head repository: uber/causalml
compare: v0.16.0
- 11 commits
- 55 files changed
- 6 contributors
Commits on Jul 16, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 1a96e01 - Browse repository at this point
Copy the full SHA 1a96e01View commit details
Commits on Sep 12, 2025
-
add ability to benchmark via synth validation (#847)
* added notebook to the link of examples
Configuration menu - View commit details
-
Copy full SHA for de4dcfc - Browse repository at this point
Copy the full SHA de4dcfcView commit details
Commits on Sep 17, 2025
-
Bug Fix: Update uplift.pyx with isinstance(v, Numbers.number)) (#849)
* Update uplift.pyx with isinstance(v, numbers.Number):
Configuration menu - View commit details
-
Copy full SHA for 75bd079 - Browse repository at this point
Copy the full SHA 75bd079View commit details
Commits on Sep 26, 2025
-
Fix #848: Pass estimation_sample_size parameter to individual trees i…
…n UpliftRandomForestClassifier (#850)
Configuration menu - View commit details
-
Copy full SHA for 6f4ec71 - Browse repository at this point
Copy the full SHA 6f4ec71View commit details
Commits on Nov 7, 2025
-
#775: Support multiple treatments in CausalTreeRegressor and CausalRa…
…ndomForestRegressor (#852) * Add outcome vector y preparation for multiple treatment groups * Update CausalTreeRegressor class * Add multiple groups support in cython part of causal trees building * Add min_group_size parameter to control tree building * Update python part of causal trees, keep consistent namings for tree builder * Add an option to pass custom matplotlib axes in charts * Update Jupyter notebooks with causal trees and forests * Keep consistent codestyle with black * Update validate_data arguments support for sklearn <1.6 & >=1.6 * Extend causal tree and forest tests for multiple treatment groups * Keep consistent codestyle with black * Fix description in causal trees notebok * Keep consistent codestyle in tests * Remove unused cython var in criterion header * Add separate function for check_y_params
Configuration menu - View commit details
-
Copy full SHA for 50c640d - Browse repository at this point
Copy the full SHA 50c640dView commit details
Commits on Feb 1, 2026
-
fix: support scipy>=1.16.0 by removing sklearn internal dependency (#861
) * fix: remove sklearn.utils._random import to avoid DEFAULT_SEED signature mismatch - Copy our_rand_r and RAND_R_MAX implementations locally - Avoids sklearn 1.6+ DEFAULT_SEED const qualifier change - Maintains BSD-3-Clause license compatibility Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * fix: support scipy>=1.16.0 by removing sklearn internal dependency Resolves #859 - Remove sklearn.utils._random import from causalml/inference/tree/_tree/_utils.pyx - Copy our_rand_r and RAND_R_MAX implementations locally with BSD-3-Clause attribution - Support scipy>=1.16.0, numpy>=1.25.2, statsmodels>=0.14.5 - Requires Python>=3.11 - Fixes TypeError with sklearn.utils._random.DEFAULT_SEED signature mismatch The root cause was that Cython auto-imports ALL symbols when using cimport, including DEFAULT_SEED which had a signature change in sklearn 1.6+. By copying the needed functions locally, we eliminate this dependency and ensure compatibility with current sklearn versions. Tested with: Python 3.11.9, sklearn 1.7.0, scipy 1.17.0, numpy 2.1.3 All 109 tests passing. Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * ci: update Python test matrix to 3.11+ only Remove Python 3.9 and 3.10 from test matrix to match updated requires-python>=3.11 requirement. * docs: add Python 3.11 ReadTheDocs environment file Add environment-py311-rtd.yml for building docs with Python 3.11 and updated dependency versions: - scipy>=1.16.0 - numpy>=1.25.2 - scikit-learn>=1.6.0 - statsmodels>=0.14.5 - cython==3.0.11 * docs: update ReadTheDocs config to use Python 3.11 environment Switch from environment-py39-rtd.yml to environment-py311-rtd.yml to match updated Python 3.11+ requirement. * style: apply black 26.1.0 formatting - Upgrade black from >=25.1.0 to >=26.1.0 in pyproject.toml - Apply black 26.1.0 formatting to 13 files - Fixes CI lint errors * docs: fix copyright year to range 2019-2026 * fix: replace force_all_finite with ensure_all_finite for sklearn 1.6+ sklearn 1.6+ renamed the parameter from force_all_finite to ensure_all_finite. Update _classes.py to use the new parameter name. * Fix pandas 2.x + numpy 2.x string dtype compatibility Replace dtype == "object" checks with is_numeric_dtype() checks to handle both legacy object dtype and new str dtype introduced in pandas 2.x with numpy 2.x. This fixes test failures in CI where pd.options.future.infer_string=True causes string columns to have dtype 'str' instead of 'object', making the previous dtype checks fail to detect categorical columns. Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * Fix LabelEncoder to work with pandas 2.x string dtype When pandas uses the new string dtype (instead of object), we cannot assign numeric values to string-typed columns. LabelEncoder converts categorical strings to numeric labels, so we need to: 1. Copy the input DataFrame to avoid modifying the input 2. Explicitly convert encoded values to float dtype with .astype(float) This fixes the test_LabelEncoder failure in CI where pandas 2.x with numpy 2.x uses dtype 'str' instead of 'object' for string columns. Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * update the readthedocs config to use the latest Ubuntu and miniforge to fix the build timeout * update the docs config, and dependencies * update readthedocs conda env file * fix lint errors --------- Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 342a91c - Browse repository at this point
Copy the full SHA 342a91cView commit details
Commits on Feb 2, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 4145b2f - Browse repository at this point
Copy the full SHA 4145b2fView commit details
Commits on Feb 4, 2026
-
Fix Ubuntu packaging failure by aligning cibuildwheel config with Pyt…
…hon version requirement (#864) The cibuildwheel configuration was attempting to build wheels for Python 3.9 and 3.10, but the package requires Python >=3.11 (as specified in requires-python). This mismatch caused the Ubuntu packaging workflow to fail during validation. Changes: - Updated [tool.cibuildwheel] build list to only include cp311-* and cp312-* - Removed cp39-* and cp310-* from the build list Fixes #863 Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for c1362c5 - Browse repository at this point
Copy the full SHA c1362c5View commit details
Commits on Feb 5, 2026
-
Fix Ubuntu packaging failure - scipy manylinux compatibility (#865)
* Fix Ubuntu packaging failure by aligning cibuildwheel config with Python version requirement The cibuildwheel configuration was attempting to build wheels for Python 3.9 and 3.10, but the package requires Python >=3.11 (as specified in requires-python). This mismatch caused the Ubuntu packaging workflow to fail during validation. Changes: - Updated [tool.cibuildwheel] build list to only include cp311-* and cp312-* - Removed cp39-* and cp310-* from the build list Fixes #863 Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * Pin scipy to <1.17.0 to fix Ubuntu packaging failure The Ubuntu packaging build was failing because scipy 1.17.0 (released January 2026) only provides manylinux_2_27/manylinux_2_28 wheels, which are incompatible with the manylinux2014 (manylinux_2_17) containers used by cibuildwheel. This caused pip to fall back to building scipy from source, which failed due to missing OpenBLAS dependency. By pinning scipy to <1.17.0, we ensure pip only selects versions that have compatible manylinux2014 wheels (like scipy 1.16.3), preventing the source build fallback and resolving the build failure. Fixes #863 Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * Address CoPilot review comments - ensure consistency across config files 1. Update scipy constraint in RTD environment file - Pin scipy to <1.17.0 in docs/environment-py311-rtd.yml - Prevents manylinux2014 compatibility issues during doc builds 2. Update GitHub Actions workflows for Python 3.11+ requirement - Remove Python 3.9 and 3.10 from test-build-from-source.yml - Remove Python 3.9 and 3.10 from test-pypi-install.yml - Aligns with requires-python = ">=3.11" in pyproject.toml 3. Explicitly set manylinux image in cibuildwheel config - Add manylinux-x86_64-image = "manylinux2014" - Add manylinux-aarch64-image = "manylinux2014" - Ensures consistent manylinux level across all Python versions Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> --------- Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 87dd7f1 - Browse repository at this point
Copy the full SHA 87dd7f1View commit details
Commits on Feb 6, 2026
-
Remove deprecated macos-13 and upgrade cibuildwheel to v3.3.1 (#867)
Changes: - Removed macos-13 from build matrix (GitHub has deprecated this runner) - Upgraded cibuildwheel from v2.22 to v3.3.1 (latest as of Jan 2026) cibuildwheel v3.0+ changes: - Requires Python 3.11+ to run (compatible with CausalML's requirements) - Dropped support for building Python 3.6/3.7 wheels (not needed) - Added CPython 3.14 support Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 9b6f20a - Browse repository at this point
Copy the full SHA 9b6f20aView commit details -
Release v0.16.0: Upgrade to manylinux_2_28 and remove scipy version c…
…onstraints (#869) * Upgrade to manylinux_2_28 and remove scipy version constraints This PR modernizes CausalML's wheel distribution by upgrading from manylinux2014 to manylinux_2_28, enabling compatibility with both scipy 1.16.x and 1.17.x without version pinning. ## Changes ### 1. Upgrade manylinux platform tag (pyproject.toml) - **Before:** manylinux2014 (glibc 2.17, CentOS 7 base - EOL June 2024) - **After:** manylinux_2_28 (glibc 2.28, modern standard) ### 2. Remove scipy version constraints - **pyproject.toml:** `scipy>=1.16.0,<1.17.0` → `scipy>=1.16.0` - **docs/environment-py311-rtd.yml:** Removed upper bound constraint - **Benefit:** Support both scipy 1.16.x and 1.17.x automatically ### 3. Document system requirements (docs/installation.rst) Added new "System Requirements" section documenting: - Python 3.11+ requirement - Minimum Linux distributions (Ubuntu 18.04+, RHEL 8+, Debian 10+) - Build-from-source instructions for older systems ## Why This Change? ### Problems with manylinux2014: - Based on CentOS 7 (EOL June 2024) - Required version pinning to avoid scipy 1.17.0 - Prevented access to newer dependency features - Maintenance burden with explicit constraints ### Benefits of manylinux_2_28: - Modern, actively maintained standard - Compatible with scipy 1.16.x AND 1.17.x - No version pinning needed - pip selects the best version - Future-proof for upcoming dependencies - Cleaner dependency declarations ## Compatibility Impact ### Systems That Work: - Ubuntu 18.04 LTS+ (glibc 2.27+) - RHEL/CentOS 8+ (glibc 2.28+) - Debian 10+ (glibc 2.28+) - All recent macOS and Windows versions ### Systems Requiring Source Build: - RHEL/CentOS 7 (glibc 2.17) - Ubuntu 16.04 and earlier - Debian 9 and earlier **Note:** CentOS 7 reached EOL in June 2024, and Ubuntu 16.04 EOL was April 2021, making this upgrade aligned with industry standards. ## scipy Compatibility CausalML uses these scipy modules: - scipy.sparse, scipy.stats - scipy.optimize (fsolve, minimize) - scipy.special (expit, logit) - scipy.interpolate (UnivariateSpline) **None of these are affected by scipy 1.17.0 breaking changes**, which only impact scipy.spatial.transform. Both scipy 1.16.x and 1.17.x work correctly with CausalML. ## Testing Pre-built wheels will now use manylinux_2_28. Users can install with either scipy version: - scipy 1.16.3 (stable, has manylinux2014 wheels) - scipy 1.17.0+ (latest, has manylinux_2_28 wheels) pip will automatically select the appropriate version based on the user's system capabilities. Supersedes: #868 (build-system fix no longer needed with manylinux_2_28) Closes: #863 Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * Fix glibc version requirement: manylinux_2_28 requires glibc 2.28, not 2.27 Copilot correctly identified that Ubuntu 18.04 is NOT compatible with manylinux_2_28 wheels. Ubuntu 18.04 has glibc 2.27, but manylinux_2_28 requires glibc 2.28 or later. Changes: - Updated glibc requirement from 2.27 to 2.28 - Changed minimum Ubuntu version from 18.04 to 20.04 LTS (has glibc 2.31) - Added Ubuntu 18.04 to the list of distributions requiring source build This ensures users have accurate information about system requirements. Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> * Bump version to 0.16.0 and update changelog for breaking changes This release introduces breaking changes in Linux wheel compatibility due to the manylinux_2_28 upgrade, warranting a minor version bump from 0.15.6 to 0.16.0. Changes: - Updated version in pyproject.toml: 0.15.6 → 0.16.0 - Added comprehensive 0.16.0 changelog entry documenting: - Breaking change: manylinux_2_28 requirement (glibc 2.28+) - Affected systems and migration path - scipy version pin removal - Related PRs (#869, #867, #865, #864) Breaking Changes: - Pre-built wheels require Ubuntu 20.04+, RHEL 8+, Debian 10+ (glibc 2.28+) - Users on Ubuntu 18.04, RHEL 7, etc. must build from source - Python 3.11+ required (already enforced in previous release) This follows semantic versioning: minor version bump for backward- incompatible changes to wheel distribution. Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com> --------- Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for db11de2 - Browse repository at this point
Copy the full SHA db11de2View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.15.5...v0.16.0