From 9e2dd4e29954e6581b0f22b2c6c358b76f5be073 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 23 Aug 2026 06:04:29 +0300 Subject: [PATCH 1/3] Add rtichoke_viz renderer selection for gains --- pyproject.toml | 3 + src/rtichoke/_renderers.py | 171 ++ .../_vendor/rtichoke_viz/VENDORED_FROM | 9 +- .../rtichoke_viz/rtichoke-viz-0.3.0.tar.gz | Bin 0 -> 148642 bytes .../rtichoke_viz/rtichoke-viz-v2.schema.json | 1429 +++++++++++++++-- .../_vendor/rtichoke_viz/rtichoke-viz.js | 194 ++- src/rtichoke/discrimination/gains.py | 38 +- tests/test_gains_renderers.py | 70 + tests/test_rtichoke_viz_vendor.py | 32 +- uv.lock | 7 + 10 files changed, 1696 insertions(+), 257 deletions(-) create mode 100644 src/rtichoke/_renderers.py create mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.3.0.tar.gz create mode 100644 tests/test_gains_renderers.py diff --git a/pyproject.toml b/pyproject.toml index f8a4c7b2..2c946a74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,9 @@ classifiers = [ "Topic :: Scientific/Engineering", ] +[project.optional-dependencies] +matplotlib = ["matplotlib>=3.9.0"] + [project.urls] Documentation = "https://uriahf.github.io/rtichoke_python/" "Python Tutorials" = "https://uriahf.github.io/rtichoke_blog_python/" diff --git a/src/rtichoke/_renderers.py b/src/rtichoke/_renderers.py new file mode 100644 index 00000000..983da1cf --- /dev/null +++ b/src/rtichoke/_renderers.py @@ -0,0 +1,171 @@ +"""Renderer selection for canonical rtichoke visualization specifications.""" + +from __future__ import annotations + +import json +from dataclasses import dataclass +from importlib.resources import files +from pathlib import Path +from typing import Any, Literal + +Renderer = Literal["plotly", "matplotlib", "browser", "rtichoke_viz"] + +_SUPPORTED_RENDERERS = ("plotly", "matplotlib", "browser", "rtichoke_viz") + + +def _validate_renderer(renderer: str) -> Renderer: + """Validate and normalize a public renderer name.""" + if renderer not in _SUPPORTED_RENDERERS: + supported = ", ".join(repr(name) for name in _SUPPORTED_RENDERERS) + raise ValueError( + f"Unsupported renderer {renderer!r}. Supported renderers are: {supported}." + ) + return renderer # type: ignore[return-value] + + +@dataclass(frozen=True) +class RtichokeBrowserChart: + """A canonical v2 chart that can be written for offline browser rendering.""" + + spec: dict[str, Any] + size: int = 600 + + def write_html(self, path: str | Path) -> Path: + """Write an offline HTML page plus its packaged renderer assets. + + Parameters + ---------- + path : str or pathlib.Path + Destination for the HTML page. + + Returns + ------- + pathlib.Path + The written HTML path. + """ + output = Path(path) + output.parent.mkdir(parents=True, exist_ok=True) + vendor = files("rtichoke").joinpath("_vendor", "rtichoke_viz") + for asset in ("rtichoke-viz.js", "rtichoke-viz.css"): + (output.parent / asset).write_bytes(vendor.joinpath(asset).read_bytes()) + + render_export = { + "roc": "renderRocV2", + "calibration": "renderCalibrationV2", + "precision_recall": "renderPrecisionRecallV2", + "gains": "renderGainsV2", + }.get(str(self.spec.get("type"))) + if render_export is None: + raise ValueError( + f"rtichoke_viz does not support chart type {self.spec.get('type')!r}." + ) + + spec_json = json.dumps(self.spec, separators=(",", ":")).replace(" + + + + + + rtichoke {self.spec.get("type")} chart + + +
+ + + + +""" + output.write_text(html, encoding="utf-8") + return output + + +def _render_gains_matplotlib( + spec: dict[str, Any], *, size: int, color_values: list[str] +) -> Any: + """Render canonical gains quantities with an optional Matplotlib backend.""" + try: + from matplotlib.figure import Figure + except ImportError as error: + raise ImportError( + "The 'matplotlib' renderer requires the optional matplotlib dependency. " + "Install it with `pip install 'rtichoke[matplotlib]'`." + ) from error + + figure = Figure(figsize=(size / 100, size / 100), dpi=100) + axis = figure.subplots() + references = spec.get("references", []) + assert isinstance(references, list) + for reference in references: + if not isinstance(reference, dict): + continue + if reference.get("type") == "identity": + x_values, y_values = [0, 1], [0, 1] + elif reference.get("type") == "path": + points = reference.get("points", []) + x_values = [point["x"] for point in points] + y_values = [point["y"] for point in points] + else: + continue + axis.plot( + x_values, + y_values, + color="#BEBEBE", + linestyle="--", + linewidth=2, + ) + + series = spec.get("series", []) + data = spec.get("data", []) + assert isinstance(series, list) and isinstance(data, list) + display_groups = list(dict.fromkeys(item["display"]["group"] for item in series)) + colors = { + group: ( + "black" + if len(display_groups) == 1 + else color_values[index % len(color_values)] + ) + for index, group in enumerate(display_groups) + } + for item in series: + rows = [row for row in data if row["seriesId"] == item["id"]] + display = item["display"] + axis.plot( + [row["ppcr"] for row in rows], + [row["sensitivity"] for row in rows], + label=display["label"], + color=colors[display["group"]], + linewidth=2, + ) + + x_axis = spec["xAxis"] + y_axis = spec["yAxis"] + axis.set_xlabel(x_axis["label"]) + axis.set_ylabel(y_axis["label"]) + axis.set_xlim(*x_axis["domain"]) + axis.set_ylim(*y_axis["domain"]) + if len(series) > 1: + axis.legend() + figure.tight_layout() + return figure + + +def _render_gains_v2( + spec: dict[str, Any], + *, + renderer: str, + size: int, + color_values: list[str], +) -> Any: + """Render a canonical gains v2 spec with a non-default backend.""" + selected = _validate_renderer(renderer) + if selected == "matplotlib": + return _render_gains_matplotlib(spec, size=size, color_values=color_values) + if selected in {"browser", "rtichoke_viz"}: + return RtichokeBrowserChart(spec=spec, size=size) + raise ValueError("The Plotly renderer must use the existing production path.") diff --git a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM index 8407263a..df5ec55d 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM +++ b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM @@ -1,6 +1,5 @@ repository=https://github.com/uriahf/rtichoke_viz -release=v0.2.0 -source_commit=45dc109a6a0679d0f8f3f9452d8de9306a89b906 -archive=rtichoke-viz-0.2.0.tar.gz -sha256=3861277c01b3983f8b344a9ee0237c7d09fd0ba4c3d1e0cce489962e7b559d9f -checksum=rtichoke-viz-0.2.0.tar.gz.sha256 +release=v0.3.0 +source_commit=aca9188ea856167557efb20980a0b43e0481b8c8 +archive=rtichoke-viz-0.3.0.tar.gz +sha256=558f8d9e16f9544659b84e33f72511065163291a1b97a3c5511b61d1e1f0cac1 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.3.0.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.3.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4962a38637e9a70995190042d2f204c7545cc72f GIT binary patch literal 148642 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 z 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 z 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 xv_0VX&T7m&%&Uw2f$q5M8#(V$$!B8Dy`s [series.id, series.display])); } @@ -18616,31 +18666,39 @@ function seriesRenderData(spec, data) { label: displays.get(datum2.seriesId).label })); } +function referenceMarks(spec) { + const marks2 = []; + for (const reference of spec.references ?? []) { + if (reference.type === "identity") { + marks2.push(line([{ x: 0, y: 0 }, { x: 1, y: 1 }], { + x: "x", + y: "y", + stroke: "#BEBEBE", + strokeWidth: 2, + strokeDasharray: "4,4" + })); + } else if (reference.type === "path" && reference.points) { + marks2.push(line(reference.points, { + x: "x", + y: "y", + stroke: "#BEBEBE", + strokeWidth: 2, + strokeDasharray: "4,4" + })); + } + } + return marks2; +} function renderRocV2(spec) { assertV2ReferentialIntegrity(spec); const groups2 = [...new Set(spec.series.map((series) => series.display.group))]; const showLegend = groups2.length > 1; - const data = seriesRenderData(spec, spec.data).map((datum2) => ({ - ...datum2, - false_positive_rate: 1 - datum2.specificity - })); + const data = seriesRenderData(spec, spec.data).map((datum2) => ({ ...datum2, false_positive_rate: 1 - datum2.specificity })); const marks2 = []; if (spec.references?.some((reference) => reference.type === "identity")) { - marks2.push(line([{ x: 0, y: 0 }, { x: 1, y: 1 }], { - x: "x", - y: "y", - stroke: "#BEBEBE", - strokeWidth: 2 - })); + marks2.push(line([{ x: 0, y: 0 }, { x: 1, y: 1 }], { x: "x", y: "y", stroke: "#BEBEBE", strokeWidth: 2 })); } - marks2.push(line(data, { - x: "false_positive_rate", - y: "sensitivity", - z: "seriesId", - stroke: "group", - strokeWidth: 2, - tip: true - })); + marks2.push(line(data, { x: "false_positive_rate", y: "sensitivity", z: "seriesId", stroke: "group", strokeWidth: 2, tip: true })); return plot({ width: 600, height: 600, @@ -18661,34 +18719,11 @@ function renderCalibrationV2(spec) { const data = seriesRenderData(spec, spec.data); const marks2 = []; if (spec.references?.some((reference) => reference.type === "identity")) { - marks2.push(line([{ x: 0, y: 0 }, { x: 1, y: 1 }], { - x: "x", - y: "y", - stroke: "#BEBEBE", - strokeWidth: 2, - strokeDasharray: "4,4" - })); + marks2.push(line([{ x: 0, y: 0 }, { x: 1, y: 1 }], { x: "x", y: "y", stroke: "#BEBEBE", strokeWidth: 2, strokeDasharray: "4,4" })); } - marks2.push(line(data, { - x: "predicted", - y: "observed", - z: "seriesId", - stroke: "group", - strokeWidth: 2, - tip: true - })); + marks2.push(line(data, { x: "predicted", y: "observed", z: "seriesId", stroke: "group", strokeWidth: 2, tip: true })); const discrete = data.filter((datum2) => datum2.method === "discrete"); - if (discrete.length > 0) { - marks2.push(dot(discrete, { - x: "predicted", - y: "observed", - fill: "group", - stroke: "white", - strokeWidth: 1.5, - r: 5, - tip: true - })); - } + if (discrete.length > 0) marks2.push(dot(discrete, { x: "predicted", y: "observed", fill: "group", stroke: "white", strokeWidth: 1.5, r: 5, tip: true })); const hasDistribution = (spec.distribution?.length ?? 0) > 0; const calibration = plot({ width: 600, @@ -18713,14 +18748,7 @@ function renderCalibrationV2(spec) { x: { label: spec.xAxis.label, domain: spec.xAxis.domain, grid: false, ticks: 6 }, y: { label: null, grid: false, ticks: 3 }, color: { legend: false, range: colorRange }, - marks: [rectY(distribution, { - x1: (datum2) => datum2.midpoint - datum2.binWidth / 2, - x2: (datum2) => datum2.midpoint + datum2.binWidth / 2, - y: "count", - fill: "group", - fillOpacity: 1 / Math.max(groups2.length, 1), - tip: true - })] + marks: [rectY(distribution, { x1: (datum2) => datum2.midpoint - datum2.binWidth / 2, x2: (datum2) => datum2.midpoint + datum2.binWidth / 2, y: "count", fill: "group", fillOpacity: 1 / Math.max(groups2.length, 1), tip: true })] }); const container = document.createElement("div"); container.style.width = "600px"; @@ -18734,22 +18762,9 @@ function renderPrecisionRecallV2(spec) { const showLegend = groups2.length > 1; const data = seriesRenderData(spec, spec.data); const marks2 = []; - for (const reference of spec.references ?? []) { - if (reference.type !== "horizontal" || reference.value === void 0) continue; - marks2.push(ruleY([reference.value], { - stroke: "#BEBEBE", - strokeWidth: 2, - strokeDasharray: "4,4" - })); - } - marks2.push(line(data, { - x: "sensitivity", - y: "ppv", - z: "seriesId", - stroke: "group", - strokeWidth: 2, - tip: true - })); + for (const reference of spec.references ?? []) if (reference.type === "horizontal" && reference.value !== void 0) marks2.push(ruleY([reference.value], { stroke: "#BEBEBE", strokeWidth: 2, strokeDasharray: "4,4" })); + marks2.push(line(data, { x: "sensitivity", y: "ppv", z: "seriesId", stroke: "group", strokeWidth: 2, tip: true })); + marks2.push(dot(data, { x: "sensitivity", y: "ppv", fill: "group", stroke: "white", strokeWidth: 1.5, r: 4, tip: true })); return plot({ width: 600, height: 600, @@ -18758,7 +18773,28 @@ function renderPrecisionRecallV2(spec) { style: BASE_STYLE2, x: { label: spec.xAxis.label, domain: spec.xAxis.domain, grid: false, ticks: 6 }, y: { label: spec.yAxis.label, domain: spec.yAxis.domain, grid: false, ticks: 6 }, - color: { legend: showLegend, range: showLegend ? RTICHOKE_COLORS3 : ["#000000"] }, + color: { legend: showLegend, domain: groups2, range: showLegend ? RTICHOKE_COLORS3 : ["#000000"] }, + marks: marks2 + }); +} +function renderGainsV2(spec, options = {}) { + assertV2ReferentialIntegrity(spec); + const groups2 = [...new Set(spec.series.map((series) => series.display.group))]; + const showLegend = groups2.length > 1; + const resolved = resolveV2RenderOptions(groups2.length, options); + const data = seriesRenderData(spec, spec.data); + const marks2 = referenceMarks(spec); + marks2.push(line(data, { x: "ppcr", y: "sensitivity", z: "seriesId", stroke: "group", strokeWidth: 2, tip: true })); + marks2.push(dot(data, { x: "ppcr", y: "sensitivity", fill: "group", stroke: "white", strokeWidth: 1.5, r: 4, tip: true })); + return plot({ + width: resolved.width, + height: resolved.height, + marginLeft: 64, + marginBottom: 56, + style: BASE_STYLE2, + x: { label: spec.xAxis.label, domain: spec.xAxis.domain, grid: false, ticks: 6 }, + y: { label: spec.yAxis.label, domain: spec.yAxis.domain, grid: false, ticks: 6 }, + color: { legend: showLegend, domain: groups2, range: resolved.colors }, marks: marks2 }); } @@ -18768,6 +18804,7 @@ export { DisplayGroupingSpecSchema, DisplayRoleSchema, EvaluationSpecSchema, + GainsV2SpecSchema, PrecisionRecallV2SpecSchema, ReferenceLineV2SpecSchema, RocSpecSchema, @@ -18780,6 +18817,7 @@ export { calibrationV2SpecFromRtichokeRows, renderCalibration, renderCalibrationV2, + renderGainsV2, renderPrecisionRecallV2, renderRoc, renderRocV2, diff --git a/src/rtichoke/discrimination/gains.py b/src/rtichoke/discrimination/gains.py index cb131d8a..40a0fd16 100644 --- a/src/rtichoke/discrimination/gains.py +++ b/src/rtichoke/discrimination/gains.py @@ -2,7 +2,7 @@ A module for Gains Curves using Plotly helpers """ -from typing import Dict, List, Sequence, Union +from typing import Any, Dict, List, Sequence, Union from plotly.graph_objs._figure import Figure from rtichoke.processing.binary_color_values import _apply_color_values_binary from rtichoke.processing.plotly_helper_functions import ( @@ -16,6 +16,10 @@ ) import numpy as np import polars as pl +from rtichoke._renderers import _render_gains_v2, _validate_renderer +from rtichoke._viz_spec_v2 import _gains_v2_spec_from_performance_data +from rtichoke.performance_data.performance_data import prepare_performance_data +from rtichoke.processing.evaluation_semantics import _build_evaluation_metadata def _get_gains_aj_estimates_times(performance_data: pl.DataFrame) -> pl.DataFrame: @@ -90,7 +94,8 @@ def create_gains_curve( "#D1603D", "#585123", ], -) -> Figure: + renderer: str = "plotly", +) -> Any: """Creates a Gains curve. A Gains curve is a marketing and business analytics tool that evaluates @@ -113,12 +118,37 @@ def create_gains_curve( The width and height of the plot in pixels. Defaults to 600. color_values : List[str], optional A list of hex color strings for the plot lines. + renderer : {"plotly", "matplotlib", "browser", "rtichoke_viz"}, optional + Rendering backend. The default, ``"plotly"``, preserves the existing + return value and behavior. ``"matplotlib"`` requires the optional + Matplotlib dependency. ``"browser"`` and its ``"rtichoke_viz"`` alias + return an offline browser chart backed by the packaged TypeScript bundle. Returns ------- - Figure - A Plotly ``Figure`` object representing the Gains curve. + Figure or RtichokeBrowserChart + A Plotly or Matplotlib figure, or an offline browser chart, depending + on ``renderer``. """ + selected_renderer = _validate_renderer(renderer) + if selected_renderer != "plotly": + performance_data = prepare_performance_data( + probs=probs, + reals=reals, + stratified_by=stratified_by, + by=by, + ) + evaluation_metadata = _build_evaluation_metadata(probs, reals, np.array([])) + spec = _gains_v2_spec_from_performance_data( + performance_data, evaluation_metadata + ) + return _render_gains_v2( + spec, + renderer=selected_renderer, + size=size, + color_values=color_values, + ) + fig = _create_rtichoke_plotly_curve_binary( probs, reals, diff --git a/tests/test_gains_renderers.py b/tests/test_gains_renderers.py new file mode 100644 index 00000000..8acaafc4 --- /dev/null +++ b/tests/test_gains_renderers.py @@ -0,0 +1,70 @@ +from pathlib import Path + +import matplotlib.figure +import numpy as np +import plotly.graph_objects as go +import plotly.io as pio +import pytest + +from rtichoke import create_gains_curve +from rtichoke._renderers import RtichokeBrowserChart + + +def _inputs(): + return ( + { + "Model A": np.array([0.05, 0.2, 0.7, 0.95]), + "Model B": np.array([0.1, 0.4, 0.6, 0.9]), + }, + np.array([0, 0, 1, 1]), + ) + + +def test_default_and_explicit_plotly_preserve_existing_renderer(): + probs, reals = _inputs() + + default = create_gains_curve(probs, reals, by=0.25) + explicit = create_gains_curve(probs, reals, by=0.25, renderer="plotly") + + assert isinstance(default, go.Figure) + assert pio.to_json(default) == pio.to_json(explicit) + + +def test_matplotlib_renders_canonical_gains_spec(): + probs, reals = _inputs() + + figure = create_gains_curve(probs, reals, by=0.25, renderer="matplotlib") + + assert isinstance(figure, matplotlib.figure.Figure) + assert len(figure.axes[0].lines) == 4 # random, perfect, and two series + assert figure.axes[0].get_xlabel() == "Predicted Positives (Rate)" + + +@pytest.mark.parametrize("renderer", ["browser", "rtichoke_viz"]) +def test_browser_renderer_writes_offline_v2_chart(renderer: str, tmp_path: Path): + probs, reals = _inputs() + + chart = create_gains_curve(probs, reals, by=0.25, renderer=renderer) + assert isinstance(chart, RtichokeBrowserChart) + assert chart.spec["schemaVersion"] == "2.0" + assert chart.spec["type"] == "gains" + assert len(chart.spec["evaluations"]) == 2 + assert {row["seriesId"] for row in chart.spec["data"]} == { + "series-1", + "series-2", + } + + output = chart.write_html(tmp_path / "gains.html") + html = output.read_text(encoding="utf-8") + assert 'import { renderGainsV2 } from "./rtichoke-viz.js"' in html + assert '"schemaVersion":"2.0"' in html + assert (tmp_path / "rtichoke-viz.js").is_file() + assert (tmp_path / "rtichoke-viz.css").is_file() + assert "http://" not in html and "https://" not in html + + +def test_unsupported_renderer_is_clear(): + probs, reals = _inputs() + + with pytest.raises(ValueError, match="Unsupported renderer 'canvas'"): + create_gains_curve(probs, reals, renderer="canvas") diff --git a/tests/test_rtichoke_viz_vendor.py b/tests/test_rtichoke_viz_vendor.py index ce36ad7f..aa069e3c 100644 --- a/tests/test_rtichoke_viz_vendor.py +++ b/tests/test_rtichoke_viz_vendor.py @@ -1,19 +1,35 @@ +import hashlib +import tarfile from pathlib import Path _VENDOR = Path(__file__).parents[1] / "src" / "rtichoke" / "_vendor" / "rtichoke_viz" -def test_vendored_rtichoke_viz_v020_provenance_and_schemas(): +def test_vendored_rtichoke_viz_v030_provenance_archive_and_schemas(): provenance = (_VENDOR / "VENDORED_FROM").read_text() - assert "release=v0.2.0" in provenance - assert "source_commit=45dc109a6a0679d0f8f3f9452d8de9306a89b906" in provenance - assert "archive=rtichoke-viz-0.2.0.tar.gz" in provenance + assert "release=v0.3.0" in provenance + assert "source_commit=aca9188ea856167557efb20980a0b43e0481b8c8" in provenance + assert "archive=rtichoke-viz-0.3.0.tar.gz" in provenance assert ( - "sha256=3861277c01b3983f8b344a9ee0237c7d09fd0ba4c3d1e0cce489962e7b559d9f" + "sha256=558f8d9e16f9544659b84e33f72511065163291a1b97a3c5511b61d1e1f0cac1" in provenance ) + archive = _VENDOR / "rtichoke-viz-0.3.0.tar.gz" + assert hashlib.sha256(archive.read_bytes()).hexdigest() == ( + "558f8d9e16f9544659b84e33f72511065163291a1b97a3c5511b61d1e1f0cac1" + ) + with tarfile.open(archive, "r:gz") as release: + assert set(release.getnames()) == { + "rtichoke-viz-0.3.0", + "rtichoke-viz-0.3.0/MANIFEST", + "rtichoke-viz-0.3.0/rtichoke-viz.css", + "rtichoke-viz-0.3.0/rtichoke-viz.js", + "rtichoke-viz-0.3.0/rtichoke-viz.schema.json", + "rtichoke-viz-0.3.0/rtichoke-viz-v2.schema.json", + } + assert (_VENDOR / "rtichoke-viz.js").stat().st_size > 0 assert (_VENDOR / "rtichoke-viz.css").stat().st_size > 0 @@ -23,11 +39,13 @@ def test_vendored_rtichoke_viz_v020_provenance_and_schemas(): assert '"$id": "https://rtichoke.dev/schema/viz/2.0.json"' in v2_schema -def test_v020_bundle_keeps_v1_browser_exports(): - bundle = (_VENDOR / "rtichoke-viz.js").read_text() +def test_v030_bundle_keeps_v1_and_adds_v2_browser_exports(): + bundle = (_VENDOR / "rtichoke-viz.js").read_text(encoding="utf-8") for export_name in ( "renderRoc", "renderCalibration", "RtichokeChartSpecSchema", + "renderGainsV2", + "RtichokeChartSpecV2Schema", ): assert export_name in bundle diff --git a/uv.lock b/uv.lock index 14353270..0914ad40 100644 --- a/uv.lock +++ b/uv.lock @@ -2579,6 +2579,11 @@ dependencies = [ { name = "smoothstate" }, ] +[package.optional-dependencies] +matplotlib = [ + { name = "matplotlib" }, +] + [package.dev-dependencies] dev = [ { name = "dcurves" }, @@ -2602,12 +2607,14 @@ docs = [ [package.metadata] requires-dist = [ { name = "great-tables", specifier = ">=0.18.0" }, + { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.9.0" }, { name = "plotly", specifier = ">=6.0.0,<7.0.0" }, { name = "polars", specifier = ">=1.31.0" }, { name = "polarstate", specifier = "==0.1.8" }, { name = "reactable", specifier = ">=0.1.5" }, { name = "smoothstate", specifier = ">=0.1.1" }, ] +provides-extras = ["matplotlib"] [package.metadata.requires-dev] dev = [ From 5359f1bebc740a49607ff704036c5e197132e6d2 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 23 Aug 2026 06:09:47 +0300 Subject: [PATCH 2/3] Update pyzmq dev pin for Python 3.14 CI --- pyproject.toml | 2 +- uv.lock | 75 +++++++++++++++++++++++++++----------------------- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2c946a74..a9bb9b16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,7 @@ dev = [ "jupyter<2.0.0,>=1.0.0", "pytest-cov<5.0.0,>=4.0.0", "pytest<8.0.0,>=7.3.0", - "pyzmq<27.0.0,>=26.3.0", + "pyzmq<28.0.0,>=27.0.0", "ruff>=0.11.0", "ipykernel>=6.29.5", "lifelines>=0.30.0", diff --git a/uv.lock b/uv.lock index 0914ad40..02e104dd 100644 --- a/uv.lock +++ b/uv.lock @@ -2366,43 +2366,50 @@ wheels = [ [[package]] name = "pyzmq" -version = "26.4.0" +version = "27.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, - { url = "https://files.pythonhosted.org/packages/d7/20/fb2c92542488db70f833b92893769a569458311a76474bda89dc4264bd18/pyzmq-26.4.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:c43fac689880f5174d6fc864857d1247fe5cfa22b09ed058a344ca92bf5301e3", size = 1339484, upload-time = "2025-04-04T12:04:00.671Z" }, - { url = "https://files.pythonhosted.org/packages/58/29/2f06b9cabda3a6ea2c10f43e67ded3e47fc25c54822e2506dfb8325155d4/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902aca7eba477657c5fb81c808318460328758e8367ecdd1964b6330c73cae43", size = 666106, upload-time = "2025-04-04T12:04:02.366Z" }, - { url = "https://files.pythonhosted.org/packages/77/e4/dcf62bd29e5e190bd21bfccaa4f3386e01bf40d948c239239c2f1e726729/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e48a830bfd152fe17fbdeaf99ac5271aa4122521bf0d275b6b24e52ef35eb6", size = 902056, upload-time = "2025-04-04T12:04:03.919Z" }, - { url = "https://files.pythonhosted.org/packages/1a/cf/b36b3d7aea236087d20189bec1a87eeb2b66009731d7055e5c65f845cdba/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31be2b6de98c824c06f5574331f805707c667dc8f60cb18580b7de078479891e", size = 860148, upload-time = "2025-04-04T12:04:05.581Z" }, - { url = "https://files.pythonhosted.org/packages/18/a6/f048826bc87528c208e90604c3bf573801e54bd91e390cbd2dfa860e82dc/pyzmq-26.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6332452034be001bbf3206ac59c0d2a7713de5f25bb38b06519fc6967b7cf771", size = 855983, upload-time = "2025-04-04T12:04:07.096Z" }, - { url = "https://files.pythonhosted.org/packages/0a/27/454d34ab6a1d9772a36add22f17f6b85baf7c16e14325fa29e7202ca8ee8/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:da8c0f5dd352136853e6a09b1b986ee5278dfddfebd30515e16eae425c872b30", size = 1197274, upload-time = "2025-04-04T12:04:08.523Z" }, - { url = "https://files.pythonhosted.org/packages/f4/3d/7abfeab6b83ad38aa34cbd57c6fc29752c391e3954fd12848bd8d2ec0df6/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f4ccc1a0a2c9806dda2a2dd118a3b7b681e448f3bb354056cad44a65169f6d86", size = 1507120, upload-time = "2025-04-04T12:04:10.58Z" }, - { url = "https://files.pythonhosted.org/packages/13/ff/bc8d21dbb9bc8705126e875438a1969c4f77e03fc8565d6901c7933a3d01/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c0b5fceadbab461578daf8d1dcc918ebe7ddd2952f748cf30c7cf2de5d51101", size = 1406738, upload-time = "2025-04-04T12:04:12.509Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5d/d4cd85b24de71d84d81229e3bbb13392b2698432cf8fdcea5afda253d587/pyzmq-26.4.0-cp313-cp313-win32.whl", hash = "sha256:28e2b0ff5ba4b3dd11062d905682bad33385cfa3cc03e81abd7f0822263e6637", size = 577826, upload-time = "2025-04-04T12:04:14.289Z" }, - { url = "https://files.pythonhosted.org/packages/c6/6c/f289c1789d7bb6e5a3b3bef7b2a55089b8561d17132be7d960d3ff33b14e/pyzmq-26.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:23ecc9d241004c10e8b4f49d12ac064cd7000e1643343944a10df98e57bc544b", size = 640406, upload-time = "2025-04-04T12:04:15.757Z" }, - { url = "https://files.pythonhosted.org/packages/b3/99/676b8851cb955eb5236a0c1e9ec679ea5ede092bf8bf2c8a68d7e965cac3/pyzmq-26.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:1edb0385c7f025045d6e0f759d4d3afe43c17a3d898914ec6582e6f464203c08", size = 556216, upload-time = "2025-04-04T12:04:17.212Z" }, - { url = "https://files.pythonhosted.org/packages/65/c2/1fac340de9d7df71efc59d9c50fc7a635a77b103392d1842898dd023afcb/pyzmq-26.4.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:93a29e882b2ba1db86ba5dd5e88e18e0ac6b627026c5cfbec9983422011b82d4", size = 1333769, upload-time = "2025-04-04T12:04:18.665Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c7/6c03637e8d742c3b00bec4f5e4cd9d1c01b2f3694c6f140742e93ca637ed/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45684f276f57110bb89e4300c00f1233ca631f08f5f42528a5c408a79efc4a", size = 658826, upload-time = "2025-04-04T12:04:20.405Z" }, - { url = "https://files.pythonhosted.org/packages/a5/97/a8dca65913c0f78e0545af2bb5078aebfc142ca7d91cdaffa1fbc73e5dbd/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72073e75260cb301aad4258ad6150fa7f57c719b3f498cb91e31df16784d89b", size = 891650, upload-time = "2025-04-04T12:04:22.413Z" }, - { url = "https://files.pythonhosted.org/packages/7d/7e/f63af1031eb060bf02d033732b910fe48548dcfdbe9c785e9f74a6cc6ae4/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be37e24b13026cfedd233bcbbccd8c0bcd2fdd186216094d095f60076201538d", size = 849776, upload-time = "2025-04-04T12:04:23.959Z" }, - { url = "https://files.pythonhosted.org/packages/f6/fa/1a009ce582802a895c0d5fe9413f029c940a0a8ee828657a3bb0acffd88b/pyzmq-26.4.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:237b283044934d26f1eeff4075f751b05d2f3ed42a257fc44386d00df6a270cf", size = 842516, upload-time = "2025-04-04T12:04:25.449Z" }, - { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183, upload-time = "2025-04-04T12:04:27.035Z" }, - { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501, upload-time = "2025-04-04T12:04:28.833Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540, upload-time = "2025-04-04T12:04:30.562Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e7/8d/5b3d5631c2f4b4b8862f64cd0c9eb777b5710eeb5125b4be8dd0a200a4c0/pyzmq-27.2.0.tar.gz", hash = "sha256:54d4259d1bfae24ecdb5ca79f7acc2eac6c286a02d6a0ae617797cb45f0726d3", size = 292316, upload-time = "2026-08-20T19:08:21.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/8a/153532fa53db30e116118164f3af269a1f3966b3e2ba32c89b12fe864bd8/pyzmq-27.2.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:591c8de5851c5ea372194469fe97587b97c3b641e9a70f31bb3474acbfde0241", size = 1431074, upload-time = "2026-08-20T19:06:40.601Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ef/c08b91248bb90a9efa81fa00ba81b69c157c74d0c5efbb2c319d91babb62/pyzmq-27.2.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:00e73942ef12cecbc7951c4a9104bb8ffaed742abb13af2da6833d90dd368cef", size = 973915, upload-time = "2026-08-20T19:06:42.037Z" }, + { url = "https://files.pythonhosted.org/packages/b4/78/a3a3a86c2b00fadb92ece1ca4f8f028d62b2ce9ac3526097239ab2d6fba9/pyzmq-27.2.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f8079d0521fe94bbb401fe9407578b28f3701627c8be2c9f7e0c5b77dcb0109", size = 697722, upload-time = "2026-08-20T19:06:43.325Z" }, + { url = "https://files.pythonhosted.org/packages/62/2c/d5828306f795e8d34676d266823b74e2101e0ad3760d12083de3e02abbb2/pyzmq-27.2.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dea74fd65f1fc5f7fe167916a473ebe6ed6174e5e5d9de11ea6583661be6cf43", size = 872258, upload-time = "2026-08-20T19:06:44.627Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/51253b78fd8739293e283407eeecb14215c02c71b6519af21f6eed8e69cd/pyzmq-27.2.0-cp312-abi3-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcc99ca132b667a4ed750afd42db4ea73288f18425a9b2e3c0af095665c491f5", size = 739591, upload-time = "2026-08-20T19:06:46.214Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3e/142c85b67a4c9678629b0cf6d5125b29663d75be69bfaa57a3cac344d780/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b8d5f66e4a8246cf77f7b8f7902af64f00553368fa0373c89d99b78f0ad79394", size = 1689031, upload-time = "2026-08-20T19:06:47.612Z" }, + { url = "https://files.pythonhosted.org/packages/0e/ee/0776fb0f98ed1eb74d77240087fef0ab045b6ad15cb09555c6c5134c98ad/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:d1526b42a2e725b84ed226f37becedc250c6347594e5ed304e4e9aff68c9aec3", size = 2059547, upload-time = "2026-08-20T19:06:49.064Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0e/ec77f691a4aebe29ab6329f996fb0e0270c876a3016086e3ca6ef733bcae/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f707bcf2c1d007d14d70531d4dd7b41060881c73efa845580bf6faaf9ea24d42", size = 1910457, upload-time = "2026-08-20T19:06:50.783Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/1f5530ff4fc271b4597048371d5af972c2baab51be132ba15874e0327a6a/pyzmq-27.2.0-cp312-abi3-win32.whl", hash = "sha256:fdaaa4ea3242f6ad298eb5177eb042aea5c73c30e76d20caee7b15af20d24ec2", size = 563450, upload-time = "2026-08-20T19:06:52.307Z" }, + { url = "https://files.pythonhosted.org/packages/02/8b/b83f7780dad22e0878e4c7bd9158ebd24ed12bc3d5e3a471cd0576f77ded/pyzmq-27.2.0-cp312-abi3-win_amd64.whl", hash = "sha256:2c218c6ab8bc447ba62054b581fd30209689d199c6ecb253f79615ca74a38e12", size = 628633, upload-time = "2026-08-20T19:06:53.809Z" }, + { url = "https://files.pythonhosted.org/packages/52/aa/3918b5ac7f9987bd9c421b065074fd7409ded88f856f2c704a24341877ec/pyzmq-27.2.0-cp312-abi3-win_arm64.whl", hash = "sha256:348d6fd3e4b81ae4580622ea8c2ea60224e84b2ac1b3be4482e6edc7de06e7a3", size = 556006, upload-time = "2026-08-20T19:06:55.242Z" }, + { url = "https://files.pythonhosted.org/packages/83/5e/d0541596b48c5a19f85dcbea83d6673d8e91681cdf853eb194c31fc9766e/pyzmq-27.2.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:c551b9e2f86dc625fcb1a032c0d68042678caf96a8dd7c28796766b673bd5b52", size = 1127193, upload-time = "2026-08-20T19:06:56.545Z" }, + { url = "https://files.pythonhosted.org/packages/50/9f/8c7411bb283982d46e6d56dca6a095678c87eb0398daead12776d9881ac2/pyzmq-27.2.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:288cc790da0e3064a14a38ddc56ba169dada8c8af4cb86518db2bcbd380eedbb", size = 1166833, upload-time = "2026-08-20T19:06:58.011Z" }, + { url = "https://files.pythonhosted.org/packages/f9/84/a849161ff88b2de9b991cc8ab332218824741122fdc4fdf222a5b822ac8c/pyzmq-27.2.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:3d45189c0c3c99f817b7fefff0d32eeef684cf33e1e3c0fc4281515357c54702", size = 1134452, upload-time = "2026-08-20T19:06:59.898Z" }, + { url = "https://files.pythonhosted.org/packages/3c/34/ff4aaff0cfba2a4d7ad1a16ffedc52c6deb89fcf673d455085446b23f215/pyzmq-27.2.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:d61910b52be5b2cd8b248dbcbe3a1b0275556a7d99fb613fc43323b546e273b8", size = 1167520, upload-time = "2026-08-20T19:07:01.283Z" }, + { url = "https://files.pythonhosted.org/packages/b6/07/42111e9dc1041d78b4443d6eb1b82b027f1a58178dc8a38385effbc72ad5/pyzmq-27.2.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3ab6eb88590e510ab16715c32dbba12000da9bee989fdadd9ee19a234c492eb7", size = 1466289, upload-time = "2026-08-20T19:07:02.738Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b4/def7a478458da78665840564161772e7e938600c32a89f28e8b221b54d2d/pyzmq-27.2.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1ecbdd131b9669f62d3a45afee5527c7ae9f141e4301267f21714c90bd21725f", size = 975868, upload-time = "2026-08-20T19:07:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/38/d5/e3e85f7fea37153097aaff49db9e33093909cc2a7b22c1ac4ebe546600fc/pyzmq-27.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3146385b94a760236c5eceff468a66a296a716ca98a2e0f9217b1518118466b1", size = 706054, upload-time = "2026-08-20T19:07:05.623Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ef/3b7d9449b223183222bf517245e1e53d5f1ab8c10be8b45f6a301b2f994a/pyzmq-27.2.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9846e881620dd62566ca76a53e384c3f37490faf4b9240aebc7498810dfca853", size = 878984, upload-time = "2026-08-20T19:07:07.153Z" }, + { url = "https://files.pythonhosted.org/packages/be/a5/8b49dbd494f6dcfda69dc4cade322a4b02706ef4e3d30cc366d4e369899f/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d9527e3dbaef1edaeeb2446fa7379446814a43ade8adc7c4a5ebe69437815ddd", size = 1697489, upload-time = "2026-08-20T19:07:08.945Z" }, + { url = "https://files.pythonhosted.org/packages/da/5a/4bb8280901130c26ea25f0cbb4a6d39d94250860c6b3dbd912f1cf48fca7/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:56b48fa9d478a3af7254f397697a62f5ad3e1bb677e200b2701f0c290d97e5af", size = 2064236, upload-time = "2026-08-20T19:07:10.384Z" }, + { url = "https://files.pythonhosted.org/packages/de/38/f433af66922554adb2b5f79e897018c8e19a90b9eaeb49c4814f8355ebe4/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bf0b6e4ce1bb089751c504c5493d6b0557eabd02dd21b76e9086cf964234b103", size = 1917424, upload-time = "2026-08-20T19:07:11.909Z" }, + { url = "https://files.pythonhosted.org/packages/36/81/ea1c1ae3f801d96ba2c269e056761ebcfe023476e651d3af2a7817962051/pyzmq-27.2.0-cp314-cp314t-win32.whl", hash = "sha256:fba8afcf265c6e9fbe1594cb045d4765c6c9a7d607653a8196067ef23566b843", size = 591103, upload-time = "2026-08-20T19:07:13.451Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/149a627707e780fa9f2c1ede3590c14fa6b18b5576d15744342622299a50/pyzmq-27.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d1bc1d380a91d954ed5fc9f12915dba014eed0978d2de05ee7ca688bdaac144a", size = 670215, upload-time = "2026-08-20T19:07:15.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/f9c3c1536c41ef3dbf765ea04218990e2056e558f98184ecd883767fc501/pyzmq-27.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:c7cfb75caa83f5153c687e9d2107f64b5ef0ef0d6edd260d3ff920baaaa69101", size = 582252, upload-time = "2026-08-20T19:07:16.582Z" }, + { url = "https://files.pythonhosted.org/packages/fa/00/78fe097a304a408275747ce43f20428789130b059c5649956277c20f30cf/pyzmq-27.2.0-cp315-cp315-android_24_arm64_v8a.whl", hash = "sha256:c5129a8fe43ecc49b99eb75616603d483a3c2fcaef504988fafe8ea392aea98b", size = 1134295, upload-time = "2026-08-20T19:07:17.94Z" }, + { url = "https://files.pythonhosted.org/packages/f2/83/1c36270658d2ee56e23a3f9ef5fbcb94cbd2f9fe966a6641f2f38e697162/pyzmq-27.2.0-cp315-cp315-android_24_x86_64.whl", hash = "sha256:baa2ce3485145653194d6c8c5beedd1e9f0bf46a0919c9fa2fe2204fc35b74d9", size = 1167492, upload-time = "2026-08-20T19:07:19.476Z" }, + { url = "https://files.pythonhosted.org/packages/58/b2/f0ae223438d7faa991f6feefdc823815f11cc604f898738376b59fd96515/pyzmq-27.2.0-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:e1ed46048d1920cabc96d952a0d5cfe4127ad8db572c335aae4e3c57b9278d7f", size = 1465992, upload-time = "2026-08-20T19:07:20.941Z" }, + { url = "https://files.pythonhosted.org/packages/59/46/fb56f3f37a6a0937b0e1d2885e808b5eedc171320bac85573cfae78fa9bc/pyzmq-27.2.0-cp315-cp315t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:e0fa0bc6b1a184aee59b32efcd1b7f0e6d5b8f9387799e4c16a4cb66a86747d6", size = 976118, upload-time = "2026-08-20T19:07:22.577Z" }, + { url = "https://files.pythonhosted.org/packages/21/82/a2c9bfd7c4d34eea1278493cd041bc000d41acb4463c89ceaad29dc813b6/pyzmq-27.2.0-cp315-cp315t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4bd6743e8bf854c3bfce892dd6578a514aabf128e37a4b2eafcf01856f7e44", size = 705968, upload-time = "2026-08-20T19:07:24.019Z" }, + { url = "https://files.pythonhosted.org/packages/d6/12/b906b269116b6591dc15c0acc5d04c043957c8a531d336999731f4b1d899/pyzmq-27.2.0-cp315-cp315t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95369ed6626afcfe2ac89832fb1b917c077fbeb905fbbe5d918349ce0222b89b", size = 879011, upload-time = "2026-08-20T19:07:25.428Z" }, + { url = "https://files.pythonhosted.org/packages/12/13/f96359534bfb77651c15f1fbfc4bfdd7ec3489d23f434706d39598dd0dcd/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:40124779c3a56ad5d91902df1ff89159cb414b6c1a0ee697abcc66cf5e6db62d", size = 1697496, upload-time = "2026-08-20T19:07:26.821Z" }, + { url = "https://files.pythonhosted.org/packages/21/b4/2c007ae5f2fe5eca86cbfbc874ed86b5135f2f7812615dfd78606d3c93f6/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:ec8a318dfc27c7d946651b3d9e8025d5734f30c168a822195601827207bac09b", size = 2064347, upload-time = "2026-08-20T19:07:28.315Z" }, + { url = "https://files.pythonhosted.org/packages/9b/88/767af3a6630c15215f3a66700ec79598a375edd1fdc9d75a3ad522178c01/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:88c0fac061bac269076edeb3a209acefc96cd6167c239daf1c2b404ac48d7012", size = 1917360, upload-time = "2026-08-20T19:07:29.693Z" }, + { url = "https://files.pythonhosted.org/packages/35/c1/80dd2d20d6e57bc68e1dce1e84bf3e76c9577c1bf728199985c8b4ea0fd1/pyzmq-27.2.0-cp315-cp315t-win32.whl", hash = "sha256:ac126d48cf18aa955daabef43bf0009ff76ad4deee437d09ecf15388214b5beb", size = 591073, upload-time = "2026-08-20T19:07:31.341Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b5/33b781666f3f52ae834bc9c8e38f4f0483a826c5a91cccc993292007bf10/pyzmq-27.2.0-cp315-cp315t-win_amd64.whl", hash = "sha256:edce90a1e588ec63adbf612cc0ad582de4169cd216c7ae53c15f42a2ee902f35", size = 670701, upload-time = "2026-08-20T19:07:32.895Z" }, + { url = "https://files.pythonhosted.org/packages/6e/97/bc4f0edefb992df4fdebcf9f0cc40f631cd4ed277e1ed59ef2cd99a5c8c5/pyzmq-27.2.0-cp315-cp315t-win_arm64.whl", hash = "sha256:a843094b4d3d633bc3623e47a2ff50742d6af02bc1f7606aa2e67e971e21878d", size = 581985, upload-time = "2026-08-20T19:07:34.19Z" }, ] [[package]] @@ -2626,7 +2633,7 @@ dev = [ { name = "pre-commit", specifier = ">=4.2.0" }, { name = "pytest", specifier = ">=7.3.0,<8.0.0" }, { name = "pytest-cov", specifier = ">=4.0.0,<5.0.0" }, - { name = "pyzmq", specifier = ">=26.3.0,<27.0.0" }, + { name = "pyzmq", specifier = ">=27.0.0,<28.0.0" }, { name = "ruff", specifier = ">=0.11.0" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "ty", specifier = ">=0.0.1a12" }, From 6ef5fbf21e8f017dffc13cb4acdf03b402786176 Mon Sep 17 00:00:00 2001 From: Uriah Finkel Date: Sun, 23 Aug 2026 06:15:30 +0300 Subject: [PATCH 3/3] Let Jupyter resolve its pyzmq dependency --- pyproject.toml | 1 - uv.lock | 2 -- 2 files changed, 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a9bb9b16..efa25ca0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,6 @@ dev = [ "jupyter<2.0.0,>=1.0.0", "pytest-cov<5.0.0,>=4.0.0", "pytest<8.0.0,>=7.3.0", - "pyzmq<28.0.0,>=27.0.0", "ruff>=0.11.0", "ipykernel>=6.29.5", "lifelines>=0.30.0", diff --git a/uv.lock b/uv.lock index 02e104dd..d921c5a3 100644 --- a/uv.lock +++ b/uv.lock @@ -2601,7 +2601,6 @@ dev = [ { name = "pre-commit" }, { name = "pytest" }, { name = "pytest-cov" }, - { name = "pyzmq" }, { name = "ruff" }, { name = "scikit-learn" }, { name = "ty" }, @@ -2633,7 +2632,6 @@ dev = [ { name = "pre-commit", specifier = ">=4.2.0" }, { name = "pytest", specifier = ">=7.3.0,<8.0.0" }, { name = "pytest-cov", specifier = ">=4.0.0,<5.0.0" }, - { name = "pyzmq", specifier = ">=27.0.0,<28.0.0" }, { name = "ruff", specifier = ">=0.11.0" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "ty", specifier = ">=0.0.1a12" },