Spaces:
Running
Running
add plotly examples to doc
Browse files
app/src/content/embeds/plotly/bar.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import plotly.graph_objects as go
|
| 2 |
+
import plotly.io as pio
|
| 3 |
+
import numpy as np
|
| 4 |
+
|
| 5 |
+
"""
|
| 6 |
+
Stacked bar chart: GPU memory breakdown vs sequence length, with menus for Model Size and Recomputation.
|
| 7 |
+
Responsive, no zoom/pan, clean hover; styled to match the minimal theme.
|
| 8 |
+
"""
|
| 9 |
+
|
| 10 |
+
# Axes
|
| 11 |
+
seq_labels = ["1024", "2048", "4096", "8192"]
|
| 12 |
+
seq_scale = np.array([1, 2, 4, 8], dtype=float)
|
| 13 |
+
|
| 14 |
+
# Components and colors (aligned with the provided example)
|
| 15 |
+
components = [
|
| 16 |
+
("parameters", "rgb(78, 165, 183)"),
|
| 17 |
+
("gradients", "rgb(227, 138, 66)"),
|
| 18 |
+
("optimizer", "rgb(232, 137, 171)"),
|
| 19 |
+
("activations", "rgb(206, 192, 250)"),
|
| 20 |
+
]
|
| 21 |
+
|
| 22 |
+
# Model sizes and base memory (GB) for params/grad/opt (constant vs seq), by size
|
| 23 |
+
model_sizes = ["1B", "3B", "8B", "70B", "405B"]
|
| 24 |
+
params_mem = {
|
| 25 |
+
"1B": 4.0,
|
| 26 |
+
"3B": 13.3,
|
| 27 |
+
"8B": 26.0,
|
| 28 |
+
"70B": 244.0,
|
| 29 |
+
"405B": 1520.0,
|
| 30 |
+
}
|
| 31 |
+
# Optimizer ~= 2x params; gradients ~= params (illustrative)
|
| 32 |
+
|
| 33 |
+
# Activations base coefficient per size (growth ~ coeff * (seq/1024)^2)
|
| 34 |
+
act_coeff = {
|
| 35 |
+
"1B": 3.6,
|
| 36 |
+
"3B": 9.3,
|
| 37 |
+
"8B": 46.2,
|
| 38 |
+
"70B": 145.7,
|
| 39 |
+
"405B": 1519.9,
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
def activations_curve(size_key: str, recompute: str) -> np.ndarray:
|
| 43 |
+
base = act_coeff[size_key] * (seq_scale ** 2)
|
| 44 |
+
if recompute == "selective":
|
| 45 |
+
return base * 0.25
|
| 46 |
+
if recompute == "full":
|
| 47 |
+
return base * (1.0/16.0)
|
| 48 |
+
return base
|
| 49 |
+
|
| 50 |
+
def stack_for(size_key: str, recompute: str):
|
| 51 |
+
p = np.full_like(seq_scale, params_mem[size_key], dtype=float)
|
| 52 |
+
g = np.full_like(seq_scale, params_mem[size_key], dtype=float)
|
| 53 |
+
o = np.full_like(seq_scale, 2.0 * params_mem[size_key], dtype=float)
|
| 54 |
+
a = activations_curve(size_key, recompute)
|
| 55 |
+
return {
|
| 56 |
+
"parameters": p,
|
| 57 |
+
"gradients": g,
|
| 58 |
+
"optimizer": o,
|
| 59 |
+
"activations": a,
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
# Precompute all combinations
|
| 63 |
+
recomp_modes = ["none", "selective", "full"]
|
| 64 |
+
Y = {mode: {size: stack_for(size, mode) for size in model_sizes} for mode in recomp_modes}
|
| 65 |
+
|
| 66 |
+
# Build traces: 4 traces per size (20 total). Start with size index 0 visible
|
| 67 |
+
fig = go.Figure()
|
| 68 |
+
for size in model_sizes:
|
| 69 |
+
for comp_name, color in components:
|
| 70 |
+
fig.add_bar(
|
| 71 |
+
x=seq_labels,
|
| 72 |
+
y=Y["none"][size][comp_name],
|
| 73 |
+
name=comp_name,
|
| 74 |
+
marker=dict(color=color),
|
| 75 |
+
hovertemplate="Seq len=%{x}<br>Mem=%{y:.1f}GB<br>%{data.name}<extra></extra>",
|
| 76 |
+
showlegend=True,
|
| 77 |
+
visible=(size == model_sizes[0]),
|
| 78 |
+
)
|
| 79 |
+
|
| 80 |
+
# Compute y-axis ranges per size and recomputation
|
| 81 |
+
def max_total(size: str, mode: str) -> float:
|
| 82 |
+
stacks = Y[mode][size]
|
| 83 |
+
totals = stacks["parameters"] + stacks["gradients"] + stacks["optimizer"] + stacks["activations"]
|
| 84 |
+
return float(np.max(totals))
|
| 85 |
+
|
| 86 |
+
layout_y_ranges = {mode: {size: 1.05 * max_total(size, mode) for size in model_sizes} for mode in recomp_modes}
|
| 87 |
+
|
| 88 |
+
# Layout
|
| 89 |
+
fig.update_layout(
|
| 90 |
+
barmode="stack",
|
| 91 |
+
autosize=True,
|
| 92 |
+
paper_bgcolor="rgba(0,0,0,0)",
|
| 93 |
+
plot_bgcolor="rgba(0,0,0,0)",
|
| 94 |
+
margin=dict(l=40, r=28, t=20, b=40),
|
| 95 |
+
hovermode="x unified",
|
| 96 |
+
legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="left", x=0),
|
| 97 |
+
xaxis=dict(title=dict(text="Sequence Length"), fixedrange=True),
|
| 98 |
+
yaxis=dict(title=dict(text="Memory (GB)"), fixedrange=True),
|
| 99 |
+
)
|
| 100 |
+
|
| 101 |
+
# Updatemenus: Model Size (toggle visibility)
|
| 102 |
+
buttons_sizes = []
|
| 103 |
+
for i, size in enumerate(model_sizes):
|
| 104 |
+
visible = [False] * (len(model_sizes) * len(components))
|
| 105 |
+
start = i * len(components)
|
| 106 |
+
for j in range(len(components)):
|
| 107 |
+
visible[start + j] = True
|
| 108 |
+
buttons_sizes.append(dict(
|
| 109 |
+
label=size,
|
| 110 |
+
method="update",
|
| 111 |
+
args=[
|
| 112 |
+
{"visible": visible},
|
| 113 |
+
{"yaxis": {"range": [0, layout_y_ranges["none"][size]]}},
|
| 114 |
+
],
|
| 115 |
+
))
|
| 116 |
+
|
| 117 |
+
# Updatemenus: Recomputation (restyle y across all traces)
|
| 118 |
+
def y_for_mode(mode: str):
|
| 119 |
+
ys = []
|
| 120 |
+
for size in model_sizes:
|
| 121 |
+
stacks = Y[mode][size]
|
| 122 |
+
for comp_name, _ in components:
|
| 123 |
+
ys.append(stacks[comp_name])
|
| 124 |
+
return ys
|
| 125 |
+
|
| 126 |
+
buttons_recomp = []
|
| 127 |
+
for mode, label in [("none", "None"), ("selective", "selective"), ("full", "full")]:
|
| 128 |
+
ys = y_for_mode(mode)
|
| 129 |
+
# Flatten into the format expected by Plotly for multiple traces
|
| 130 |
+
buttons_recomp.append(dict(
|
| 131 |
+
label=label,
|
| 132 |
+
method="update",
|
| 133 |
+
args=[
|
| 134 |
+
{"y": ys},
|
| 135 |
+
{"yaxis": {"range": [0, max(layout_y_ranges[mode].values())]}},
|
| 136 |
+
],
|
| 137 |
+
))
|
| 138 |
+
|
| 139 |
+
fig.update_layout(
|
| 140 |
+
updatemenus=[
|
| 141 |
+
dict(
|
| 142 |
+
type="dropdown",
|
| 143 |
+
x=1.03, xanchor="left",
|
| 144 |
+
y=0.60, yanchor="top",
|
| 145 |
+
showactive=True,
|
| 146 |
+
active=0,
|
| 147 |
+
buttons=buttons_sizes,
|
| 148 |
+
),
|
| 149 |
+
dict(
|
| 150 |
+
type="dropdown",
|
| 151 |
+
x=1.03, xanchor="left",
|
| 152 |
+
y=0.40, yanchor="top",
|
| 153 |
+
showactive=True,
|
| 154 |
+
active=0,
|
| 155 |
+
buttons=buttons_recomp,
|
| 156 |
+
),
|
| 157 |
+
],
|
| 158 |
+
annotations=[
|
| 159 |
+
dict(text="Model Size:", x=1.03, xanchor="left", xref="paper", y=0.60, yanchor="bottom", yref="paper", showarrow=False),
|
| 160 |
+
dict(text="Recomputation:", x=1.03, xanchor="left", xref="paper", y=0.40, yanchor="bottom", yref="paper", showarrow=False),
|
| 161 |
+
],
|
| 162 |
+
)
|
| 163 |
+
|
| 164 |
+
# Write fragment
|
| 165 |
+
fig.write_html("./plotly-bar.html",
|
| 166 |
+
include_plotlyjs=False,
|
| 167 |
+
full_html=False,
|
| 168 |
+
config={
|
| 169 |
+
'displayModeBar': False,
|
| 170 |
+
'responsive': True,
|
| 171 |
+
'scrollZoom': False,
|
| 172 |
+
})
|
| 173 |
+
|
app/src/content/embeds/plotly/heatmap.py
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import plotly.graph_objects as go
|
| 2 |
+
import plotly.io as pio
|
| 3 |
+
import numpy as np
|
| 4 |
+
import datetime as dt
|
| 5 |
+
import os
|
| 6 |
+
|
| 7 |
+
"""
|
| 8 |
+
Calendar-like heatmap (GitHub-style) over the last 52 weeks.
|
| 9 |
+
Minimal, responsive, transparent background; suitable for Distill.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
# Parameters
|
| 13 |
+
NUM_WEEKS = 52
|
| 14 |
+
DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
| 15 |
+
|
| 16 |
+
# Build dates matrix (7 rows x NUM_WEEKS columns)
|
| 17 |
+
today = dt.date.today()
|
| 18 |
+
# Align to start of current week (Monday)
|
| 19 |
+
start = today - dt.timedelta(days=(today.weekday())) # Monday of current week
|
| 20 |
+
weeks = [start - dt.timedelta(weeks=w) for w in range(NUM_WEEKS-1, -1, -1)]
|
| 21 |
+
dates = [[weeks[c] + dt.timedelta(days=r) for c in range(NUM_WEEKS)] for r in range(7)]
|
| 22 |
+
|
| 23 |
+
# Generate values (synthetic) — smooth seasonal pattern + noise
|
| 24 |
+
def gen_value(d: dt.date) -> float:
|
| 25 |
+
day_of_year = d.timetuple().tm_yday
|
| 26 |
+
base = 0.5 + 0.45 * np.sin(2 * np.pi * (day_of_year / 365.0))
|
| 27 |
+
noise = np.random.default_rng(hash(d) % 2**32).uniform(-0.15, 0.15)
|
| 28 |
+
return max(0.0, min(1.0, base + noise))
|
| 29 |
+
|
| 30 |
+
z = [[gen_value(d) for d in row] for row in dates]
|
| 31 |
+
custom = [[d.isoformat() for d in row] for row in dates]
|
| 32 |
+
|
| 33 |
+
# Colors aligned with other charts (slate / blue / gray)
|
| 34 |
+
colorscale = [
|
| 35 |
+
[0.00, "#e5e7eb"], # light gray background for low
|
| 36 |
+
[0.40, "#64748b"], # slate-500
|
| 37 |
+
[0.75, "#2563eb"], # blue-600
|
| 38 |
+
[1.00, "#4b5563"], # gray-600 (high end accent)
|
| 39 |
+
]
|
| 40 |
+
|
| 41 |
+
fig = go.Figure(
|
| 42 |
+
data=go.Heatmap(
|
| 43 |
+
z=z,
|
| 44 |
+
x=[w.isoformat() for w in weeks],
|
| 45 |
+
y=DAYS,
|
| 46 |
+
colorscale=colorscale,
|
| 47 |
+
showscale=False,
|
| 48 |
+
hovertemplate="Date: %{customdata}<br>Value: %{z:.2f}<extra></extra>",
|
| 49 |
+
customdata=custom,
|
| 50 |
+
xgap=2,
|
| 51 |
+
ygap=2,
|
| 52 |
+
)
|
| 53 |
+
)
|
| 54 |
+
|
| 55 |
+
fig.update_layout(
|
| 56 |
+
autosize=True,
|
| 57 |
+
paper_bgcolor="rgba(0,0,0,0)",
|
| 58 |
+
plot_bgcolor="rgba(0,0,0,0)",
|
| 59 |
+
margin=dict(l=28, r=12, t=8, b=28),
|
| 60 |
+
xaxis=dict(
|
| 61 |
+
showgrid=False,
|
| 62 |
+
zeroline=False,
|
| 63 |
+
showline=False,
|
| 64 |
+
ticks="",
|
| 65 |
+
showticklabels=False,
|
| 66 |
+
fixedrange=True,
|
| 67 |
+
),
|
| 68 |
+
yaxis=dict(
|
| 69 |
+
showgrid=False,
|
| 70 |
+
zeroline=False,
|
| 71 |
+
showline=False,
|
| 72 |
+
ticks="",
|
| 73 |
+
tickfont=dict(size=12, color="rgba(0,0,0,0.65)"),
|
| 74 |
+
fixedrange=True,
|
| 75 |
+
),
|
| 76 |
+
)
|
| 77 |
+
|
| 78 |
+
post_script = """
|
| 79 |
+
(function(){
|
| 80 |
+
var plots = document.querySelectorAll('.js-plotly-plot');
|
| 81 |
+
plots.forEach(function(gd){
|
| 82 |
+
function round(){
|
| 83 |
+
try {
|
| 84 |
+
var root = gd && gd.parentNode ? gd.parentNode : document;
|
| 85 |
+
var rects = root.querySelectorAll('.hoverlayer .hovertext rect');
|
| 86 |
+
rects.forEach(function(r){ r.setAttribute('rx', 8); r.setAttribute('ry', 8); });
|
| 87 |
+
} catch(e) {}
|
| 88 |
+
}
|
| 89 |
+
if (gd && gd.on){
|
| 90 |
+
gd.on('plotly_hover', round);
|
| 91 |
+
gd.on('plotly_unhover', round);
|
| 92 |
+
gd.on('plotly_relayout', round);
|
| 93 |
+
}
|
| 94 |
+
setTimeout(round, 0);
|
| 95 |
+
});
|
| 96 |
+
})();
|
| 97 |
+
"""
|
| 98 |
+
|
| 99 |
+
html = pio.to_html(
|
| 100 |
+
fig,
|
| 101 |
+
include_plotlyjs=False,
|
| 102 |
+
full_html=False,
|
| 103 |
+
post_script=post_script,
|
| 104 |
+
config={
|
| 105 |
+
"displayModeBar": False,
|
| 106 |
+
"responsive": True,
|
| 107 |
+
"scrollZoom": False,
|
| 108 |
+
"doubleClick": False,
|
| 109 |
+
"modeBarButtonsToRemove": [
|
| 110 |
+
"zoom2d", "pan2d", "select2d", "lasso2d",
|
| 111 |
+
"zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d",
|
| 112 |
+
"toggleSpikelines"
|
| 113 |
+
],
|
| 114 |
+
},
|
| 115 |
+
)
|
| 116 |
+
|
| 117 |
+
fig.write_html("./plotly-heatmap.html",
|
| 118 |
+
include_plotlyjs=False,
|
| 119 |
+
full_html=False,
|
| 120 |
+
config={
|
| 121 |
+
'displayModeBar': False,
|
| 122 |
+
'responsive': True,
|
| 123 |
+
'scrollZoom': False,
|
| 124 |
+
})
|
| 125 |
+
|
app/src/content/embeds/plotly/line.py
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import plotly.graph_objects as go
|
| 2 |
+
import plotly.io as pio
|
| 3 |
+
import numpy as np
|
| 4 |
+
import os
|
| 5 |
+
import uuid
|
| 6 |
+
|
| 7 |
+
"""
|
| 8 |
+
Interactive line chart example (Baseline / Improved / Target) with a live slider.
|
| 9 |
+
|
| 10 |
+
Context: research-style training curves for multiple datasets (CIFAR-10, CIFAR-100, ImageNet-1K).
|
| 11 |
+
The slider "Augmentation α" blends the Improved curve between the Baseline (α=0)
|
| 12 |
+
and an augmented counterpart (α=1) via a simple mixing equation.
|
| 13 |
+
Export remains responsive, with no zoom and no mode bar.
|
| 14 |
+
"""
|
| 15 |
+
|
| 16 |
+
# Grid (x) and parameterization
|
| 17 |
+
N = 240
|
| 18 |
+
x = np.linspace(0, 1, N)
|
| 19 |
+
|
| 20 |
+
# Logistic helper for smooth learning curves
|
| 21 |
+
def logistic(xv: np.ndarray, ymin: float, ymax: float, k: float, x0: float) -> np.ndarray:
|
| 22 |
+
return ymin + (ymax - ymin) / (1.0 + np.exp(-k * (xv - x0)))
|
| 23 |
+
|
| 24 |
+
# Plausible dataset params (baseline vs augmented) + a constant target line
|
| 25 |
+
datasets_params = [
|
| 26 |
+
{
|
| 27 |
+
"name": "CIFAR-10",
|
| 28 |
+
"base": {"ymin": 0.10, "ymax": 0.90, "k": 10.0, "x0": 0.55},
|
| 29 |
+
"aug": {"ymin": 0.15, "ymax": 0.96, "k": 12.0, "x0": 0.40},
|
| 30 |
+
"target": 0.97,
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"name": "CIFAR-100",
|
| 34 |
+
"base": {"ymin": 0.05, "ymax": 0.70, "k": 9.5, "x0": 0.60},
|
| 35 |
+
"aug": {"ymin": 0.08, "ymax": 0.80, "k": 11.0, "x0": 0.45},
|
| 36 |
+
"target": 0.85,
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"name": "ImageNet-1K",
|
| 40 |
+
"base": {"ymin": 0.02, "ymax": 0.68, "k": 8.5, "x0": 0.65},
|
| 41 |
+
"aug": {"ymin": 0.04, "ymax": 0.75, "k": 9.5, "x0": 0.50},
|
| 42 |
+
"target": 0.82,
|
| 43 |
+
},
|
| 44 |
+
]
|
| 45 |
+
|
| 46 |
+
# Initial dataset index and alpha
|
| 47 |
+
alpha0 = 0.7
|
| 48 |
+
ds0 = datasets_params[0]
|
| 49 |
+
base0 = logistic(x, **ds0["base"])
|
| 50 |
+
aug0 = logistic(x, **ds0["aug"])
|
| 51 |
+
target0 = np.full_like(x, ds0["target"], dtype=float)
|
| 52 |
+
|
| 53 |
+
# Traces: Baseline (fixed), Improved (blended by α), Target (constant goal)
|
| 54 |
+
blend = lambda l, e, a: (1 - a) * l + a * e
|
| 55 |
+
y1 = base0
|
| 56 |
+
y2 = blend(base0, aug0, alpha0)
|
| 57 |
+
y3 = target0
|
| 58 |
+
|
| 59 |
+
color_base = "#64748b" # slate-500
|
| 60 |
+
color_improved = "#F981D4" # pink
|
| 61 |
+
color_target = "#4b5563" # gray-600 (dash)
|
| 62 |
+
|
| 63 |
+
fig = go.Figure()
|
| 64 |
+
fig.add_trace(
|
| 65 |
+
go.Scatter(
|
| 66 |
+
x=x,
|
| 67 |
+
y=y1,
|
| 68 |
+
name="Baseline",
|
| 69 |
+
mode="lines",
|
| 70 |
+
line=dict(color=color_base, width=2, shape="spline", smoothing=0.6),
|
| 71 |
+
hovertemplate="<b>%{fullData.name}</b><br>x=%{x:.2f}<br>y=%{y:.3f}<extra></extra>",
|
| 72 |
+
showlegend=True,
|
| 73 |
+
)
|
| 74 |
+
)
|
| 75 |
+
fig.add_trace(
|
| 76 |
+
go.Scatter(
|
| 77 |
+
x=x,
|
| 78 |
+
y=y2,
|
| 79 |
+
name="Improved",
|
| 80 |
+
mode="lines",
|
| 81 |
+
line=dict(color=color_improved, width=2, shape="spline", smoothing=0.6),
|
| 82 |
+
hovertemplate="<b>%{fullData.name}</b><br>x=%{x:.2f}<br>y=%{y:.3f}<extra></extra>",
|
| 83 |
+
showlegend=True,
|
| 84 |
+
)
|
| 85 |
+
)
|
| 86 |
+
fig.add_trace(
|
| 87 |
+
go.Scatter(
|
| 88 |
+
x=x,
|
| 89 |
+
y=y3,
|
| 90 |
+
name="Target",
|
| 91 |
+
mode="lines",
|
| 92 |
+
line=dict(color=color_target, width=2, dash="dash"),
|
| 93 |
+
hovertemplate="<b>%{fullData.name}</b><br>x=%{x:.2f}<br>y=%{y:.3f}<extra></extra>",
|
| 94 |
+
showlegend=True,
|
| 95 |
+
)
|
| 96 |
+
)
|
| 97 |
+
|
| 98 |
+
fig.update_layout(
|
| 99 |
+
autosize=True,
|
| 100 |
+
paper_bgcolor="rgba(0,0,0,0)",
|
| 101 |
+
plot_bgcolor="rgba(0,0,0,0)",
|
| 102 |
+
margin=dict(l=40, r=28, t=20, b=40),
|
| 103 |
+
hovermode="x unified",
|
| 104 |
+
legend=dict(
|
| 105 |
+
orientation="v",
|
| 106 |
+
x=1,
|
| 107 |
+
y=0,
|
| 108 |
+
xanchor="right",
|
| 109 |
+
yanchor="bottom",
|
| 110 |
+
bgcolor="rgba(255,255,255,0)",
|
| 111 |
+
borderwidth=0,
|
| 112 |
+
),
|
| 113 |
+
hoverlabel=dict(
|
| 114 |
+
bgcolor="white",
|
| 115 |
+
font=dict(color="#111827", size=12),
|
| 116 |
+
bordercolor="rgba(0,0,0,0.15)",
|
| 117 |
+
align="left",
|
| 118 |
+
namelength=-1,
|
| 119 |
+
),
|
| 120 |
+
xaxis=dict(
|
| 121 |
+
showgrid=False,
|
| 122 |
+
zeroline=False,
|
| 123 |
+
showline=True,
|
| 124 |
+
linecolor="rgba(0,0,0,0.25)",
|
| 125 |
+
linewidth=1,
|
| 126 |
+
ticks="outside",
|
| 127 |
+
ticklen=6,
|
| 128 |
+
tickcolor="rgba(0,0,0,0.25)",
|
| 129 |
+
tickfont=dict(size=12, color="rgba(0,0,0,0.55)"),
|
| 130 |
+
title=None,
|
| 131 |
+
automargin=True,
|
| 132 |
+
fixedrange=True,
|
| 133 |
+
),
|
| 134 |
+
yaxis=dict(
|
| 135 |
+
showgrid=False,
|
| 136 |
+
zeroline=False,
|
| 137 |
+
showline=True,
|
| 138 |
+
linecolor="rgba(0,0,0,0.25)",
|
| 139 |
+
linewidth=1,
|
| 140 |
+
ticks="outside",
|
| 141 |
+
ticklen=6,
|
| 142 |
+
tickcolor="rgba(0,0,0,0.25)",
|
| 143 |
+
tickfont=dict(size=12, color="rgba(0,0,0,0.55)"),
|
| 144 |
+
title=None,
|
| 145 |
+
tickformat=".2f",
|
| 146 |
+
rangemode="tozero",
|
| 147 |
+
automargin=True,
|
| 148 |
+
fixedrange=True,
|
| 149 |
+
),
|
| 150 |
+
)
|
| 151 |
+
|
| 152 |
+
# Write the fragment next to this file into src/fragments/line.html (robust path)
|
| 153 |
+
output_path = os.path.join(os.path.dirname(__file__), "fragments", "line.html")
|
| 154 |
+
os.makedirs(os.path.dirname(output_path), exist_ok=True)
|
| 155 |
+
|
| 156 |
+
# Inject a small post-render script to round the hover box corners
|
| 157 |
+
post_script = """
|
| 158 |
+
(function(){
|
| 159 |
+
function attach(gd){
|
| 160 |
+
function round(){
|
| 161 |
+
try {
|
| 162 |
+
var root = gd && gd.parentNode ? gd.parentNode : document;
|
| 163 |
+
var rects = root.querySelectorAll('.hoverlayer .hovertext rect');
|
| 164 |
+
rects.forEach(function(r){ r.setAttribute('rx', 8); r.setAttribute('ry', 8); });
|
| 165 |
+
} catch(e) {}
|
| 166 |
+
}
|
| 167 |
+
if (gd && gd.on) {
|
| 168 |
+
gd.on('plotly_hover', round);
|
| 169 |
+
gd.on('plotly_unhover', round);
|
| 170 |
+
gd.on('plotly_relayout', round);
|
| 171 |
+
}
|
| 172 |
+
setTimeout(round, 0);
|
| 173 |
+
}
|
| 174 |
+
var plots = document.querySelectorAll('.js-plotly-plot');
|
| 175 |
+
plots.forEach(attach);
|
| 176 |
+
})();
|
| 177 |
+
"""
|
| 178 |
+
|
| 179 |
+
html_plot = pio.to_html(
|
| 180 |
+
fig,
|
| 181 |
+
include_plotlyjs=False,
|
| 182 |
+
full_html=False,
|
| 183 |
+
post_script=post_script,
|
| 184 |
+
config={
|
| 185 |
+
"displayModeBar": False,
|
| 186 |
+
"responsive": True,
|
| 187 |
+
"scrollZoom": False,
|
| 188 |
+
"doubleClick": False,
|
| 189 |
+
"modeBarButtonsToRemove": [
|
| 190 |
+
"zoom2d", "pan2d", "select2d", "lasso2d",
|
| 191 |
+
"zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d",
|
| 192 |
+
"toggleSpikelines"
|
| 193 |
+
],
|
| 194 |
+
},
|
| 195 |
+
)
|
| 196 |
+
|
| 197 |
+
# Build a self-contained fragment with a live slider (no mouseup required)
|
| 198 |
+
uid = uuid.uuid4().hex[:8]
|
| 199 |
+
slider_id = f"line-ex-alpha-{uid}"
|
| 200 |
+
container_id = f"line-ex-container-{uid}"
|
| 201 |
+
|
| 202 |
+
slider_tpl = '''
|
| 203 |
+
<div id="__CID__">
|
| 204 |
+
__PLOT__
|
| 205 |
+
<div class="plotly_controls" style="margin-top:12px; display:flex; gap:16px; align-items:center;">
|
| 206 |
+
<label style="font-size:12px;color:rgba(0,0,0,.65); display:flex; align-items:center; gap:6px; white-space:nowrap; padding:6px 10px;">
|
| 207 |
+
Dataset
|
| 208 |
+
<select id="__DSID__" style="font-size:12px; padding:2px 6px;">
|
| 209 |
+
<option value="0">CIFAR-10</option>
|
| 210 |
+
<option value="1">CIFAR-100</option>
|
| 211 |
+
<option value="2">ImageNet-1K</option>
|
| 212 |
+
</select>
|
| 213 |
+
</label>
|
| 214 |
+
<label style="font-size:12px;color:rgba(0,0,0,.65);display:flex;align-items:center;gap:10px; flex:1; padding:6px 10px;">
|
| 215 |
+
Augmentation α
|
| 216 |
+
<input id="__SID__" type="range" min="0" max="1" step="0.01" value="__A0__" style="flex:1;">
|
| 217 |
+
<span class="alpha-value">__A0__</span>
|
| 218 |
+
</label>
|
| 219 |
+
</div>
|
| 220 |
+
</div>
|
| 221 |
+
<script>
|
| 222 |
+
(function(){
|
| 223 |
+
var container = document.getElementById('__CID__');
|
| 224 |
+
if(!container) return;
|
| 225 |
+
var gd = container.querySelector('.js-plotly-plot');
|
| 226 |
+
var slider = document.getElementById('__SID__');
|
| 227 |
+
var dsSelect = document.getElementById('__DSID__');
|
| 228 |
+
var valueEl = container.querySelector('.alpha-value');
|
| 229 |
+
var N = __N__;
|
| 230 |
+
var xs = Array.from({length: N}, function(_,i){ return i/(N-1); });
|
| 231 |
+
function logistic(x, ymin, ymax, k, x0){ return ymin + (ymax - ymin) / (1 + Math.exp(-k*(x - x0))); }
|
| 232 |
+
function blend(l,e,a){ return (1-a)*l + a*e; }
|
| 233 |
+
var datasets = [
|
| 234 |
+
{ name:'CIFAR-10', base:{ymin:0.10,ymax:0.90,k:10.0,x0:0.55}, aug:{ymin:0.15,ymax:0.96,k:12.0,x0:0.40}, target:0.97 },
|
| 235 |
+
{ name:'CIFAR-100', base:{ymin:0.05,ymax:0.70,k:9.5,x0:0.60}, aug:{ymin:0.08,ymax:0.80,k:11.0,x0:0.45}, target:0.85 },
|
| 236 |
+
{ name:'ImageNet-1K', base:{ymin:0.02,ymax:0.68,k:8.5,x0:0.65}, aug:{ymin:0.04,ymax:0.75,k:9.5,x0:0.50}, target:0.82 }
|
| 237 |
+
];
|
| 238 |
+
var dsi = 0;
|
| 239 |
+
var yb = xs.map(function(x){ return logistic(x, datasets[dsi].base.ymin, datasets[dsi].base.ymax, datasets[dsi].base.k, datasets[dsi].base.x0); });
|
| 240 |
+
var ya = xs.map(function(x){ return logistic(x, datasets[dsi].aug.ymin, datasets[dsi].aug.ymax, datasets[dsi].aug.k, datasets[dsi].aug.x0); });
|
| 241 |
+
var yt = xs.map(function(){ return datasets[dsi].target; });
|
| 242 |
+
function applyAlpha(a){
|
| 243 |
+
var yi = yb.map(function(v,i){ return blend(v, ya[i], a); });
|
| 244 |
+
Plotly.restyle(gd, {y:[yi]}, [1]); // only Improved changes with α
|
| 245 |
+
if(valueEl) valueEl.textContent = a.toFixed(2);
|
| 246 |
+
}
|
| 247 |
+
function applyDataset(){
|
| 248 |
+
var d = datasets[dsi];
|
| 249 |
+
yb = xs.map(function(x){ return logistic(x, d.base.ymin, d.base.ymax, d.base.k, d.base.x0); });
|
| 250 |
+
ya = xs.map(function(x){ return logistic(x, d.aug.ymin, d.aug.ymax, d.aug.k, d.aug.x0); });
|
| 251 |
+
yt = xs.map(function(){ return d.target; });
|
| 252 |
+
var a = parseFloat(slider.value)||0;
|
| 253 |
+
var yi = yb.map(function(v,i){ return blend(v, ya[i], a); });
|
| 254 |
+
Plotly.restyle(gd, {y:[yb]}, [0]); // Baseline
|
| 255 |
+
Plotly.restyle(gd, {y:[yi]}, [1]); // Improved (blended)
|
| 256 |
+
Plotly.restyle(gd, {y:[yt]}, [2]); // Target
|
| 257 |
+
}
|
| 258 |
+
var initA = parseFloat(slider.value)||0;
|
| 259 |
+
slider.addEventListener('input', function(e){ applyAlpha(parseFloat(e.target.value)||0); });
|
| 260 |
+
dsSelect.addEventListener('change', function(e){ dsi = parseInt(e.target.value)||0; applyDataset(); });
|
| 261 |
+
setTimeout(function(){ applyDataset(); applyAlpha(initA); }, 0);
|
| 262 |
+
})();
|
| 263 |
+
</script>
|
| 264 |
+
'''
|
| 265 |
+
|
| 266 |
+
slider_html = (slider_tpl
|
| 267 |
+
.replace('__CID__', container_id)
|
| 268 |
+
.replace('__SID__', slider_id)
|
| 269 |
+
.replace('__A0__', f"{alpha0:.2f}")
|
| 270 |
+
.replace('__N__', str(N))
|
| 271 |
+
.replace('__PLOT__', html_plot)
|
| 272 |
+
)
|
| 273 |
+
|
| 274 |
+
with open("./plotly-line.html", "w", encoding="utf-8") as f:
|
| 275 |
+
f.write(slider_html)
|
| 276 |
+
|
app/src/content/embeds/plotly/poetry.lock
ADDED
|
@@ -0,0 +1,511 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
|
| 2 |
+
|
| 3 |
+
[[package]]
|
| 4 |
+
name = "certifi"
|
| 5 |
+
version = "2025.8.3"
|
| 6 |
+
description = "Python package for providing Mozilla's CA Bundle."
|
| 7 |
+
optional = false
|
| 8 |
+
python-versions = ">=3.7"
|
| 9 |
+
groups = ["main"]
|
| 10 |
+
files = [
|
| 11 |
+
{file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"},
|
| 12 |
+
{file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"},
|
| 13 |
+
]
|
| 14 |
+
|
| 15 |
+
[[package]]
|
| 16 |
+
name = "charset-normalizer"
|
| 17 |
+
version = "3.4.3"
|
| 18 |
+
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
| 19 |
+
optional = false
|
| 20 |
+
python-versions = ">=3.7"
|
| 21 |
+
groups = ["main"]
|
| 22 |
+
files = [
|
| 23 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"},
|
| 24 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"},
|
| 25 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"},
|
| 26 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"},
|
| 27 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"},
|
| 28 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"},
|
| 29 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"},
|
| 30 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"},
|
| 31 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"},
|
| 32 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"},
|
| 33 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"},
|
| 34 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"},
|
| 35 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"},
|
| 36 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"},
|
| 37 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"},
|
| 38 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"},
|
| 39 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"},
|
| 40 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"},
|
| 41 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"},
|
| 42 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"},
|
| 43 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"},
|
| 44 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"},
|
| 45 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"},
|
| 46 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"},
|
| 47 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"},
|
| 48 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"},
|
| 49 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"},
|
| 50 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"},
|
| 51 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"},
|
| 52 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"},
|
| 53 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"},
|
| 54 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"},
|
| 55 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"},
|
| 56 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"},
|
| 57 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"},
|
| 58 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"},
|
| 59 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"},
|
| 60 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"},
|
| 61 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"},
|
| 62 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"},
|
| 63 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"},
|
| 64 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"},
|
| 65 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"},
|
| 66 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"},
|
| 67 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"},
|
| 68 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"},
|
| 69 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"},
|
| 70 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"},
|
| 71 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"},
|
| 72 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"},
|
| 73 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"},
|
| 74 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"},
|
| 75 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"},
|
| 76 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"},
|
| 77 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"},
|
| 78 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"},
|
| 79 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"},
|
| 80 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"},
|
| 81 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"},
|
| 82 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"},
|
| 83 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"},
|
| 84 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"},
|
| 85 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"},
|
| 86 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"},
|
| 87 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"},
|
| 88 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"},
|
| 89 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"},
|
| 90 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"},
|
| 91 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"},
|
| 92 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"},
|
| 93 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"},
|
| 94 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"},
|
| 95 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"},
|
| 96 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"},
|
| 97 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"},
|
| 98 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"},
|
| 99 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"},
|
| 100 |
+
{file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"},
|
| 101 |
+
{file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"},
|
| 102 |
+
]
|
| 103 |
+
|
| 104 |
+
[[package]]
|
| 105 |
+
name = "idna"
|
| 106 |
+
version = "3.10"
|
| 107 |
+
description = "Internationalized Domain Names in Applications (IDNA)"
|
| 108 |
+
optional = false
|
| 109 |
+
python-versions = ">=3.6"
|
| 110 |
+
groups = ["main"]
|
| 111 |
+
files = [
|
| 112 |
+
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
| 113 |
+
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
| 114 |
+
]
|
| 115 |
+
|
| 116 |
+
[package.extras]
|
| 117 |
+
all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
|
| 118 |
+
|
| 119 |
+
[[package]]
|
| 120 |
+
name = "markdown"
|
| 121 |
+
version = "3.8.2"
|
| 122 |
+
description = "Python implementation of John Gruber's Markdown."
|
| 123 |
+
optional = false
|
| 124 |
+
python-versions = ">=3.9"
|
| 125 |
+
groups = ["main"]
|
| 126 |
+
files = [
|
| 127 |
+
{file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"},
|
| 128 |
+
{file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"},
|
| 129 |
+
]
|
| 130 |
+
|
| 131 |
+
[package.extras]
|
| 132 |
+
docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"]
|
| 133 |
+
testing = ["coverage", "pyyaml"]
|
| 134 |
+
|
| 135 |
+
[[package]]
|
| 136 |
+
name = "numpy"
|
| 137 |
+
version = "2.2.6"
|
| 138 |
+
description = "Fundamental package for array computing in Python"
|
| 139 |
+
optional = false
|
| 140 |
+
python-versions = ">=3.10"
|
| 141 |
+
groups = ["main"]
|
| 142 |
+
markers = "python_version == \"3.10\""
|
| 143 |
+
files = [
|
| 144 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb"},
|
| 145 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90"},
|
| 146 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163"},
|
| 147 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf"},
|
| 148 |
+
{file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83"},
|
| 149 |
+
{file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915"},
|
| 150 |
+
{file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680"},
|
| 151 |
+
{file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289"},
|
| 152 |
+
{file = "numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d"},
|
| 153 |
+
{file = "numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3"},
|
| 154 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae"},
|
| 155 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a"},
|
| 156 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42"},
|
| 157 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491"},
|
| 158 |
+
{file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a"},
|
| 159 |
+
{file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf"},
|
| 160 |
+
{file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1"},
|
| 161 |
+
{file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab"},
|
| 162 |
+
{file = "numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47"},
|
| 163 |
+
{file = "numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303"},
|
| 164 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff"},
|
| 165 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c"},
|
| 166 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3"},
|
| 167 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282"},
|
| 168 |
+
{file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87"},
|
| 169 |
+
{file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249"},
|
| 170 |
+
{file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49"},
|
| 171 |
+
{file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de"},
|
| 172 |
+
{file = "numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4"},
|
| 173 |
+
{file = "numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2"},
|
| 174 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84"},
|
| 175 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b"},
|
| 176 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d"},
|
| 177 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566"},
|
| 178 |
+
{file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f"},
|
| 179 |
+
{file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f"},
|
| 180 |
+
{file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868"},
|
| 181 |
+
{file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d"},
|
| 182 |
+
{file = "numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd"},
|
| 183 |
+
{file = "numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c"},
|
| 184 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6"},
|
| 185 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda"},
|
| 186 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40"},
|
| 187 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8"},
|
| 188 |
+
{file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f"},
|
| 189 |
+
{file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa"},
|
| 190 |
+
{file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571"},
|
| 191 |
+
{file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1"},
|
| 192 |
+
{file = "numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff"},
|
| 193 |
+
{file = "numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06"},
|
| 194 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d"},
|
| 195 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db"},
|
| 196 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543"},
|
| 197 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00"},
|
| 198 |
+
{file = "numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd"},
|
| 199 |
+
]
|
| 200 |
+
|
| 201 |
+
[[package]]
|
| 202 |
+
name = "numpy"
|
| 203 |
+
version = "2.3.2"
|
| 204 |
+
description = "Fundamental package for array computing in Python"
|
| 205 |
+
optional = false
|
| 206 |
+
python-versions = ">=3.11"
|
| 207 |
+
groups = ["main"]
|
| 208 |
+
markers = "python_version >= \"3.11\""
|
| 209 |
+
files = [
|
| 210 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:852ae5bed3478b92f093e30f785c98e0cb62fa0a939ed057c31716e18a7a22b9"},
|
| 211 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a0e27186e781a69959d0230dd9909b5e26024f8da10683bd6344baea1885168"},
|
| 212 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:f0a1a8476ad77a228e41619af2fa9505cf69df928e9aaa165746584ea17fed2b"},
|
| 213 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cbc95b3813920145032412f7e33d12080f11dc776262df1712e1638207dde9e8"},
|
| 214 |
+
{file = "numpy-2.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f75018be4980a7324edc5930fe39aa391d5734531b1926968605416ff58c332d"},
|
| 215 |
+
{file = "numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20b8200721840f5621b7bd03f8dcd78de33ec522fc40dc2641aa09537df010c3"},
|
| 216 |
+
{file = "numpy-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f91e5c028504660d606340a084db4b216567ded1056ea2b4be4f9d10b67197f"},
|
| 217 |
+
{file = "numpy-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fb1752a3bb9a3ad2d6b090b88a9a0ae1cd6f004ef95f75825e2f382c183b2097"},
|
| 218 |
+
{file = "numpy-2.3.2-cp311-cp311-win32.whl", hash = "sha256:4ae6863868aaee2f57503c7a5052b3a2807cf7a3914475e637a0ecd366ced220"},
|
| 219 |
+
{file = "numpy-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:240259d6564f1c65424bcd10f435145a7644a65a6811cfc3201c4a429ba79170"},
|
| 220 |
+
{file = "numpy-2.3.2-cp311-cp311-win_arm64.whl", hash = "sha256:4209f874d45f921bde2cff1ffcd8a3695f545ad2ffbef6d3d3c6768162efab89"},
|
| 221 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bc3186bea41fae9d8e90c2b4fb5f0a1f5a690682da79b92574d63f56b529080b"},
|
| 222 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f4f0215edb189048a3c03bd5b19345bdfa7b45a7a6f72ae5945d2a28272727f"},
|
| 223 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8b1224a734cd509f70816455c3cffe13a4f599b1bf7130f913ba0e2c0b2006c0"},
|
| 224 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3dcf02866b977a38ba3ec10215220609ab9667378a9e2150615673f3ffd6c73b"},
|
| 225 |
+
{file = "numpy-2.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:572d5512df5470f50ada8d1972c5f1082d9a0b7aa5944db8084077570cf98370"},
|
| 226 |
+
{file = "numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8145dd6d10df13c559d1e4314df29695613575183fa2e2d11fac4c208c8a1f73"},
|
| 227 |
+
{file = "numpy-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:103ea7063fa624af04a791c39f97070bf93b96d7af7eb23530cd087dc8dbe9dc"},
|
| 228 |
+
{file = "numpy-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc927d7f289d14f5e037be917539620603294454130b6de200091e23d27dc9be"},
|
| 229 |
+
{file = "numpy-2.3.2-cp312-cp312-win32.whl", hash = "sha256:d95f59afe7f808c103be692175008bab926b59309ade3e6d25009e9a171f7036"},
|
| 230 |
+
{file = "numpy-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:9e196ade2400c0c737d93465327d1ae7c06c7cb8a1756121ebf54b06ca183c7f"},
|
| 231 |
+
{file = "numpy-2.3.2-cp312-cp312-win_arm64.whl", hash = "sha256:ee807923782faaf60d0d7331f5e86da7d5e3079e28b291973c545476c2b00d07"},
|
| 232 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8d9727f5316a256425892b043736d63e89ed15bbfe6556c5ff4d9d4448ff3b3"},
|
| 233 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:efc81393f25f14d11c9d161e46e6ee348637c0a1e8a54bf9dedc472a3fae993b"},
|
| 234 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dd937f088a2df683cbb79dda9a772b62a3e5a8a7e76690612c2737f38c6ef1b6"},
|
| 235 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:11e58218c0c46c80509186e460d79fbdc9ca1eb8d8aee39d8f2dc768eb781089"},
|
| 236 |
+
{file = "numpy-2.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5ad4ebcb683a1f99f4f392cc522ee20a18b2bb12a2c1c42c3d48d5a1adc9d3d2"},
|
| 237 |
+
{file = "numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:938065908d1d869c7d75d8ec45f735a034771c6ea07088867f713d1cd3bbbe4f"},
|
| 238 |
+
{file = "numpy-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66459dccc65d8ec98cc7df61307b64bf9e08101f9598755d42d8ae65d9a7a6ee"},
|
| 239 |
+
{file = "numpy-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7af9ed2aa9ec5950daf05bb11abc4076a108bd3c7db9aa7251d5f107079b6a6"},
|
| 240 |
+
{file = "numpy-2.3.2-cp313-cp313-win32.whl", hash = "sha256:906a30249315f9c8e17b085cc5f87d3f369b35fedd0051d4a84686967bdbbd0b"},
|
| 241 |
+
{file = "numpy-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:c63d95dc9d67b676e9108fe0d2182987ccb0f11933c1e8959f42fa0da8d4fa56"},
|
| 242 |
+
{file = "numpy-2.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:b05a89f2fb84d21235f93de47129dd4f11c16f64c87c33f5e284e6a3a54e43f2"},
|
| 243 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4e6ecfeddfa83b02318f4d84acf15fbdbf9ded18e46989a15a8b6995dfbf85ab"},
|
| 244 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:508b0eada3eded10a3b55725b40806a4b855961040180028f52580c4729916a2"},
|
| 245 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:754d6755d9a7588bdc6ac47dc4ee97867271b17cee39cb87aef079574366db0a"},
|
| 246 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f66e7d2b2d7712410d3bc5684149040ef5f19856f20277cd17ea83e5006286"},
|
| 247 |
+
{file = "numpy-2.3.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de6ea4e5a65d5a90c7d286ddff2b87f3f4ad61faa3db8dabe936b34c2275b6f8"},
|
| 248 |
+
{file = "numpy-2.3.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3ef07ec8cbc8fc9e369c8dcd52019510c12da4de81367d8b20bc692aa07573a"},
|
| 249 |
+
{file = "numpy-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:27c9f90e7481275c7800dc9c24b7cc40ace3fdb970ae4d21eaff983a32f70c91"},
|
| 250 |
+
{file = "numpy-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:07b62978075b67eee4065b166d000d457c82a1efe726cce608b9db9dd66a73a5"},
|
| 251 |
+
{file = "numpy-2.3.2-cp313-cp313t-win32.whl", hash = "sha256:c771cfac34a4f2c0de8e8c97312d07d64fd8f8ed45bc9f5726a7e947270152b5"},
|
| 252 |
+
{file = "numpy-2.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:72dbebb2dcc8305c431b2836bcc66af967df91be793d63a24e3d9b741374c450"},
|
| 253 |
+
{file = "numpy-2.3.2-cp313-cp313t-win_arm64.whl", hash = "sha256:72c6df2267e926a6d5286b0a6d556ebe49eae261062059317837fda12ddf0c1a"},
|
| 254 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:448a66d052d0cf14ce9865d159bfc403282c9bc7bb2a31b03cc18b651eca8b1a"},
|
| 255 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:546aaf78e81b4081b2eba1d105c3b34064783027a06b3ab20b6eba21fb64132b"},
|
| 256 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:87c930d52f45df092f7578889711a0768094debf73cfcde105e2d66954358125"},
|
| 257 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:8dc082ea901a62edb8f59713c6a7e28a85daddcb67454c839de57656478f5b19"},
|
| 258 |
+
{file = "numpy-2.3.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af58de8745f7fa9ca1c0c7c943616c6fe28e75d0c81f5c295810e3c83b5be92f"},
|
| 259 |
+
{file = "numpy-2.3.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed5527c4cf10f16c6d0b6bee1f89958bccb0ad2522c8cadc2efd318bcd545f5"},
|
| 260 |
+
{file = "numpy-2.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:095737ed986e00393ec18ec0b21b47c22889ae4b0cd2d5e88342e08b01141f58"},
|
| 261 |
+
{file = "numpy-2.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5e40e80299607f597e1a8a247ff8d71d79c5b52baa11cc1cce30aa92d2da6e0"},
|
| 262 |
+
{file = "numpy-2.3.2-cp314-cp314-win32.whl", hash = "sha256:7d6e390423cc1f76e1b8108c9b6889d20a7a1f59d9a60cac4a050fa734d6c1e2"},
|
| 263 |
+
{file = "numpy-2.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:b9d0878b21e3918d76d2209c924ebb272340da1fb51abc00f986c258cd5e957b"},
|
| 264 |
+
{file = "numpy-2.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:2738534837c6a1d0c39340a190177d7d66fdf432894f469728da901f8f6dc910"},
|
| 265 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:4d002ecf7c9b53240be3bb69d80f86ddbd34078bae04d87be81c1f58466f264e"},
|
| 266 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:293b2192c6bcce487dbc6326de5853787f870aeb6c43f8f9c6496db5b1781e45"},
|
| 267 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0a4f2021a6da53a0d580d6ef5db29947025ae8b35b3250141805ea9a32bbe86b"},
|
| 268 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9c144440db4bf3bb6372d2c3e49834cc0ff7bb4c24975ab33e01199e645416f2"},
|
| 269 |
+
{file = "numpy-2.3.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f92d6c2a8535dc4fe4419562294ff957f83a16ebdec66df0805e473ffaad8bd0"},
|
| 270 |
+
{file = "numpy-2.3.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cefc2219baa48e468e3db7e706305fcd0c095534a192a08f31e98d83a7d45fb0"},
|
| 271 |
+
{file = "numpy-2.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:76c3e9501ceb50b2ff3824c3589d5d1ab4ac857b0ee3f8f49629d0de55ecf7c2"},
|
| 272 |
+
{file = "numpy-2.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:122bf5ed9a0221b3419672493878ba4967121514b1d7d4656a7580cd11dddcbf"},
|
| 273 |
+
{file = "numpy-2.3.2-cp314-cp314t-win32.whl", hash = "sha256:6f1ae3dcb840edccc45af496f312528c15b1f79ac318169d094e85e4bb35fdf1"},
|
| 274 |
+
{file = "numpy-2.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:087ffc25890d89a43536f75c5fe8770922008758e8eeeef61733957041ed2f9b"},
|
| 275 |
+
{file = "numpy-2.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:092aeb3449833ea9c0bf0089d70c29ae480685dd2377ec9cdbbb620257f84631"},
|
| 276 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:14a91ebac98813a49bc6aa1a0dfc09513dcec1d97eaf31ca21a87221a1cdcb15"},
|
| 277 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:71669b5daae692189540cffc4c439468d35a3f84f0c88b078ecd94337f6cb0ec"},
|
| 278 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:69779198d9caee6e547adb933941ed7520f896fd9656834c300bdf4dd8642712"},
|
| 279 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2c3271cc4097beb5a60f010bcc1cc204b300bb3eafb4399376418a83a1c6373c"},
|
| 280 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8446acd11fe3dc1830568c941d44449fd5cb83068e5c70bd5a470d323d448296"},
|
| 281 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aa098a5ab53fa407fded5870865c6275a5cd4101cfdef8d6fafc48286a96e981"},
|
| 282 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6936aff90dda378c09bea075af0d9c675fe3a977a9d2402f95a87f440f59f619"},
|
| 283 |
+
{file = "numpy-2.3.2.tar.gz", hash = "sha256:e0486a11ec30cdecb53f184d496d1c6a20786c81e55e41640270130056f8ee48"},
|
| 284 |
+
]
|
| 285 |
+
|
| 286 |
+
[[package]]
|
| 287 |
+
name = "packaging"
|
| 288 |
+
version = "25.0"
|
| 289 |
+
description = "Core utilities for Python packages"
|
| 290 |
+
optional = false
|
| 291 |
+
python-versions = ">=3.8"
|
| 292 |
+
groups = ["main"]
|
| 293 |
+
files = [
|
| 294 |
+
{file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"},
|
| 295 |
+
{file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"},
|
| 296 |
+
]
|
| 297 |
+
|
| 298 |
+
[[package]]
|
| 299 |
+
name = "pandas"
|
| 300 |
+
version = "2.3.2"
|
| 301 |
+
description = "Powerful data structures for data analysis, time series, and statistics"
|
| 302 |
+
optional = false
|
| 303 |
+
python-versions = ">=3.9"
|
| 304 |
+
groups = ["main"]
|
| 305 |
+
files = [
|
| 306 |
+
{file = "pandas-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35"},
|
| 307 |
+
{file = "pandas-2.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b"},
|
| 308 |
+
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c05e15111221384019897df20c6fe893b2f697d03c811ee67ec9e0bb5a3424"},
|
| 309 |
+
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc03acc273c5515ab69f898df99d9d4f12c4d70dbfc24c3acc6203751d0804cf"},
|
| 310 |
+
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d25c20a03e8870f6339bcf67281b946bd20b86f1a544ebbebb87e66a8d642cba"},
|
| 311 |
+
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21bb612d148bb5860b7eb2c10faacf1a810799245afd342cf297d7551513fbb6"},
|
| 312 |
+
{file = "pandas-2.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:b62d586eb25cb8cb70a5746a378fc3194cb7f11ea77170d59f889f5dfe3cec7a"},
|
| 313 |
+
{file = "pandas-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1333e9c299adcbb68ee89a9bb568fc3f20f9cbb419f1dd5225071e6cddb2a743"},
|
| 314 |
+
{file = "pandas-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76972bcbd7de8e91ad5f0ca884a9f2c477a2125354af624e022c49e5bd0dfff4"},
|
| 315 |
+
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b98bdd7c456a05eef7cd21fd6b29e3ca243591fe531c62be94a2cc987efb5ac2"},
|
| 316 |
+
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d81573b3f7db40d020983f78721e9bfc425f411e616ef019a10ebf597aedb2e"},
|
| 317 |
+
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e190b738675a73b581736cc8ec71ae113d6c3768d0bd18bffa5b9a0927b0b6ea"},
|
| 318 |
+
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c253828cb08f47488d60f43c5fc95114c771bbfff085da54bfc79cb4f9e3a372"},
|
| 319 |
+
{file = "pandas-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:9467697b8083f9667b212633ad6aa4ab32436dcbaf4cd57325debb0ddef2012f"},
|
| 320 |
+
{file = "pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9"},
|
| 321 |
+
{file = "pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b"},
|
| 322 |
+
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175"},
|
| 323 |
+
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9"},
|
| 324 |
+
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4"},
|
| 325 |
+
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811"},
|
| 326 |
+
{file = "pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae"},
|
| 327 |
+
{file = "pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e"},
|
| 328 |
+
{file = "pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9"},
|
| 329 |
+
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a"},
|
| 330 |
+
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b"},
|
| 331 |
+
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6"},
|
| 332 |
+
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a"},
|
| 333 |
+
{file = "pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b"},
|
| 334 |
+
{file = "pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57"},
|
| 335 |
+
{file = "pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2"},
|
| 336 |
+
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9"},
|
| 337 |
+
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2"},
|
| 338 |
+
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012"},
|
| 339 |
+
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370"},
|
| 340 |
+
{file = "pandas-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88080a0ff8a55eac9c84e3ff3c7665b3b5476c6fbc484775ca1910ce1c3e0b87"},
|
| 341 |
+
{file = "pandas-2.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d4a558c7620340a0931828d8065688b3cc5b4c8eb674bcaf33d18ff4a6870b4a"},
|
| 342 |
+
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45178cf09d1858a1509dc73ec261bf5b25a625a389b65be2e47b559905f0ab6a"},
|
| 343 |
+
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77cefe00e1b210f9c76c697fedd8fdb8d3dd86563e9c8adc9fa72b90f5e9e4c2"},
|
| 344 |
+
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:13bd629c653856f00c53dc495191baa59bcafbbf54860a46ecc50d3a88421a96"},
|
| 345 |
+
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:36d627906fd44b5fd63c943264e11e96e923f8de77d6016dc2f667b9ad193438"},
|
| 346 |
+
{file = "pandas-2.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:a9d7ec92d71a420185dec44909c32e9a362248c4ae2238234b76d5be37f208cc"},
|
| 347 |
+
{file = "pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb"},
|
| 348 |
+
]
|
| 349 |
+
|
| 350 |
+
[package.dependencies]
|
| 351 |
+
numpy = [
|
| 352 |
+
{version = ">=1.22.4", markers = "python_version < \"3.11\""},
|
| 353 |
+
{version = ">=1.23.2", markers = "python_version == \"3.11\""},
|
| 354 |
+
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
|
| 355 |
+
]
|
| 356 |
+
python-dateutil = ">=2.8.2"
|
| 357 |
+
pytz = ">=2020.1"
|
| 358 |
+
tzdata = ">=2022.7"
|
| 359 |
+
|
| 360 |
+
[package.extras]
|
| 361 |
+
all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
|
| 362 |
+
aws = ["s3fs (>=2022.11.0)"]
|
| 363 |
+
clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
|
| 364 |
+
compression = ["zstandard (>=0.19.0)"]
|
| 365 |
+
computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
|
| 366 |
+
consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
|
| 367 |
+
excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
|
| 368 |
+
feather = ["pyarrow (>=10.0.1)"]
|
| 369 |
+
fss = ["fsspec (>=2022.11.0)"]
|
| 370 |
+
gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
|
| 371 |
+
hdf5 = ["tables (>=3.8.0)"]
|
| 372 |
+
html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
|
| 373 |
+
mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
|
| 374 |
+
output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
|
| 375 |
+
parquet = ["pyarrow (>=10.0.1)"]
|
| 376 |
+
performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
|
| 377 |
+
plot = ["matplotlib (>=3.6.3)"]
|
| 378 |
+
postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
|
| 379 |
+
pyarrow = ["pyarrow (>=10.0.1)"]
|
| 380 |
+
spss = ["pyreadstat (>=1.2.0)"]
|
| 381 |
+
sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
|
| 382 |
+
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
|
| 383 |
+
xml = ["lxml (>=4.9.2)"]
|
| 384 |
+
|
| 385 |
+
[[package]]
|
| 386 |
+
name = "plotly"
|
| 387 |
+
version = "5.24.1"
|
| 388 |
+
description = "An open-source, interactive data visualization library for Python"
|
| 389 |
+
optional = false
|
| 390 |
+
python-versions = ">=3.8"
|
| 391 |
+
groups = ["main"]
|
| 392 |
+
files = [
|
| 393 |
+
{file = "plotly-5.24.1-py3-none-any.whl", hash = "sha256:f67073a1e637eb0dc3e46324d9d51e2fe76e9727c892dde64ddf1e1b51f29089"},
|
| 394 |
+
{file = "plotly-5.24.1.tar.gz", hash = "sha256:dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae"},
|
| 395 |
+
]
|
| 396 |
+
|
| 397 |
+
[package.dependencies]
|
| 398 |
+
packaging = "*"
|
| 399 |
+
tenacity = ">=6.2.0"
|
| 400 |
+
|
| 401 |
+
[[package]]
|
| 402 |
+
name = "python-dateutil"
|
| 403 |
+
version = "2.9.0.post0"
|
| 404 |
+
description = "Extensions to the standard Python datetime module"
|
| 405 |
+
optional = false
|
| 406 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
| 407 |
+
groups = ["main"]
|
| 408 |
+
files = [
|
| 409 |
+
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
|
| 410 |
+
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
|
| 411 |
+
]
|
| 412 |
+
|
| 413 |
+
[package.dependencies]
|
| 414 |
+
six = ">=1.5"
|
| 415 |
+
|
| 416 |
+
[[package]]
|
| 417 |
+
name = "pytz"
|
| 418 |
+
version = "2025.2"
|
| 419 |
+
description = "World timezone definitions, modern and historical"
|
| 420 |
+
optional = false
|
| 421 |
+
python-versions = "*"
|
| 422 |
+
groups = ["main"]
|
| 423 |
+
files = [
|
| 424 |
+
{file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
|
| 425 |
+
{file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
|
| 426 |
+
]
|
| 427 |
+
|
| 428 |
+
[[package]]
|
| 429 |
+
name = "requests"
|
| 430 |
+
version = "2.32.5"
|
| 431 |
+
description = "Python HTTP for Humans."
|
| 432 |
+
optional = false
|
| 433 |
+
python-versions = ">=3.9"
|
| 434 |
+
groups = ["main"]
|
| 435 |
+
files = [
|
| 436 |
+
{file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
|
| 437 |
+
{file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
|
| 438 |
+
]
|
| 439 |
+
|
| 440 |
+
[package.dependencies]
|
| 441 |
+
certifi = ">=2017.4.17"
|
| 442 |
+
charset_normalizer = ">=2,<4"
|
| 443 |
+
idna = ">=2.5,<4"
|
| 444 |
+
urllib3 = ">=1.21.1,<3"
|
| 445 |
+
|
| 446 |
+
[package.extras]
|
| 447 |
+
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
| 448 |
+
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
| 449 |
+
|
| 450 |
+
[[package]]
|
| 451 |
+
name = "six"
|
| 452 |
+
version = "1.17.0"
|
| 453 |
+
description = "Python 2 and 3 compatibility utilities"
|
| 454 |
+
optional = false
|
| 455 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
| 456 |
+
groups = ["main"]
|
| 457 |
+
files = [
|
| 458 |
+
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
|
| 459 |
+
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
|
| 460 |
+
]
|
| 461 |
+
|
| 462 |
+
[[package]]
|
| 463 |
+
name = "tenacity"
|
| 464 |
+
version = "9.1.2"
|
| 465 |
+
description = "Retry code until it succeeds"
|
| 466 |
+
optional = false
|
| 467 |
+
python-versions = ">=3.9"
|
| 468 |
+
groups = ["main"]
|
| 469 |
+
files = [
|
| 470 |
+
{file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"},
|
| 471 |
+
{file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"},
|
| 472 |
+
]
|
| 473 |
+
|
| 474 |
+
[package.extras]
|
| 475 |
+
doc = ["reno", "sphinx"]
|
| 476 |
+
test = ["pytest", "tornado (>=4.5)", "typeguard"]
|
| 477 |
+
|
| 478 |
+
[[package]]
|
| 479 |
+
name = "tzdata"
|
| 480 |
+
version = "2025.2"
|
| 481 |
+
description = "Provider of IANA time zone data"
|
| 482 |
+
optional = false
|
| 483 |
+
python-versions = ">=2"
|
| 484 |
+
groups = ["main"]
|
| 485 |
+
files = [
|
| 486 |
+
{file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"},
|
| 487 |
+
{file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"},
|
| 488 |
+
]
|
| 489 |
+
|
| 490 |
+
[[package]]
|
| 491 |
+
name = "urllib3"
|
| 492 |
+
version = "2.5.0"
|
| 493 |
+
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
| 494 |
+
optional = false
|
| 495 |
+
python-versions = ">=3.9"
|
| 496 |
+
groups = ["main"]
|
| 497 |
+
files = [
|
| 498 |
+
{file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"},
|
| 499 |
+
{file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"},
|
| 500 |
+
]
|
| 501 |
+
|
| 502 |
+
[package.extras]
|
| 503 |
+
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
| 504 |
+
h2 = ["h2 (>=4,<5)"]
|
| 505 |
+
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
| 506 |
+
zstd = ["zstandard (>=0.18.0)"]
|
| 507 |
+
|
| 508 |
+
[metadata]
|
| 509 |
+
lock-version = "2.1"
|
| 510 |
+
python-versions = ">=3.10,<3.13"
|
| 511 |
+
content-hash = "a7f64c43efcba78952701498a72a8fe503e995841717b2d5de4c9aa20c9a996a"
|
app/src/content/embeds/plotly/pyproject.toml
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[tool.poetry]
|
| 2 |
+
name = "blogpost-fine-tasks-python"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "Plotly fragment generation scripts and HTML/Markdown conversions for the blogpost."
|
| 5 |
+
package-mode = false
|
| 6 |
+
|
| 7 |
+
[tool.poetry.dependencies]
|
| 8 |
+
python = ">=3.10,<3.13"
|
| 9 |
+
Markdown = "^3.6"
|
| 10 |
+
requests = "^2.32.3"
|
| 11 |
+
numpy = "^2.0.0"
|
| 12 |
+
pandas = "^2.2.2"
|
| 13 |
+
plotly = "^5.24.0"
|
| 14 |
+
|
| 15 |
+
[tool.poetry.scripts]
|
| 16 |
+
html-to-md = "convert_to_md:main"
|
| 17 |
+
|
| 18 |
+
[build-system]
|
| 19 |
+
requires = ["poetry-core>=1.5.0"]
|
| 20 |
+
build-backend = "poetry.core.masonry.api"
|