From 3b1e8c654c514b406c65fe4f018ebc44829ed33c Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 1 Oct 2026 17:10:41 -0700 Subject: [PATCH 01/24] Update pytest.yml --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 319bfea53..cefea6e6f 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: os: ['ubuntu-latest'] - python-version: ['3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14', '3.15'] steps: - uses: actions/checkout@v6 - name: Install uv From 2c5cb6917f9bc39f314e60b6d18e8e533e3ca80b Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 14:47:27 -0700 Subject: [PATCH 02/24] Update pyproject.toml --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index c71ebea26..42ae46a22 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", ] keywords = ["actuarial", "reserving", "insurance", "chainladder", "IBNR"] dependencies = [ From 49e42a83cd3ddd23a1943eb8a72dac274a47534c Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:22:08 -0700 Subject: [PATCH 03/24] Update pyproject.toml --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 42ae46a22..08c3fb944 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "matplotlib", # Required for TriangleDisplay.heatmap() "dill", "patsy>=1.0.2", # 1.0.1 breaks on pandas 3 default str dtype (np.issubdtype on StringDtype) + "numba>=0.68.0 ; python_version >= '3.15'", ] [project.urls] From abd9d54ad6ab1d913a5821d3b736a86f3a0c2b48 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:33:16 -0700 Subject: [PATCH 04/24] Update pyproject.toml --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 08c3fb944..2ab1c67be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,7 @@ Repository = "https://github.com/casact/chainladder-python" [project.optional-dependencies] dev = [ "lxml", + "lxml>=0.7.0 ; python_version >= '3.15'", "pytest", "pytest-cov", "pytest-xdist", @@ -77,6 +78,7 @@ docs = [ ] test = [ "lxml", + "lxml>=0.7.0 ; python_version >= '3.15'", "nbmake", "pytest", "jinja2", From 164e7291bce29773d93583eaf0ffa56c1bef4e3c Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:45:53 -0700 Subject: [PATCH 05/24] Update pyproject.toml --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2ab1c67be..f1c576697 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ dependencies = [ "matplotlib", # Required for TriangleDisplay.heatmap() "dill", "patsy>=1.0.2", # 1.0.1 breaks on pandas 3 default str dtype (np.issubdtype on StringDtype) - "numba>=0.68.0 ; python_version >= '3.15'", + "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 ] [project.urls] @@ -49,7 +49,7 @@ Repository = "https://github.com/casact/chainladder-python" [project.optional-dependencies] dev = [ - "lxml", + "lxml ; python_version < '3.15'", "lxml>=0.7.0 ; python_version >= '3.15'", "pytest", "pytest-cov", @@ -77,7 +77,7 @@ docs = [ "statsmodels>=0.14.6" # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ - "lxml", + "lxml ; python_version < '3.15'", "lxml>=0.7.0 ; python_version >= '3.15'", "nbmake", "pytest", From 3e47b97a76409601ada75ac0c51aaf6cb2e0272e Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:58:49 -0700 Subject: [PATCH 06/24] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f1c576697..3c5defa71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ Repository = "https://github.com/casact/chainladder-python" [project.optional-dependencies] dev = [ "lxml ; python_version < '3.15'", - "lxml>=0.7.0 ; python_version >= '3.15'", + "lxml>=6.1.3 ; python_version >= '3.15'", "pytest", "pytest-cov", "pytest-xdist", @@ -78,7 +78,7 @@ docs = [ ] test = [ "lxml ; python_version < '3.15'", - "lxml>=0.7.0 ; python_version >= '3.15'", + "lxml>=6.1.3 ; python_version >= '3.15'", "nbmake", "pytest", "jinja2", From 6eed77c1c1b6ee661a1ea71b0e29880e5ce4b7fd Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:05:51 -0700 Subject: [PATCH 07/24] Update pyproject.toml --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3c5defa71..dbe019c1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,11 +33,13 @@ dependencies = [ "pandas >=2.3.3, !=3.0.4", "scikit-learn>1.4.2", "sparse>=0.18", + "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 "numpy>=2.0", "matplotlib", # Required for TriangleDisplay.heatmap() + "contourpy >= 1.4.0 ; python_version >= '3.15'", # Required for matplotlib "dill", "patsy>=1.0.2", # 1.0.1 breaks on pandas 3 default str dtype (np.issubdtype on StringDtype) - "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 + ] [project.urls] From c0b2e2b694bc264b518b027faca81b8a84f54dd3 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:11:24 -0700 Subject: [PATCH 08/24] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dbe019c1d..32fefc492 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,8 @@ classifiers = [ ] keywords = ["actuarial", "reserving", "insurance", "chainladder", "IBNR"] dependencies = [ - "pandas >=2.3.3, !=3.0.4", + "pandas >=2.3.3, !=3.0.4 ; python_version < '3.15'", + "pandas >=3.0.6 ; python_version >= '3.15'", "scikit-learn>1.4.2", "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 From fd8134d0ea1fb525569f95634baa29ba2d4f9690 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:17:52 -0700 Subject: [PATCH 09/24] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 32fefc492..895ff61eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,8 +36,8 @@ dependencies = [ "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 "numpy>=2.0", - "matplotlib", # Required for TriangleDisplay.heatmap() - "contourpy >= 1.4.0 ; python_version >= '3.15'", # Required for matplotlib + "matplotlib>=3.11.2", # Required for TriangleDisplay.heatmap() + "contourpy>=1.4.0 ; python_version >= '3.15'", # Required for matplotlib "dill", "patsy>=1.0.2", # 1.0.1 breaks on pandas 3 default str dtype (np.issubdtype on StringDtype) From 07946020dfaa97754f5e5fb08c5fe12e88f9f550 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:29:02 -0700 Subject: [PATCH 10/24] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 895ff61eb..24ef54fab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,8 @@ docs = [ "sphinx-rtd-theme", "nbsphinx", "numpydoc", - "jupyter-book<2.0", # Pin to v1.x - v2 doesn't support autodoc/autosummary yet + "jupyter-book<2.0 ; python_version < '3.15'", # Pin to v1.x - v2 doesn't support autodoc/autosummary yet + "jupyter-book>=2.0 ; python_version >= '3.15'", "sphinx-book-theme>=1.1.4,<1.2; python_version < '3.11'", "sphinx-book-theme>=1.2,<1.3; python_version >= '3.11'", "sphinx-togglebutton", From e3a197854d5f5d76920a74e1577eab9392842473 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:33:05 -0700 Subject: [PATCH 11/24] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 24ef54fab..aeaa56374 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,8 @@ dependencies = [ "scikit-learn>1.4.2", "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 - "numpy>=2.0", + "numpy>=2.0 ; python_version < '3.15'", + "numpy>=2.5.2 ; python_version >= '3.15'", "matplotlib>=3.11.2", # Required for TriangleDisplay.heatmap() "contourpy>=1.4.0 ; python_version >= '3.15'", # Required for matplotlib "dill", From 67cfcfeae7210bba289c32144551d8a66e385eef Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 20:58:01 -0700 Subject: [PATCH 12/24] Update pyproject.toml --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index aeaa56374..97381cb30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,8 +71,8 @@ docs = [ "sphinx-rtd-theme", "nbsphinx", "numpydoc", - "jupyter-book<2.0 ; python_version < '3.15'", # Pin to v1.x - v2 doesn't support autodoc/autosummary yet - "jupyter-book>=2.0 ; python_version >= '3.15'", + "jupyter-book<2.0", # Pin to v1.x - v2 doesn't support autodoc/autosummary yet + "rpds-py>=2026.5.1 ; python_version >= '3.15'", # needed by jupyter-book "sphinx-book-theme>=1.1.4,<1.2; python_version < '3.11'", "sphinx-book-theme>=1.2,<1.3; python_version >= '3.11'", "sphinx-togglebutton", @@ -85,6 +85,7 @@ test = [ "lxml ; python_version < '3.15'", "lxml>=6.1.3 ; python_version >= '3.15'", "nbmake", + "rpds-py>=2026.5.1 ; python_version >= '3.15'", # needed by nbmake "pytest", "jinja2", "ipython", From 42661fdbfd21e6cb3014ede6835a3e84115cac31 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 20:59:48 -0700 Subject: [PATCH 13/24] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 97381cb30..8e167534c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,8 @@ keywords = ["actuarial", "reserving", "insurance", "chainladder", "IBNR"] dependencies = [ "pandas >=2.3.3, !=3.0.4 ; python_version < '3.15'", "pandas >=3.0.6 ; python_version >= '3.15'", - "scikit-learn>1.4.2", + "scikit-learn>1.4.2 ; python_version < '3.15'", + "scikit-learn>=1.9.1 ; python_version >= '3.15'", "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 "numpy>=2.0 ; python_version < '3.15'", From 67df4b842ba39d7690a166f86dc5986ccd4288e0 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 21:09:50 -0700 Subject: [PATCH 14/24] Update pyproject.toml --- pyproject.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8e167534c..dfa4d13f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,7 +80,8 @@ docs = [ "ipython", "parso>=0.8", "polars", # For docs examples - "statsmodels>=0.14.6" # For docs example; <0.14.6 fails to import under pandas 3 + "statsmodels>=0.14.6 ; python_version < '3.15'" # For docs example; <0.14.6 fails to import under pandas 3 + "statsmodels>=0.15.0 ; python_version >= '3.15'" # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ "lxml ; python_version < '3.15'", @@ -94,7 +95,8 @@ test = [ "polars", "pyarrow", "dask", - 'statsmodels>=0.14.6' + "statsmodels>=0.14.6 ; python_version < '3.15'" + "statsmodels>=0.15.0 ; python_version >= '3.15'" ] performance = [ "dask", # For distributed computing From cf041c3f5fbe2cc936c89f814ba86a2ad60eba12 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 21:12:40 -0700 Subject: [PATCH 15/24] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index dfa4d13f6..da88adda8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,7 +80,7 @@ docs = [ "ipython", "parso>=0.8", "polars", # For docs examples - "statsmodels>=0.14.6 ; python_version < '3.15'" # For docs example; <0.14.6 fails to import under pandas 3 + "statsmodels>=0.14.6 ; python_version < '3.15'", # For docs example; <0.14.6 fails to import under pandas 3 "statsmodels>=0.15.0 ; python_version >= '3.15'" # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ @@ -95,7 +95,7 @@ test = [ "polars", "pyarrow", "dask", - "statsmodels>=0.14.6 ; python_version < '3.15'" + "statsmodels>=0.14.6 ; python_version < '3.15'". "statsmodels>=0.15.0 ; python_version >= '3.15'" ] performance = [ From e6f9e33deee6b1322fe2d6ba33c60ad7a30e6a7f Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 21:13:04 -0700 Subject: [PATCH 16/24] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index da88adda8..2f992d154 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,7 +95,7 @@ test = [ "polars", "pyarrow", "dask", - "statsmodels>=0.14.6 ; python_version < '3.15'". + "statsmodels>=0.14.6 ; python_version < '3.15'", "statsmodels>=0.15.0 ; python_version >= '3.15'" ] performance = [ From 4b632554c4f80668e01521af732f2c63ed934520 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 21:31:46 -0700 Subject: [PATCH 17/24] Update pyproject.toml --- pyproject.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2f992d154..a7d69367c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,8 +80,8 @@ docs = [ "ipython", "parso>=0.8", "polars", # For docs examples - "statsmodels>=0.14.6 ; python_version < '3.15'", # For docs example; <0.14.6 fails to import under pandas 3 - "statsmodels>=0.15.0 ; python_version >= '3.15'" # For docs example; <0.14.6 fails to import under pandas 3 + "statsmodels>=0.14.6", # For docs example; <0.14.6 fails to import under pandas 3 + "scipy>=0.18.1 ; python_version >= '3.15'" ] test = [ "lxml ; python_version < '3.15'", @@ -95,8 +95,8 @@ test = [ "polars", "pyarrow", "dask", - "statsmodels>=0.14.6 ; python_version < '3.15'", - "statsmodels>=0.15.0 ; python_version >= '3.15'" + "statsmodels>=0.14.6", + "scipy>=0.18.1 ; python_version >= '3.15'" ] performance = [ "dask", # For distributed computing From 98f4fb0af2f3d58fe36747442fab5c0e5165a4c2 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 21:34:44 -0700 Subject: [PATCH 18/24] Update pyproject.toml --- pyproject.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a7d69367c..2168815e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,8 +80,8 @@ docs = [ "ipython", "parso>=0.8", "polars", # For docs examples - "statsmodels>=0.14.6", # For docs example; <0.14.6 fails to import under pandas 3 - "scipy>=0.18.1 ; python_version >= '3.15'" + "scipy>=0.18.1 ; python_version >= '3.15'", + "statsmodels>=0.14.6" # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ "lxml ; python_version < '3.15'", @@ -95,8 +95,8 @@ test = [ "polars", "pyarrow", "dask", - "statsmodels>=0.14.6", - "scipy>=0.18.1 ; python_version >= '3.15'" + "scipy>=0.18.1 ; python_version >= '3.15'", + "statsmodels>=0.14.6" ] performance = [ "dask", # For distributed computing From 202ae71cd15cbcff80900a5c4dc5e99f60be1b77 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 22:10:26 -0700 Subject: [PATCH 19/24] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2168815e2..38f7c67c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,7 +80,7 @@ docs = [ "ipython", "parso>=0.8", "polars", # For docs examples - "scipy>=0.18.1 ; python_version >= '3.15'", + "scipy>=1.18.1 ; python_version >= '3.15'", "statsmodels>=0.14.6" # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ @@ -95,7 +95,7 @@ test = [ "polars", "pyarrow", "dask", - "scipy>=0.18.1 ; python_version >= '3.15'", + "scipy>=1.18.1 ; python_version >= '3.15'", "statsmodels>=0.14.6" ] performance = [ From 2ec10eef5eb01c7a961af8f461ff453829ca9c23 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 22:14:45 -0700 Subject: [PATCH 20/24] Update pyproject.toml --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 38f7c67c6..f3ad70c7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,6 @@ test = [ "ipython", "pytest-cov", # For coverage testing "polars", - "pyarrow", "dask", "scipy>=1.18.1 ; python_version >= '3.15'", "statsmodels>=0.14.6" From 003ac1048c1e3d123f21ed0bfe8d7edabad5a852 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Thu, 8 Oct 2026 22:23:07 -0700 Subject: [PATCH 21/24] Update pyproject.toml --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index f3ad70c7d..2d2158427 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,6 +93,8 @@ test = [ "ipython", "pytest-cov", # For coverage testing "polars", + "pyarrow ; python_version < '3.15'", + "pyarrow>=26.0.0 ; python_version >= '3.15'", "dask", "scipy>=1.18.1 ; python_version >= '3.15'", "statsmodels>=0.14.6" From 0eaea9b65c3c73d52a45b2674ab802d3fea29717 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Fri, 9 Oct 2026 23:37:55 -0700 Subject: [PATCH 22/24] Update base.py --- chainladder/core/base.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chainladder/core/base.py b/chainladder/core/base.py index ac89fc131..adf91389c 100644 --- a/chainladder/core/base.py +++ b/chainladder/core/base.py @@ -699,7 +699,9 @@ def valuation(self): val_array = val_array[:, None] s = slice(None, -1) if ddims[-1] == 9999 else slice(None, None) val_array = ( - val_array.astype("datetime64[M]") + ddim_arr[s][None, :] + 1 + val_array.astype("datetime64[M]") + + ddim_arr[s][None, :].astype("timedelta64[M]") + + np.timedelta64(1, "M") ).astype(__dt64_dtype__) - np.timedelta64(1, __dt64_unit__) if ddims[-1] == 9999: ult = np.repeat(np.datetime64(options.ULT_VAL), val_array.shape[0])[:, None] From 00a7053bb7a981ded73c47f64998942adc859091 Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Fri, 9 Oct 2026 23:55:57 -0700 Subject: [PATCH 23/24] Update pyproject.toml --- pyproject.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2d2158427..bb2f195c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,17 +32,17 @@ keywords = ["actuarial", "reserving", "insurance", "chainladder", "IBNR"] dependencies = [ "pandas >=2.3.3, !=3.0.4 ; python_version < '3.15'", "pandas >=3.0.6 ; python_version >= '3.15'", - "scikit-learn>1.4.2 ; python_version < '3.15'", + "scikit-learn>1.7.0 ; python_version < '3.15'", "scikit-learn>=1.9.1 ; python_version >= '3.15'", "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15 - "numpy>=2.0 ; python_version < '3.15'", + "numpy>=2.3 ; python_version < '3.15'", "numpy>=2.5.2 ; python_version >= '3.15'", - "matplotlib>=3.11.2", # Required for TriangleDisplay.heatmap() + "matplotlib ; python_version < '3.15'", # Required for TriangleDisplay.heatmap() + "matplotlib>=3.11.2 ; python_version >= '3.15'", "contourpy>=1.4.0 ; python_version >= '3.15'", # Required for matplotlib "dill", "patsy>=1.0.2", # 1.0.1 breaks on pandas 3 default str dtype (np.issubdtype on StringDtype) - ] [project.urls] @@ -81,7 +81,7 @@ docs = [ "parso>=0.8", "polars", # For docs examples "scipy>=1.18.1 ; python_version >= '3.15'", - "statsmodels>=0.14.6" # For docs example; <0.14.6 fails to import under pandas 3 + "statsmodels>=0.14.6", # For docs example; <0.14.6 fails to import under pandas 3 ] test = [ "lxml ; python_version < '3.15'", @@ -97,7 +97,7 @@ test = [ "pyarrow>=26.0.0 ; python_version >= '3.15'", "dask", "scipy>=1.18.1 ; python_version >= '3.15'", - "statsmodels>=0.14.6" + "statsmodels>=0.14.6", ] performance = [ "dask", # For distributed computing From 1f6823ce408fe45caf6901e406aa358655d219dc Mon Sep 17 00:00:00 2001 From: henrydingliu <106109320+henrydingliu@users.noreply.github.com> Date: Sat, 10 Oct 2026 00:02:32 -0700 Subject: [PATCH 24/24] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index bb2f195c2..fcc67a87b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ keywords = ["actuarial", "reserving", "insurance", "chainladder", "IBNR"] dependencies = [ "pandas >=2.3.3, !=3.0.4 ; python_version < '3.15'", "pandas >=3.0.6 ; python_version >= '3.15'", - "scikit-learn>1.7.0 ; python_version < '3.15'", + "scikit-learn>=1.7.0 ; python_version < '3.15'", "scikit-learn>=1.9.1 ; python_version >= '3.15'", "sparse>=0.18", "numba>=0.68.0 ; python_version >= '3.15'", # numba is needed for sparse. however, sparse does not have a version that officially support python 3.15