From e3d4a28a668944fa4373d6b38c8e221663c9b085 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:42:27 +0300 Subject: [PATCH 01/13] Improve package metadata --- pyproject.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 1c64a582..84531dda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,29 @@ name = "rtichoke" version = "0.1.35" description = "interactive visualizations for performance of predictive models" readme = "README.md" +keywords = [ + "prediction", + "model-performance", + "calibration", + "roc", + "survival-analysis", + "competing-risks", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Science/Research", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Topic :: Scientific/Engineering", +] + +[project.urls] +Documentation = "https://uriahf.github.io/rtichoke_python/" +Source = "https://github.com/uriahf/rtichoke_python" +Issues = "https://github.com/uriahf/rtichoke_python/issues" +Changelog = "https://github.com/uriahf/rtichoke_python/blob/main/CHANGELOG.md" [dependency-groups] dev = [ From 0888fc38eae4e030c962e109bb59d0ac9e281fe4 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:46:35 +0300 Subject: [PATCH 02/13] Add rtichoke ecosystem links to package metadata --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 84531dda..75424c20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,9 @@ classifiers = [ [project.urls] Documentation = "https://uriahf.github.io/rtichoke_python/" +"Python Tutorials" = "https://uriahf.github.io/rtichoke_blog_python/" +"R Package" = "https://github.com/uriahf/rtichoke" +"R Tutorials" = "https://rtichoke-blog.netlify.app/" Source = "https://github.com/uriahf/rtichoke_python" Issues = "https://github.com/uriahf/rtichoke_python/issues" Changelog = "https://github.com/uriahf/rtichoke_python/blob/main/CHANGELOG.md" From 326461e029dd004261cf720bcbff7c5d683b322a Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:49:01 +0300 Subject: [PATCH 03/13] Point R tutorials metadata to posts index --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 75424c20..57f8640c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ classifiers = [ Documentation = "https://uriahf.github.io/rtichoke_python/" "Python Tutorials" = "https://uriahf.github.io/rtichoke_blog_python/" "R Package" = "https://github.com/uriahf/rtichoke" -"R Tutorials" = "https://rtichoke-blog.netlify.app/" +"R Tutorials" = "https://rtichoke-blog.netlify.app/posts" Source = "https://github.com/uriahf/rtichoke_python" Issues = "https://github.com/uriahf/rtichoke_python/issues" Changelog = "https://github.com/uriahf/rtichoke_python/blob/main/CHANGELOG.md" From f2f975b9db1ddfca7b1b99989725ab6f13261e58 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:57:47 +0300 Subject: [PATCH 04/13] Bump version to 0.1.36 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 57f8640c..f8a4c7b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "great-tables>=0.18.0", ] name = "rtichoke" -version = "0.1.35" +version = "0.1.36" description = "interactive visualizations for performance of predictive models" readme = "README.md" keywords = [ From c2d87df5dfa1ab9327384b9fd97c84c384ab4b41 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:57:59 +0300 Subject: [PATCH 05/13] Add 0.1.36 changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16136bec..aee483c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ +## v0.1.36 (21/08/2026) + +- Fixed several binary and time-dependent curve consistency issues, including cutoff-grid endpoints, binary cutoff equality, time-dependent reference prevalence, gains perfect-reference behavior, custom colors, and plot sizing. +- Added stricter validation for probability/outcome domains and multi-population input alignment, and made binary/time-dependent performance-data ordering and column schemas deterministic. +- Updated time-dependent calibration defaults to use the adjusted-censoring / competing-as-negative heuristic set when omitted, while rejecting ambiguous multiple heuristic sets. +- Moved secondary-Cox and LOWESS calibration smoothing onto `smoothstate`, removing obsolete runtime dependencies including `statsmodels`, `pandas`, `pyarrow`, `typing`, and runtime `marimo`. +- Added Plotly 6 support and raised the supported Python range to 3.12–3.14, with CI now enforcing Ruff lint/formatting and `ty` type checking across the supported interpreters. +- Improved package metadata and project links, and upgraded the documentation toolchain to Great Docs 0.15.0. + ## v0.1.33 - Extended `smooth_method="secondary_cox"` in `create_calibration_curve_times` to use 3-knot restricted cubic splines (RCS) on complementary log-log predictions. From aec303e8011b0c8810ea7847edc4cc57ac3d06b1 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 02:58:04 +0300 Subject: [PATCH 06/13] Trigger 0.1.36 release --- .github/release-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/release-version b/.github/release-version index a52e0416..072d0fa3 100644 --- a/.github/release-version +++ b/.github/release-version @@ -1 +1 @@ -0.1.35 +0.1.36 From e6eb6d554b588e1722d14404588c7da4f18d9735 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:19:11 +0300 Subject: [PATCH 07/13] Temporarily refresh release lockfile --- .github/workflows/refresh-lock-temp.yml | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/refresh-lock-temp.yml diff --git a/.github/workflows/refresh-lock-temp.yml b/.github/workflows/refresh-lock-temp.yml new file mode 100644 index 00000000..ae07a6bd --- /dev/null +++ b/.github/workflows/refresh-lock-temp.yml @@ -0,0 +1,37 @@ +name: Refresh release lockfile + +on: + push: + branches: [chore/sync-lock-0.1.36] + paths: + - .github/workflows/refresh-lock-temp.yml + +permissions: + contents: write + +jobs: + refresh: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: chore/sync-lock-0.1.36 + - uses: astral-sh/setup-uv@v5 + with: + python-version: "3.12" + - name: Refresh lockfile + run: uv lock + - name: Verify scope + shell: bash + run: | + changed=$(git diff --name-only) + test "$changed" = "uv.lock" + git diff -- uv.lock + - name: Commit refreshed lockfile + shell: bash + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add uv.lock + git commit -m "Refresh lockfile for 0.1.36" + git push origin HEAD:chore/sync-lock-0.1.36 From 27d1cab40ffb5fd640528a6e06668c73bc28ac3b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 00:19:22 +0000 Subject: [PATCH 08/13] Refresh lockfile for 0.1.36 --- uv.lock | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/uv.lock b/uv.lock index 9cccc94d..14353270 100644 --- a/uv.lock +++ b/uv.lock @@ -688,7 +688,7 @@ wheels = [ [[package]] name = "great-docs" -version = "0.17.0" +version = "0.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -697,13 +697,12 @@ dependencies = [ { name = "pillow" }, { name = "py-yaml12" }, { name = "pygments" }, - { name = "python-dotenv" }, { name = "requests" }, { name = "ruff" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/aa/99/d0573f286f3179efe9f3f819bc686e3f2a3c570d3643cb1f1c8979b7a5fc/great_docs-0.17.0.tar.gz", hash = "sha256:98e5408ba1e64a3c8b08a6f6619e2b2d1a83d509b8f97d1477030e3112f6948d", size = 31422143, upload-time = "2026-08-13T15:23:59.668Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/37/3466f0064353554c5be4a70e29e946dac090c1ad614b00447148d86d22f2/great_docs-0.15.0.tar.gz", hash = "sha256:2fd4c8843723c913b70960aaaf4ccf23c0b0c54aa59cb856422363dd5d54baf1", size = 31035297, upload-time = "2026-07-10T18:31:02.618Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/88/f6f5ebd572ddf532021b87d719765b0ce59fb99dd12f6d1b25ba93ae7380/great_docs-0.17.0-py3-none-any.whl", hash = "sha256:3d2e715ca7aa3cbbf7ff47a2987dd9c65510d920ceefb793c200eb3ed509e550", size = 1034889, upload-time = "2026-08-13T15:23:57.227Z" }, + { url = "https://files.pythonhosted.org/packages/6f/dd/c7460a23ae0a2483c6fd320bfd600dbc0ca802f4be0823cc8a775ad5c18e/great_docs-0.15.0-py3-none-any.whl", hash = "sha256:98ad7d9140fc90328db0638e16d6004e29717b372e063ca9cb38568662829a91", size = 980201, upload-time = "2026-07-10T18:31:00.767Z" }, ] [[package]] @@ -2288,15 +2287,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] -[[package]] -name = "python-dotenv" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, -] - [[package]] name = "python-json-logger" version = "4.0.0" @@ -2578,7 +2568,7 @@ wheels = [ [[package]] name = "rtichoke" -version = "0.1.35" +version = "0.1.36" source = { editable = "." } dependencies = [ { name = "great-tables" }, @@ -2635,7 +2625,7 @@ dev = [ { name = "ty", specifier = ">=0.0.1a12" }, { name = "uv", specifier = ">=0.6.11" }, ] -docs = [{ name = "great-docs", marker = "python_full_version >= '3.12'" }] +docs = [{ name = "great-docs", marker = "python_full_version >= '3.12'", specifier = "==0.15.0" }] [[package]] name = "ruff" From efeaa468ddece6b09898b2d8635b135400ce1f77 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:20:02 +0300 Subject: [PATCH 09/13] Remove temporary lock refresh workflow --- .github/workflows/refresh-lock-temp.yml | 37 ------------------------- 1 file changed, 37 deletions(-) delete mode 100644 .github/workflows/refresh-lock-temp.yml diff --git a/.github/workflows/refresh-lock-temp.yml b/.github/workflows/refresh-lock-temp.yml deleted file mode 100644 index ae07a6bd..00000000 --- a/.github/workflows/refresh-lock-temp.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Refresh release lockfile - -on: - push: - branches: [chore/sync-lock-0.1.36] - paths: - - .github/workflows/refresh-lock-temp.yml - -permissions: - contents: write - -jobs: - refresh: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: chore/sync-lock-0.1.36 - - uses: astral-sh/setup-uv@v5 - with: - python-version: "3.12" - - name: Refresh lockfile - run: uv lock - - name: Verify scope - shell: bash - run: | - changed=$(git diff --name-only) - test "$changed" = "uv.lock" - git diff -- uv.lock - - name: Commit refreshed lockfile - shell: bash - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add uv.lock - git commit -m "Refresh lockfile for 0.1.36" - git push origin HEAD:chore/sync-lock-0.1.36 From b83b61054db41881e6e9640af264c45dcfc48fff Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:20:12 +0300 Subject: [PATCH 10/13] Trigger final lock sync PR state --- .github/lock-sync-note.tmp | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/lock-sync-note.tmp diff --git a/.github/lock-sync-note.tmp b/.github/lock-sync-note.tmp new file mode 100644 index 00000000..ed041f1e --- /dev/null +++ b/.github/lock-sync-note.tmp @@ -0,0 +1 @@ +temporary From e99a3d4c18e6b8708621c58041117491388e709f Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:20:21 +0300 Subject: [PATCH 11/13] Remove temporary lock sync note --- .github/lock-sync-note.tmp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/lock-sync-note.tmp diff --git a/.github/lock-sync-note.tmp b/.github/lock-sync-note.tmp deleted file mode 100644 index ed041f1e..00000000 --- a/.github/lock-sync-note.tmp +++ /dev/null @@ -1 +0,0 @@ -temporary From 1dc17d3b20db48da3a65d5228cc028373f52caf1 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:20:25 +0300 Subject: [PATCH 12/13] noop --- .github/lock-sync-trigger.tmp | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/lock-sync-trigger.tmp diff --git a/.github/lock-sync-trigger.tmp b/.github/lock-sync-trigger.tmp new file mode 100644 index 00000000..e804f19a --- /dev/null +++ b/.github/lock-sync-trigger.tmp @@ -0,0 +1 @@ +noop From 6ab02d28f6d77dd39e21187b6996f5dd2d7f02ee Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Fri, 21 Aug 2026 03:20:32 +0300 Subject: [PATCH 13/13] Remove no-op trigger --- .github/lock-sync-trigger.tmp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/lock-sync-trigger.tmp diff --git a/.github/lock-sync-trigger.tmp b/.github/lock-sync-trigger.tmp deleted file mode 100644 index e804f19a..00000000 --- a/.github/lock-sync-trigger.tmp +++ /dev/null @@ -1 +0,0 @@ -noop