howso-visuals 2.5.6__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/LICENSE-3RD-PARTY.txt +8 -8
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/PKG-INFO +1 -1
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/tests/test_plot.py +3 -3
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/visuals.py +71 -36
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso_visuals.egg-info/PKG-INFO +1 -1
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.10-dev.txt +6 -6
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.10.txt +5 -5
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.11-dev.txt +6 -6
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.11.txt +5 -5
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.12-dev.txt +6 -6
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.12.txt +5 -5
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.13-dev.txt +6 -6
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.13.txt +5 -5
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.flake8 +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/CODEOWNERS +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/templates/version_summary.md +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/workflows/build-pr.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/workflows/build-release.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/workflows/build.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.github/workflows/rebuild-requirements.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/.gitignore +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/CONTRIBUTING.md +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/LICENSE.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/README.md +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/bin/build.sh +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/latest-mt-debug-howso.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/latest-mt-howso.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/latest-mt-noavx-debug-howso.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/latest-st-debug-howso.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/latest-st-howso.yml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/powershell/Download-Tzdata.ps1 +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/config/powershell/Helper-Functions.ps1 +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/__init__.py +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/colors.py +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/data/iris.csv +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/graph.py +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/tests/conftest.py +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso/visuals/tests/test_graph.py +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso_visuals.egg-info/SOURCES.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso_visuals.egg-info/dependency_links.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso_visuals.egg-info/requires.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/howso_visuals.egg-info/top_level.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/pyproject.toml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.9-dev.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/requirements-3.9.txt +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/ruff.toml +0 -0
- {howso_visuals-2.5.6 → howso_visuals-3.0.0}/setup.cfg +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Faker
|
|
2
|
-
38.
|
|
2
|
+
38.2.0
|
|
3
3
|
MIT License
|
|
4
4
|
joke2k
|
|
5
5
|
https://github.com/joke2k/faker
|
|
6
6
|
Faker is a Python package that generates fake data for you.
|
|
7
|
-
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/faker-38.
|
|
7
|
+
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/faker-38.2.0.dist-info/licenses/LICENSE.txt
|
|
8
8
|
Copyright (c) 2012 Daniele Faraglia
|
|
9
9
|
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -297,12 +297,12 @@ OTHER DEALINGS IN THE SOFTWARE.
|
|
|
297
297
|
|
|
298
298
|
|
|
299
299
|
click
|
|
300
|
-
8.3.
|
|
300
|
+
8.3.1
|
|
301
301
|
BSD-3-Clause
|
|
302
302
|
UNKNOWN
|
|
303
303
|
https://github.com/pallets/click/
|
|
304
304
|
Composable command line interface toolkit
|
|
305
|
-
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/click-8.3.
|
|
305
|
+
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/click-8.3.1.dist-info/licenses/LICENSE.txt
|
|
306
306
|
Copyright 2014 Pallets
|
|
307
307
|
|
|
308
308
|
Redistribution and use in source and binary forms, with or without
|
|
@@ -1232,12 +1232,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
1232
1232
|
SOFTWARE.
|
|
1233
1233
|
|
|
1234
1234
|
narwhals
|
|
1235
|
-
2.
|
|
1235
|
+
2.12.0
|
|
1236
1236
|
MIT License
|
|
1237
1237
|
Marco Gorelli <hello_narwhals@proton.me>
|
|
1238
1238
|
https://github.com/narwhals-dev/narwhals
|
|
1239
1239
|
Extremely lightweight compatibility layer between dataframe libraries
|
|
1240
|
-
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/narwhals-2.
|
|
1240
|
+
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/narwhals-2.12.0.dist-info/licenses/LICENSE.md
|
|
1241
1241
|
MIT License
|
|
1242
1242
|
|
|
1243
1243
|
Copyright (c) 2024, Marco Gorelli
|
|
@@ -5370,12 +5370,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
5370
5370
|
|
|
5371
5371
|
|
|
5372
5372
|
plotly
|
|
5373
|
-
6.
|
|
5373
|
+
6.5.0
|
|
5374
5374
|
MIT License
|
|
5375
5375
|
Chris P <chris@plot.ly>
|
|
5376
5376
|
https://plotly.com/python/
|
|
5377
5377
|
An open-source interactive data visualization library for Python
|
|
5378
|
-
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/plotly-6.
|
|
5378
|
+
/home/runner/.pyenv/versions/3.13.9/lib/python3.13/site-packages/plotly-6.5.0.dist-info/licenses/LICENSE.txt
|
|
5379
5379
|
MIT License
|
|
5380
5380
|
|
|
5381
5381
|
Copyright (c) 2016-2024 Plotly Technologies Inc.
|
|
@@ -53,9 +53,9 @@ def test_plot_interpretable_prediction_react(
|
|
|
53
53
|
desired_conviction=5_000,
|
|
54
54
|
num_cases_to_generate=20,
|
|
55
55
|
)
|
|
56
|
-
generative_reacts = result["action"]
|
|
57
|
-
generative_reacts[0] = generative_reacts[0] + 0.2
|
|
58
|
-
generative_reacts[
|
|
56
|
+
generative_reacts = result["action"]
|
|
57
|
+
generative_reacts.loc[0, action_feature] = generative_reacts.loc[0, action_feature] + 0.2
|
|
58
|
+
generative_reacts.loc[19, action_feature] = generative_reacts.loc[19, action_feature] - 0.2
|
|
59
59
|
else:
|
|
60
60
|
generative_reacts = None
|
|
61
61
|
|
|
@@ -479,10 +479,11 @@ def plot_interpretable_prediction(
|
|
|
479
479
|
react: "Reaction",
|
|
480
480
|
*,
|
|
481
481
|
actual_value: float | None = None,
|
|
482
|
-
generative_reacts:
|
|
482
|
+
generative_reacts: pd.DataFrame | None = None,
|
|
483
483
|
residual: float | None = None,
|
|
484
484
|
secondary_yaxis_title: str = "Influence Weight",
|
|
485
|
-
|
|
485
|
+
subplot_titles: list[str] | None = None,
|
|
486
|
+
title: str = "Interpretable Predictions",
|
|
486
487
|
tooltip_features: Collection[str] | None = None,
|
|
487
488
|
xaxis_title: str | None = None,
|
|
488
489
|
yaxis_title: str = "Density",
|
|
@@ -495,10 +496,10 @@ def plot_interpretable_prediction(
|
|
|
495
496
|
react : Reaction
|
|
496
497
|
The reaction predicting the action feature(s) to visualize. If this contains more than one action feature,
|
|
497
498
|
each will be given its own plot.
|
|
498
|
-
generative_reacts :
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
499
|
+
generative_reacts : DataFrame, optional
|
|
500
|
+
Ann optional `DataFrame` of generative reactions which will be used to visualize a KDE around
|
|
501
|
+
the predicted value. If this is None, the distribution of influential cases in the react will
|
|
502
|
+
be used instead, if present.
|
|
502
503
|
actual_value : float, optional
|
|
503
504
|
The actual value for the point that was predicted. If this is None, only the predicted value will be
|
|
504
505
|
visualized.
|
|
@@ -507,7 +508,9 @@ def plot_interpretable_prediction(
|
|
|
507
508
|
predicted value. If this is None, no error bar will be displayed
|
|
508
509
|
secondary_yaxis_title : str, default "Influence Weight"
|
|
509
510
|
The title for the figure's secondary y axis.
|
|
510
|
-
|
|
511
|
+
subplot_titles : list[str], optional
|
|
512
|
+
A list of titles to use for subplots. If this is None, titles will be auto-generated.
|
|
513
|
+
title : str, default "Interpretable Prediction"
|
|
511
514
|
The title for the figure.
|
|
512
515
|
tooltip_features : Collection[str], optional
|
|
513
516
|
Additional features to include in the tooltip when hovering over an influential case in the plot.
|
|
@@ -521,31 +524,52 @@ def plot_interpretable_prediction(
|
|
|
521
524
|
Figure or list of Figure
|
|
522
525
|
The resultant `Plotly` figure(s).
|
|
523
526
|
"""
|
|
524
|
-
figures = []
|
|
525
527
|
tooltip_features = list(tooltip_features) if tooltip_features is not None else []
|
|
528
|
+
action_features = react["action"].columns
|
|
529
|
+
num_rows = len(action_features)
|
|
530
|
+
subplot_titles = subplot_titles or [f"Interpretable Prediction for: {af}" for af in action_features]
|
|
531
|
+
case_hover_template = "<b>Value:</b> %{x}<br><b>Influence:</b> N/A"
|
|
532
|
+
fig = make_subplots(
|
|
533
|
+
rows=num_rows,
|
|
534
|
+
specs=[[{"secondary_y": True}]] * num_rows,
|
|
535
|
+
subplot_titles=subplot_titles,
|
|
536
|
+
)
|
|
526
537
|
|
|
527
|
-
for action_feature in
|
|
538
|
+
for row, action_feature in enumerate(action_features):
|
|
528
539
|
predicted_value = react["action"][action_feature].iloc[0]
|
|
540
|
+
legend = "legend" if row == 0 else f"legend{row + 1}"
|
|
529
541
|
|
|
530
542
|
influential_cases = react.get("details", {}).get("influential_cases")
|
|
531
543
|
influential_cases = influential_cases[0] if influential_cases else None
|
|
532
544
|
|
|
533
545
|
if generative_reacts is not None:
|
|
534
|
-
action_distribution = generative_reacts
|
|
535
|
-
|
|
546
|
+
action_distribution = generative_reacts[action_feature]
|
|
547
|
+
elif influential_cases is not None:
|
|
536
548
|
action_distribution = [c[action_feature] for c in influential_cases]
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
+
else:
|
|
550
|
+
action_distribution = None
|
|
551
|
+
|
|
552
|
+
if action_distribution is not None:
|
|
553
|
+
action_kde = gaussian_kde(action_distribution)
|
|
554
|
+
density_x = np.linspace(
|
|
555
|
+
min(action_distribution) * 0.6,
|
|
556
|
+
max(action_distribution) * 1.4,
|
|
557
|
+
len(action_distribution),
|
|
558
|
+
)
|
|
559
|
+
density_y = action_kde(density_x)
|
|
560
|
+
fig.add_trace(
|
|
561
|
+
go.Scattergl(
|
|
562
|
+
x=density_x,
|
|
563
|
+
y=density_y,
|
|
564
|
+
fill="tonexty",
|
|
565
|
+
name="Distribution",
|
|
566
|
+
hoverinfo="skip",
|
|
567
|
+
mode="lines",
|
|
568
|
+
legend=legend,
|
|
569
|
+
),
|
|
570
|
+
row=row + 1,
|
|
571
|
+
col=1,
|
|
572
|
+
)
|
|
549
573
|
predicted_case_hover_template = case_hover_template
|
|
550
574
|
|
|
551
575
|
if influential_cases is not None:
|
|
@@ -561,14 +585,17 @@ def plot_interpretable_prediction(
|
|
|
561
585
|
fig.add_trace(
|
|
562
586
|
go.Scattergl(
|
|
563
587
|
x=[predicted_value],
|
|
564
|
-
y=[max_inf_weight * 1.05],
|
|
588
|
+
y=[max_inf_weight * 1.05] if max_inf_weight else 1,
|
|
565
589
|
name="Predicted Value",
|
|
566
590
|
mode="markers",
|
|
567
591
|
marker={"size": 15, "color": "purple"},
|
|
568
592
|
hovertemplate=predicted_case_hover_template,
|
|
569
593
|
error_x=error_x,
|
|
594
|
+
legend=legend,
|
|
570
595
|
),
|
|
571
596
|
secondary_y=True,
|
|
597
|
+
row=row + 1,
|
|
598
|
+
col=1,
|
|
572
599
|
)
|
|
573
600
|
|
|
574
601
|
if actual_value is not None:
|
|
@@ -576,19 +603,22 @@ def plot_interpretable_prediction(
|
|
|
576
603
|
fig.add_trace(
|
|
577
604
|
go.Scattergl(
|
|
578
605
|
x=[actual_value],
|
|
579
|
-
y=[max_inf_weight * 1.05],
|
|
606
|
+
y=[max_inf_weight * 1.05] if max_inf_weight else 1,
|
|
580
607
|
name="Actual Value",
|
|
581
608
|
mode="markers",
|
|
582
609
|
marker=dict(size=15, color="orange"),
|
|
583
610
|
hovertemplate=case_hover_template,
|
|
611
|
+
legend=legend,
|
|
584
612
|
),
|
|
585
613
|
secondary_y=True,
|
|
614
|
+
row=row + 1,
|
|
615
|
+
col=1,
|
|
586
616
|
)
|
|
587
617
|
|
|
588
618
|
# Update axes, hover mode
|
|
589
|
-
fig.update_xaxes(title_text=xaxis_title or action_feature, autorange=True)
|
|
590
|
-
fig.update_yaxes(title_text=yaxis_title, color="blue", secondary_y=False)
|
|
591
|
-
fig.update_yaxes(title_text=secondary_yaxis_title, color="green", secondary_y=True)
|
|
619
|
+
fig.update_xaxes(title_text=xaxis_title or action_feature, autorange=True, row=row + 1, col=1)
|
|
620
|
+
fig.update_yaxes(title_text=yaxis_title, color="blue", secondary_y=False, row=row + 1, col=1)
|
|
621
|
+
fig.update_yaxes(title_text=secondary_yaxis_title, color="green", secondary_y=True, row=row + 1, col=1)
|
|
592
622
|
|
|
593
623
|
if influential_cases is not None and len(influential_cases):
|
|
594
624
|
inf_case_hover_template = (
|
|
@@ -621,19 +651,24 @@ def plot_interpretable_prediction(
|
|
|
621
651
|
customdata=inf_case_labels,
|
|
622
652
|
mode="markers",
|
|
623
653
|
marker=dict(color="green"),
|
|
654
|
+
legend=legend,
|
|
624
655
|
),
|
|
625
656
|
secondary_y=True,
|
|
657
|
+
row=row + 1,
|
|
658
|
+
col=1,
|
|
626
659
|
)
|
|
627
660
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
661
|
+
# Increase height based on the number of rows
|
|
662
|
+
fig.update_layout(height=300 * num_rows)
|
|
663
|
+
# Place a legend to the right of each subplot.
|
|
664
|
+
for i, yaxis in enumerate(fig.select_yaxes(secondary_y=False), 1):
|
|
665
|
+
legend_name = f"legend{i}"
|
|
666
|
+
fig.update_layout({legend_name: dict(y=yaxis.domain[1], yanchor="top")}, showlegend=True)
|
|
667
|
+
fig.update_traces(row=i, legend=legend_name)
|
|
633
668
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
return
|
|
669
|
+
title = title or "Interpretable Predictions"
|
|
670
|
+
fig.update_layout(title=title)
|
|
671
|
+
return fig
|
|
637
672
|
|
|
638
673
|
|
|
639
674
|
def plot_fairness_disparity(
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --extra=dev --index-url=None --no-emit-index-url --output-file=requirements-3.10-dev.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -18,7 +18,7 @@ choreographer==1.2.1
|
|
|
18
18
|
# via kaleido
|
|
19
19
|
contourpy==1.3.2
|
|
20
20
|
# via matplotlib
|
|
21
|
-
coverage[toml]==7.
|
|
21
|
+
coverage[toml]==7.12.0
|
|
22
22
|
# via pytest-cov
|
|
23
23
|
cryptography==46.0.3
|
|
24
24
|
# via howso-engine
|
|
@@ -30,13 +30,13 @@ exceptiongroup==1.3.0
|
|
|
30
30
|
# via pytest
|
|
31
31
|
execnet==2.1.2
|
|
32
32
|
# via pytest-xdist
|
|
33
|
-
faker==38.
|
|
33
|
+
faker==38.2.0
|
|
34
34
|
# via howso-engine
|
|
35
35
|
flake8==7.3.0
|
|
36
36
|
# via howso-visuals (pyproject.toml)
|
|
37
37
|
fonttools==4.60.1
|
|
38
38
|
# via matplotlib
|
|
39
|
-
howso-engine==50.1
|
|
39
|
+
howso-engine==50.2.1
|
|
40
40
|
# via howso-visuals (pyproject.toml)
|
|
41
41
|
humanize==4.14.0
|
|
42
42
|
# via howso-engine
|
|
@@ -72,7 +72,7 @@ mdurl==0.1.2
|
|
|
72
72
|
# via markdown-it-py
|
|
73
73
|
mmh3==5.2.0
|
|
74
74
|
# via howso-engine
|
|
75
|
-
narwhals==2.
|
|
75
|
+
narwhals==2.12.0
|
|
76
76
|
# via plotly
|
|
77
77
|
networkx==3.4.2
|
|
78
78
|
# via howso-visuals (pyproject.toml)
|
|
@@ -109,7 +109,7 @@ pillow==12.0.0
|
|
|
109
109
|
# via matplotlib
|
|
110
110
|
platformdirs==4.5.0
|
|
111
111
|
# via yapf
|
|
112
|
-
plotly[kaleido]==6.
|
|
112
|
+
plotly[kaleido]==6.5.0
|
|
113
113
|
# via howso-visuals (pyproject.toml)
|
|
114
114
|
pluggy==1.6.0
|
|
115
115
|
# via
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --index-url=None --no-emit-index-url --output-file=requirements-3.10.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -26,11 +26,11 @@ deprecation==2.1.0
|
|
|
26
26
|
# via howso-engine
|
|
27
27
|
exceptiongroup==1.3.0
|
|
28
28
|
# via pytest
|
|
29
|
-
faker==38.
|
|
29
|
+
faker==38.2.0
|
|
30
30
|
# via howso-engine
|
|
31
31
|
fonttools==4.60.1
|
|
32
32
|
# via matplotlib
|
|
33
|
-
howso-engine==50.1
|
|
33
|
+
howso-engine==50.2.1
|
|
34
34
|
# via howso-visuals (pyproject.toml)
|
|
35
35
|
humanize==4.14.0
|
|
36
36
|
# via howso-engine
|
|
@@ -62,7 +62,7 @@ mdurl==0.1.2
|
|
|
62
62
|
# via markdown-it-py
|
|
63
63
|
mmh3==5.2.0
|
|
64
64
|
# via howso-engine
|
|
65
|
-
narwhals==2.
|
|
65
|
+
narwhals==2.12.0
|
|
66
66
|
# via plotly
|
|
67
67
|
networkx==3.4.2
|
|
68
68
|
# via howso-visuals (pyproject.toml)
|
|
@@ -96,7 +96,7 @@ pandas==2.3.3
|
|
|
96
96
|
# seaborn
|
|
97
97
|
pillow==12.0.0
|
|
98
98
|
# via matplotlib
|
|
99
|
-
plotly[kaleido]==6.
|
|
99
|
+
plotly[kaleido]==6.5.0
|
|
100
100
|
# via howso-visuals (pyproject.toml)
|
|
101
101
|
pluggy==1.6.0
|
|
102
102
|
# via pytest
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --extra=dev --index-url=None --no-emit-index-url --output-file=requirements-3.11-dev.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -18,7 +18,7 @@ choreographer==1.2.1
|
|
|
18
18
|
# via kaleido
|
|
19
19
|
contourpy==1.3.3
|
|
20
20
|
# via matplotlib
|
|
21
|
-
coverage[toml]==7.
|
|
21
|
+
coverage[toml]==7.12.0
|
|
22
22
|
# via pytest-cov
|
|
23
23
|
cryptography==46.0.3
|
|
24
24
|
# via howso-engine
|
|
@@ -28,13 +28,13 @@ deprecation==2.1.0
|
|
|
28
28
|
# via howso-engine
|
|
29
29
|
execnet==2.1.2
|
|
30
30
|
# via pytest-xdist
|
|
31
|
-
faker==38.
|
|
31
|
+
faker==38.2.0
|
|
32
32
|
# via howso-engine
|
|
33
33
|
flake8==7.3.0
|
|
34
34
|
# via howso-visuals (pyproject.toml)
|
|
35
35
|
fonttools==4.60.1
|
|
36
36
|
# via matplotlib
|
|
37
|
-
howso-engine==50.1
|
|
37
|
+
howso-engine==50.2.1
|
|
38
38
|
# via howso-visuals (pyproject.toml)
|
|
39
39
|
humanize==4.14.0
|
|
40
40
|
# via howso-engine
|
|
@@ -70,7 +70,7 @@ mdurl==0.1.2
|
|
|
70
70
|
# via markdown-it-py
|
|
71
71
|
mmh3==5.2.0
|
|
72
72
|
# via howso-engine
|
|
73
|
-
narwhals==2.
|
|
73
|
+
narwhals==2.12.0
|
|
74
74
|
# via plotly
|
|
75
75
|
networkx==3.5
|
|
76
76
|
# via howso-visuals (pyproject.toml)
|
|
@@ -107,7 +107,7 @@ pillow==12.0.0
|
|
|
107
107
|
# via matplotlib
|
|
108
108
|
platformdirs==4.5.0
|
|
109
109
|
# via yapf
|
|
110
|
-
plotly[kaleido]==6.
|
|
110
|
+
plotly[kaleido]==6.5.0
|
|
111
111
|
# via howso-visuals (pyproject.toml)
|
|
112
112
|
pluggy==1.6.0
|
|
113
113
|
# via
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --index-url=None --no-emit-index-url --output-file=requirements-3.11.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -24,11 +24,11 @@ cycler==0.12.1
|
|
|
24
24
|
# via matplotlib
|
|
25
25
|
deprecation==2.1.0
|
|
26
26
|
# via howso-engine
|
|
27
|
-
faker==38.
|
|
27
|
+
faker==38.2.0
|
|
28
28
|
# via howso-engine
|
|
29
29
|
fonttools==4.60.1
|
|
30
30
|
# via matplotlib
|
|
31
|
-
howso-engine==50.1
|
|
31
|
+
howso-engine==50.2.1
|
|
32
32
|
# via howso-visuals (pyproject.toml)
|
|
33
33
|
humanize==4.14.0
|
|
34
34
|
# via howso-engine
|
|
@@ -60,7 +60,7 @@ mdurl==0.1.2
|
|
|
60
60
|
# via markdown-it-py
|
|
61
61
|
mmh3==5.2.0
|
|
62
62
|
# via howso-engine
|
|
63
|
-
narwhals==2.
|
|
63
|
+
narwhals==2.12.0
|
|
64
64
|
# via plotly
|
|
65
65
|
networkx==3.5
|
|
66
66
|
# via howso-visuals (pyproject.toml)
|
|
@@ -94,7 +94,7 @@ pandas==2.3.3
|
|
|
94
94
|
# seaborn
|
|
95
95
|
pillow==12.0.0
|
|
96
96
|
# via matplotlib
|
|
97
|
-
plotly[kaleido]==6.
|
|
97
|
+
plotly[kaleido]==6.5.0
|
|
98
98
|
# via howso-visuals (pyproject.toml)
|
|
99
99
|
pluggy==1.6.0
|
|
100
100
|
# via pytest
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --extra=dev --index-url=None --no-emit-index-url --output-file=requirements-3.12-dev.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -18,7 +18,7 @@ choreographer==1.2.1
|
|
|
18
18
|
# via kaleido
|
|
19
19
|
contourpy==1.3.3
|
|
20
20
|
# via matplotlib
|
|
21
|
-
coverage[toml]==7.
|
|
21
|
+
coverage[toml]==7.12.0
|
|
22
22
|
# via pytest-cov
|
|
23
23
|
cryptography==46.0.3
|
|
24
24
|
# via howso-engine
|
|
@@ -28,13 +28,13 @@ deprecation==2.1.0
|
|
|
28
28
|
# via howso-engine
|
|
29
29
|
execnet==2.1.2
|
|
30
30
|
# via pytest-xdist
|
|
31
|
-
faker==38.
|
|
31
|
+
faker==38.2.0
|
|
32
32
|
# via howso-engine
|
|
33
33
|
flake8==7.3.0
|
|
34
34
|
# via howso-visuals (pyproject.toml)
|
|
35
35
|
fonttools==4.60.1
|
|
36
36
|
# via matplotlib
|
|
37
|
-
howso-engine==50.1
|
|
37
|
+
howso-engine==50.2.1
|
|
38
38
|
# via howso-visuals (pyproject.toml)
|
|
39
39
|
humanize==4.14.0
|
|
40
40
|
# via howso-engine
|
|
@@ -70,7 +70,7 @@ mdurl==0.1.2
|
|
|
70
70
|
# via markdown-it-py
|
|
71
71
|
mmh3==5.2.0
|
|
72
72
|
# via howso-engine
|
|
73
|
-
narwhals==2.
|
|
73
|
+
narwhals==2.12.0
|
|
74
74
|
# via plotly
|
|
75
75
|
networkx==3.5
|
|
76
76
|
# via howso-visuals (pyproject.toml)
|
|
@@ -107,7 +107,7 @@ pillow==12.0.0
|
|
|
107
107
|
# via matplotlib
|
|
108
108
|
platformdirs==4.5.0
|
|
109
109
|
# via yapf
|
|
110
|
-
plotly[kaleido]==6.
|
|
110
|
+
plotly[kaleido]==6.5.0
|
|
111
111
|
# via howso-visuals (pyproject.toml)
|
|
112
112
|
pluggy==1.6.0
|
|
113
113
|
# via
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --index-url=None --no-emit-index-url --output-file=requirements-3.12.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -24,11 +24,11 @@ cycler==0.12.1
|
|
|
24
24
|
# via matplotlib
|
|
25
25
|
deprecation==2.1.0
|
|
26
26
|
# via howso-engine
|
|
27
|
-
faker==38.
|
|
27
|
+
faker==38.2.0
|
|
28
28
|
# via howso-engine
|
|
29
29
|
fonttools==4.60.1
|
|
30
30
|
# via matplotlib
|
|
31
|
-
howso-engine==50.1
|
|
31
|
+
howso-engine==50.2.1
|
|
32
32
|
# via howso-visuals (pyproject.toml)
|
|
33
33
|
humanize==4.14.0
|
|
34
34
|
# via howso-engine
|
|
@@ -60,7 +60,7 @@ mdurl==0.1.2
|
|
|
60
60
|
# via markdown-it-py
|
|
61
61
|
mmh3==5.2.0
|
|
62
62
|
# via howso-engine
|
|
63
|
-
narwhals==2.
|
|
63
|
+
narwhals==2.12.0
|
|
64
64
|
# via plotly
|
|
65
65
|
networkx==3.5
|
|
66
66
|
# via howso-visuals (pyproject.toml)
|
|
@@ -94,7 +94,7 @@ pandas==2.3.3
|
|
|
94
94
|
# seaborn
|
|
95
95
|
pillow==12.0.0
|
|
96
96
|
# via matplotlib
|
|
97
|
-
plotly[kaleido]==6.
|
|
97
|
+
plotly[kaleido]==6.5.0
|
|
98
98
|
# via howso-visuals (pyproject.toml)
|
|
99
99
|
pluggy==1.6.0
|
|
100
100
|
# via pytest
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --extra=dev --index-url=None --no-emit-index-url --output-file=requirements-3.13-dev.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -18,7 +18,7 @@ choreographer==1.2.1
|
|
|
18
18
|
# via kaleido
|
|
19
19
|
contourpy==1.3.3
|
|
20
20
|
# via matplotlib
|
|
21
|
-
coverage[toml]==7.
|
|
21
|
+
coverage[toml]==7.12.0
|
|
22
22
|
# via pytest-cov
|
|
23
23
|
cryptography==46.0.3
|
|
24
24
|
# via howso-engine
|
|
@@ -28,13 +28,13 @@ deprecation==2.1.0
|
|
|
28
28
|
# via howso-engine
|
|
29
29
|
execnet==2.1.2
|
|
30
30
|
# via pytest-xdist
|
|
31
|
-
faker==38.
|
|
31
|
+
faker==38.2.0
|
|
32
32
|
# via howso-engine
|
|
33
33
|
flake8==7.3.0
|
|
34
34
|
# via howso-visuals (pyproject.toml)
|
|
35
35
|
fonttools==4.60.1
|
|
36
36
|
# via matplotlib
|
|
37
|
-
howso-engine==50.1
|
|
37
|
+
howso-engine==50.2.1
|
|
38
38
|
# via howso-visuals (pyproject.toml)
|
|
39
39
|
humanize==4.14.0
|
|
40
40
|
# via howso-engine
|
|
@@ -70,7 +70,7 @@ mdurl==0.1.2
|
|
|
70
70
|
# via markdown-it-py
|
|
71
71
|
mmh3==5.2.0
|
|
72
72
|
# via howso-engine
|
|
73
|
-
narwhals==2.
|
|
73
|
+
narwhals==2.12.0
|
|
74
74
|
# via plotly
|
|
75
75
|
networkx==3.5
|
|
76
76
|
# via howso-visuals (pyproject.toml)
|
|
@@ -107,7 +107,7 @@ pillow==12.0.0
|
|
|
107
107
|
# via matplotlib
|
|
108
108
|
platformdirs==4.5.0
|
|
109
109
|
# via yapf
|
|
110
|
-
plotly[kaleido]==6.
|
|
110
|
+
plotly[kaleido]==6.5.0
|
|
111
111
|
# via howso-visuals (pyproject.toml)
|
|
112
112
|
pluggy==1.6.0
|
|
113
113
|
# via
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --allow-unsafe --cert=None --client-cert=None --index-url=None --no-emit-index-url --output-file=requirements-3.13.txt --pip-args=None
|
|
6
6
|
#
|
|
7
|
-
amalgam-lang==25.0
|
|
7
|
+
amalgam-lang==25.1.0
|
|
8
8
|
# via howso-engine
|
|
9
9
|
certifi==2025.11.12
|
|
10
10
|
# via
|
|
@@ -24,11 +24,11 @@ cycler==0.12.1
|
|
|
24
24
|
# via matplotlib
|
|
25
25
|
deprecation==2.1.0
|
|
26
26
|
# via howso-engine
|
|
27
|
-
faker==38.
|
|
27
|
+
faker==38.2.0
|
|
28
28
|
# via howso-engine
|
|
29
29
|
fonttools==4.60.1
|
|
30
30
|
# via matplotlib
|
|
31
|
-
howso-engine==50.1
|
|
31
|
+
howso-engine==50.2.1
|
|
32
32
|
# via howso-visuals (pyproject.toml)
|
|
33
33
|
humanize==4.14.0
|
|
34
34
|
# via howso-engine
|
|
@@ -60,7 +60,7 @@ mdurl==0.1.2
|
|
|
60
60
|
# via markdown-it-py
|
|
61
61
|
mmh3==5.2.0
|
|
62
62
|
# via howso-engine
|
|
63
|
-
narwhals==2.
|
|
63
|
+
narwhals==2.12.0
|
|
64
64
|
# via plotly
|
|
65
65
|
networkx==3.5
|
|
66
66
|
# via howso-visuals (pyproject.toml)
|
|
@@ -94,7 +94,7 @@ pandas==2.3.3
|
|
|
94
94
|
# seaborn
|
|
95
95
|
pillow==12.0.0
|
|
96
96
|
# via matplotlib
|
|
97
|
-
plotly[kaleido]==6.
|
|
97
|
+
plotly[kaleido]==6.5.0
|
|
98
98
|
# via howso-visuals (pyproject.toml)
|
|
99
99
|
pluggy==1.6.0
|
|
100
100
|
# via pytest
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|