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 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. diff --git a/pyproject.toml b/pyproject.toml index 1c64a582..f8a4c7b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,9 +13,35 @@ 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 = [ + "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/" +"Python Tutorials" = "https://uriahf.github.io/rtichoke_blog_python/" +"R Package" = "https://github.com/uriahf/rtichoke" +"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" [dependency-groups] dev = [ 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"