Spaces:
Sleeping
Sleeping
Jac-Zac commited on
Commit ·
220e208
1
Parent(s): e75684b
Small cleanups
Browse files- pyproject.toml +2 -2
- tabs/chat.py +9 -9
- tabs/extract.py +7 -16
- utils/chat.py +13 -19
- utils/chat_export.py +3 -5
- utils/contrast.py +7 -14
- uv.lock +81 -81
pyproject.toml
CHANGED
|
@@ -5,8 +5,8 @@ description = "Streamlit UI for persona-vectors"
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.12"
|
| 7 |
dependencies = [
|
| 8 |
-
"persona-vectors>=0.3.
|
| 9 |
-
"persona-data>=0.2.
|
| 10 |
"streamlit>=1.44.0",
|
| 11 |
"plotly>=6.6.0",
|
| 12 |
"python-dotenv>=1.2.2",
|
|
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.12"
|
| 7 |
dependencies = [
|
| 8 |
+
"persona-vectors>=0.3.2",
|
| 9 |
+
"persona-data>=0.2.2",
|
| 10 |
"streamlit>=1.44.0",
|
| 11 |
"plotly>=6.6.0",
|
| 12 |
"python-dotenv>=1.2.2",
|
tabs/chat.py
CHANGED
|
@@ -361,15 +361,15 @@ def _render_generation_settings(context_key: str, remote: bool) -> tuple[dict, b
|
|
| 361 |
|
| 362 |
do_sample = bool(use_sampling)
|
| 363 |
generation_seed = seed if do_sample and seed is not None and not remote else None
|
| 364 |
-
gen_kwargs =
|
| 365 |
-
max_new_tokens
|
| 366 |
-
do_sample
|
| 367 |
-
temperature
|
| 368 |
-
top_p
|
| 369 |
-
top_k
|
| 370 |
-
repetition_penalty
|
| 371 |
-
seed
|
| 372 |
-
|
| 373 |
return gen_kwargs, advanced_generation
|
| 374 |
|
| 375 |
|
|
|
|
| 361 |
|
| 362 |
do_sample = bool(use_sampling)
|
| 363 |
generation_seed = seed if do_sample and seed is not None and not remote else None
|
| 364 |
+
gen_kwargs = {
|
| 365 |
+
"max_new_tokens": int(max_new_tokens),
|
| 366 |
+
"do_sample": do_sample,
|
| 367 |
+
"temperature": temperature,
|
| 368 |
+
"top_p": top_p,
|
| 369 |
+
"top_k": top_k,
|
| 370 |
+
"repetition_penalty": repetition_penalty,
|
| 371 |
+
"seed": generation_seed,
|
| 372 |
+
}
|
| 373 |
return gen_kwargs, advanced_generation
|
| 374 |
|
| 375 |
|
tabs/extract.py
CHANGED
|
@@ -2,7 +2,7 @@ import html
|
|
| 2 |
from typing import Literal, cast
|
| 3 |
|
| 4 |
import streamlit as st
|
| 5 |
-
from persona_data.prompts import
|
| 6 |
from persona_vectors.artifacts import SUPPORTED_VARIANTS
|
| 7 |
from persona_vectors.extraction import (
|
| 8 |
MaskStrategy,
|
|
@@ -58,8 +58,6 @@ def _token_style_for_index(
|
|
| 58 |
style = "color:#22d3ee"
|
| 59 |
elif p.spans.question.token_start <= token_idx < p.spans.question.token_end:
|
| 60 |
style = "color:#fde047"
|
| 61 |
-
elif p.spans.template.token_start <= token_idx < p.spans.template.token_end:
|
| 62 |
-
style = "color:#9ca3af"
|
| 63 |
else:
|
| 64 |
style = "color:#9ca3af"
|
| 65 |
|
|
@@ -76,13 +74,11 @@ def _render_sample_tokens_html(
|
|
| 76 |
"""Build an HTML token sequence using the persona-vectors preview layout."""
|
| 77 |
special_ids = set(tokenizer.all_special_ids)
|
| 78 |
seq_len = int(p.input_ids.shape[0])
|
| 79 |
-
|
| 80 |
-
tail = 8 if max_tokens <= 0 else max(8, max_tokens // 4)
|
| 81 |
-
answer_extra = 8 if max_tokens <= 0 else max(8, max_tokens // 4)
|
| 82 |
|
| 83 |
-
prefix_end = min(p.spans.template.token_start +
|
| 84 |
-
tail_start = min(max(prefix_end, p.spans.template.token_end -
|
| 85 |
-
answer_end = min(seq_len, p.spans.response.token_end +
|
| 86 |
|
| 87 |
indices: list[int | None] = list(range(0, prefix_end))
|
| 88 |
if prefix_end < tail_start:
|
|
@@ -201,7 +197,7 @@ def render_extract_tab(remote: bool, model_name: str, dataset_source: str) -> No
|
|
| 201 |
with st.expander("Advanced", expanded=False):
|
| 202 |
st.caption("Filters")
|
| 203 |
|
| 204 |
-
col1, col2,
|
| 205 |
with col1:
|
| 206 |
last_qa_type = st.session_state.get(_LAST_QA_TYPE_KEY, "all")
|
| 207 |
qa_type_index = (
|
|
@@ -309,12 +305,7 @@ def render_extract_tab(remote: bool, model_name: str, dataset_source: str) -> No
|
|
| 309 |
st.markdown(_TOKEN_LEGEND, unsafe_allow_html=True)
|
| 310 |
for persona, qa_pairs in runs:
|
| 311 |
for variant in selected_variants:
|
| 312 |
-
|
| 313 |
-
system_prompt = format_roleplay_prompt()
|
| 314 |
-
else:
|
| 315 |
-
system_prompt = format_roleplay_prompt(
|
| 316 |
-
getattr(persona, f"{variant}_view")
|
| 317 |
-
)
|
| 318 |
prepared = prepare_inputs(
|
| 319 |
tokenizer=model.tokenizer,
|
| 320 |
system_prompt=system_prompt,
|
|
|
|
| 2 |
from typing import Literal, cast
|
| 3 |
|
| 4 |
import streamlit as st
|
| 5 |
+
from persona_data.prompts import system_prompt_for_variant
|
| 6 |
from persona_vectors.artifacts import SUPPORTED_VARIANTS
|
| 7 |
from persona_vectors.extraction import (
|
| 8 |
MaskStrategy,
|
|
|
|
| 58 |
style = "color:#22d3ee"
|
| 59 |
elif p.spans.question.token_start <= token_idx < p.spans.question.token_end:
|
| 60 |
style = "color:#fde047"
|
|
|
|
|
|
|
| 61 |
else:
|
| 62 |
style = "color:#9ca3af"
|
| 63 |
|
|
|
|
| 74 |
"""Build an HTML token sequence using the persona-vectors preview layout."""
|
| 75 |
special_ids = set(tokenizer.all_special_ids)
|
| 76 |
seq_len = int(p.input_ids.shape[0])
|
| 77 |
+
edge = max(8, max_tokens // 4)
|
|
|
|
|
|
|
| 78 |
|
| 79 |
+
prefix_end = min(p.spans.template.token_start + max_tokens, seq_len)
|
| 80 |
+
tail_start = min(max(prefix_end, p.spans.template.token_end - edge), seq_len)
|
| 81 |
+
answer_end = min(seq_len, p.spans.response.token_end + edge)
|
| 82 |
|
| 83 |
indices: list[int | None] = list(range(0, prefix_end))
|
| 84 |
if prefix_end < tail_start:
|
|
|
|
| 197 |
with st.expander("Advanced", expanded=False):
|
| 198 |
st.caption("Filters")
|
| 199 |
|
| 200 |
+
col1, col2, _ = st.columns([2, 2, 1])
|
| 201 |
with col1:
|
| 202 |
last_qa_type = st.session_state.get(_LAST_QA_TYPE_KEY, "all")
|
| 203 |
qa_type_index = (
|
|
|
|
| 305 |
st.markdown(_TOKEN_LEGEND, unsafe_allow_html=True)
|
| 306 |
for persona, qa_pairs in runs:
|
| 307 |
for variant in selected_variants:
|
| 308 |
+
system_prompt = system_prompt_for_variant(persona, variant)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 309 |
prepared = prepare_inputs(
|
| 310 |
tokenizer=model.tokenizer,
|
| 311 |
system_prompt=system_prompt,
|
utils/chat.py
CHANGED
|
@@ -5,7 +5,11 @@ from typing import Literal
|
|
| 5 |
|
| 6 |
import torch
|
| 7 |
from nnterp import StandardizedTransformer
|
| 8 |
-
from persona_data.prompts import
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
from persona_data.synth_persona import PersonaData
|
| 10 |
|
| 11 |
logger = logging.getLogger(__name__)
|
|
@@ -33,23 +37,16 @@ def resolve_system_prompt(
|
|
| 33 |
The rendered system prompt string.
|
| 34 |
"""
|
| 35 |
|
| 36 |
-
if persona is None:
|
| 37 |
return ""
|
| 38 |
-
|
| 39 |
-
if mode == "empty":
|
| 40 |
-
return ""
|
| 41 |
-
if mode == "templated":
|
| 42 |
-
return format_roleplay_prompt(persona.templated_view, mode="conversational")
|
| 43 |
-
if mode == "biography":
|
| 44 |
-
return format_roleplay_prompt(persona.biography_view, mode="conversational")
|
| 45 |
if mode == "custom":
|
| 46 |
return format_roleplay_prompt(mode="conversational")
|
|
|
|
|
|
|
| 47 |
raise ValueError(f"Unsupported system prompt mode: {mode}")
|
| 48 |
|
| 49 |
|
| 50 |
-
def _format_plain_messages(
|
| 51 |
-
messages: list[dict[str, str]], add_generation_prompt: bool
|
| 52 |
-
) -> str:
|
| 53 |
"""Format messages as plain ``Role: content`` text, used as a last-resort fallback."""
|
| 54 |
lines: list[str] = []
|
| 55 |
|
|
@@ -67,7 +64,7 @@ def _format_plain_messages(
|
|
| 67 |
else:
|
| 68 |
lines.append(f"{role.title()}: {content}")
|
| 69 |
|
| 70 |
-
if
|
| 71 |
lines.append("Assistant:")
|
| 72 |
|
| 73 |
return "\n\n".join(lines)
|
|
@@ -91,7 +88,7 @@ def format_generation_prompt(
|
|
| 91 |
logger.debug(
|
| 92 |
"Chat template failed on raw messages, trying normalized", exc_info=True
|
| 93 |
)
|
| 94 |
-
messages =
|
| 95 |
|
| 96 |
try:
|
| 97 |
prompt = tokenizer.apply_chat_template(
|
|
@@ -104,10 +101,7 @@ def format_generation_prompt(
|
|
| 104 |
"Chat template failed on normalized messages, falling back to plain format",
|
| 105 |
exc_info=True,
|
| 106 |
)
|
| 107 |
-
prompt = _format_plain_messages(
|
| 108 |
-
messages,
|
| 109 |
-
add_generation_prompt=True,
|
| 110 |
-
)
|
| 111 |
|
| 112 |
prompt_token_count = tokenizer(prompt, return_tensors="pt").input_ids.shape[1]
|
| 113 |
return prompt, prompt_token_count
|
|
@@ -194,7 +188,7 @@ def generate_chat_reply(
|
|
| 194 |
with model.generate(prompt, remote=remote, **generation_kwargs) as tracer:
|
| 195 |
generated = tracer.result.save()
|
| 196 |
|
| 197 |
-
if
|
| 198 |
generated = generated.value
|
| 199 |
|
| 200 |
sequences = generated.sequences if hasattr(generated, "sequences") else generated
|
|
|
|
| 5 |
|
| 6 |
import torch
|
| 7 |
from nnterp import StandardizedTransformer
|
| 8 |
+
from persona_data.prompts import (
|
| 9 |
+
_normalize_messages,
|
| 10 |
+
format_roleplay_prompt,
|
| 11 |
+
system_prompt_for_variant,
|
| 12 |
+
)
|
| 13 |
from persona_data.synth_persona import PersonaData
|
| 14 |
|
| 15 |
logger = logging.getLogger(__name__)
|
|
|
|
| 37 |
The rendered system prompt string.
|
| 38 |
"""
|
| 39 |
|
| 40 |
+
if persona is None or mode == "empty":
|
| 41 |
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
if mode == "custom":
|
| 43 |
return format_roleplay_prompt(mode="conversational")
|
| 44 |
+
if mode in ("templated", "biography"):
|
| 45 |
+
return system_prompt_for_variant(persona, mode, mode="conversational")
|
| 46 |
raise ValueError(f"Unsupported system prompt mode: {mode}")
|
| 47 |
|
| 48 |
|
| 49 |
+
def _format_plain_messages(messages: list[dict[str, str]]) -> str:
|
|
|
|
|
|
|
| 50 |
"""Format messages as plain ``Role: content`` text, used as a last-resort fallback."""
|
| 51 |
lines: list[str] = []
|
| 52 |
|
|
|
|
| 64 |
else:
|
| 65 |
lines.append(f"{role.title()}: {content}")
|
| 66 |
|
| 67 |
+
if not lines or not lines[-1].startswith("Assistant:"):
|
| 68 |
lines.append("Assistant:")
|
| 69 |
|
| 70 |
return "\n\n".join(lines)
|
|
|
|
| 88 |
logger.debug(
|
| 89 |
"Chat template failed on raw messages, trying normalized", exc_info=True
|
| 90 |
)
|
| 91 |
+
messages = _normalize_messages(messages)
|
| 92 |
|
| 93 |
try:
|
| 94 |
prompt = tokenizer.apply_chat_template(
|
|
|
|
| 101 |
"Chat template failed on normalized messages, falling back to plain format",
|
| 102 |
exc_info=True,
|
| 103 |
)
|
| 104 |
+
prompt = _format_plain_messages(messages)
|
|
|
|
|
|
|
|
|
|
| 105 |
|
| 106 |
prompt_token_count = tokenizer(prompt, return_tensors="pt").input_ids.shape[1]
|
| 107 |
return prompt, prompt_token_count
|
|
|
|
| 188 |
with model.generate(prompt, remote=remote, **generation_kwargs) as tracer:
|
| 189 |
generated = tracer.result.save()
|
| 190 |
|
| 191 |
+
if getattr(generated, "value", None) is not None:
|
| 192 |
generated = generated.value
|
| 193 |
|
| 194 |
sequences = generated.sequences if hasattr(generated, "sequences") else generated
|
utils/chat_export.py
CHANGED
|
@@ -13,11 +13,9 @@ def _serialise_message(message: dict[str, object]) -> dict[str, object]:
|
|
| 13 |
"role": message["role"],
|
| 14 |
"content": message["content"],
|
| 15 |
}
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
if
|
| 19 |
-
continue
|
| 20 |
-
payload[key] = asdict(value) if is_dataclass(value) else value
|
| 21 |
return payload
|
| 22 |
|
| 23 |
|
|
|
|
| 13 |
"role": message["role"],
|
| 14 |
"content": message["content"],
|
| 15 |
}
|
| 16 |
+
contrast = message.get("_contrast")
|
| 17 |
+
if contrast is not None:
|
| 18 |
+
payload["_contrast"] = asdict(contrast) if is_dataclass(contrast) else contrast
|
|
|
|
|
|
|
| 19 |
return payload
|
| 20 |
|
| 21 |
|
utils/contrast.py
CHANGED
|
@@ -154,7 +154,7 @@ def _score_passes(
|
|
| 154 |
picked = log_probs.gather(1, targets).view(-1)
|
| 155 |
out = picked.detach().cpu().save()
|
| 156 |
|
| 157 |
-
if
|
| 158 |
out = out.value
|
| 159 |
if not isinstance(out, torch.Tensor):
|
| 160 |
raise TypeError(
|
|
@@ -162,17 +162,10 @@ def _score_passes(
|
|
| 162 |
)
|
| 163 |
return out.detach().cpu()
|
| 164 |
|
| 165 |
-
|
| 166 |
-
_score_pass(full_text, n_ctx, n_resp, target_ids)
|
| 167 |
-
for
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
if len(saved) != len(specs):
|
| 171 |
-
raise RuntimeError(
|
| 172 |
-
f"contrast scoring returned {len(saved)} result(s) for {len(specs)} spec(s)"
|
| 173 |
-
)
|
| 174 |
-
|
| 175 |
-
return {spec[0]: tensor for spec, tensor in zip(specs, saved)}
|
| 176 |
|
| 177 |
|
| 178 |
def _specs_for_response(
|
|
@@ -304,9 +297,9 @@ def render_contrast_html(result: TokenContrast) -> str:
|
|
| 304 |
+ "".join(spans)
|
| 305 |
+ '<div style="margin-top:10px;font-size:0.72em;color:#888;'
|
| 306 |
+ 'display:flex;gap:12px;flex-wrap:wrap;">'
|
| 307 |
-
+
|
| 308 |
+ f'padding:1px 6px;border-radius:2px;"> </span> {la}</span>'
|
| 309 |
-
+
|
| 310 |
+ f'padding:1px 6px;border-radius:2px;"> </span> {lb}</span>'
|
| 311 |
+ '<span style="color:#aaa;">gray = shared by both</span>'
|
| 312 |
+ "</div>"
|
|
|
|
| 154 |
picked = log_probs.gather(1, targets).view(-1)
|
| 155 |
out = picked.detach().cpu().save()
|
| 156 |
|
| 157 |
+
if getattr(out, "value", None) is not None:
|
| 158 |
out = out.value
|
| 159 |
if not isinstance(out, torch.Tensor):
|
| 160 |
raise TypeError(
|
|
|
|
| 162 |
)
|
| 163 |
return out.detach().cpu()
|
| 164 |
|
| 165 |
+
return {
|
| 166 |
+
key: _score_pass(full_text, n_ctx, n_resp, target_ids)
|
| 167 |
+
for key, full_text, n_ctx, n_resp, target_ids in specs
|
| 168 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
|
| 170 |
|
| 171 |
def _specs_for_response(
|
|
|
|
| 297 |
+ "".join(spans)
|
| 298 |
+ '<div style="margin-top:10px;font-size:0.72em;color:#888;'
|
| 299 |
+ 'display:flex;gap:12px;flex-wrap:wrap;">'
|
| 300 |
+
+ '<span><span style="background:rgba(210,60,60,0.45);'
|
| 301 |
+ f'padding:1px 6px;border-radius:2px;"> </span> {la}</span>'
|
| 302 |
+
+ '<span><span style="background:rgba(50,110,210,0.45);'
|
| 303 |
+ f'padding:1px 6px;border-radius:2px;"> </span> {lb}</span>'
|
| 304 |
+ '<span style="color:#aaa;">gray = shared by both</span>'
|
| 305 |
+ "</div>"
|
uv.lock
CHANGED
|
@@ -122,11 +122,11 @@ wheels = [
|
|
| 122 |
|
| 123 |
[[package]]
|
| 124 |
name = "cachetools"
|
| 125 |
-
version = "7.0.
|
| 126 |
source = { registry = "https://pypi.org/simple" }
|
| 127 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 128 |
wheels = [
|
| 129 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 130 |
]
|
| 131 |
|
| 132 |
[[package]]
|
|
@@ -1169,7 +1169,7 @@ wheels = [
|
|
| 1169 |
|
| 1170 |
[[package]]
|
| 1171 |
name = "persona-data"
|
| 1172 |
-
version = "0.2.
|
| 1173 |
source = { registry = "https://pypi.org/simple" }
|
| 1174 |
dependencies = [
|
| 1175 |
{ name = "huggingface-hub" },
|
|
@@ -1178,9 +1178,9 @@ dependencies = [
|
|
| 1178 |
{ name = "python-dotenv" },
|
| 1179 |
{ name = "torch" },
|
| 1180 |
]
|
| 1181 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1182 |
wheels = [
|
| 1183 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1184 |
]
|
| 1185 |
|
| 1186 |
[[package]]
|
|
@@ -1198,8 +1198,8 @@ dependencies = [
|
|
| 1198 |
|
| 1199 |
[package.metadata]
|
| 1200 |
requires-dist = [
|
| 1201 |
-
{ name = "persona-data", specifier = ">=0.2.
|
| 1202 |
-
{ name = "persona-vectors", specifier = ">=0.3.
|
| 1203 |
{ name = "plotly", specifier = ">=6.6.0" },
|
| 1204 |
{ name = "python-dotenv", specifier = ">=1.2.2" },
|
| 1205 |
{ name = "streamlit", specifier = ">=1.44.0" },
|
|
@@ -1208,7 +1208,7 @@ requires-dist = [
|
|
| 1208 |
|
| 1209 |
[[package]]
|
| 1210 |
name = "persona-vectors"
|
| 1211 |
-
version = "0.3.
|
| 1212 |
source = { registry = "https://pypi.org/simple" }
|
| 1213 |
dependencies = [
|
| 1214 |
{ name = "kaleido" },
|
|
@@ -1225,9 +1225,9 @@ dependencies = [
|
|
| 1225 |
{ name = "transformers" },
|
| 1226 |
{ name = "umap-learn" },
|
| 1227 |
]
|
| 1228 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1229 |
wheels = [
|
| 1230 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1231 |
]
|
| 1232 |
|
| 1233 |
[[package]]
|
|
@@ -1451,7 +1451,7 @@ wheels = [
|
|
| 1451 |
|
| 1452 |
[[package]]
|
| 1453 |
name = "pydantic"
|
| 1454 |
-
version = "2.13.
|
| 1455 |
source = { registry = "https://pypi.org/simple" }
|
| 1456 |
dependencies = [
|
| 1457 |
{ name = "annotated-types" },
|
|
@@ -1459,84 +1459,84 @@ dependencies = [
|
|
| 1459 |
{ name = "typing-extensions" },
|
| 1460 |
{ name = "typing-inspection" },
|
| 1461 |
]
|
| 1462 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1463 |
wheels = [
|
| 1464 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1465 |
]
|
| 1466 |
|
| 1467 |
[[package]]
|
| 1468 |
name = "pydantic-core"
|
| 1469 |
-
version = "2.46.
|
| 1470 |
source = { registry = "https://pypi.org/simple" }
|
| 1471 |
dependencies = [
|
| 1472 |
{ name = "typing-extensions" },
|
| 1473 |
]
|
| 1474 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1475 |
-
wheels = [
|
| 1476 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1477 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1478 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1479 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1480 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1481 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1482 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1483 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1484 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1485 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1486 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1487 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1488 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1489 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1490 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1491 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1492 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1493 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1494 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1495 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1496 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1497 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1498 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1499 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1500 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1501 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1502 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1503 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1504 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1505 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1506 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1507 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1508 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1509 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1510 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1511 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1512 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1513 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1514 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1515 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1516 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1517 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1518 |
-
{ url = "https://files.pythonhosted.org/packages/51/
|
| 1519 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1520 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1521 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1522 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1523 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1524 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1525 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1526 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1527 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1528 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1529 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1530 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1531 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1532 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1533 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1534 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1535 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1536 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1537 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1538 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1539 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1540 |
]
|
| 1541 |
|
| 1542 |
[[package]]
|
|
|
|
| 122 |
|
| 123 |
[[package]]
|
| 124 |
name = "cachetools"
|
| 125 |
+
version = "7.0.6"
|
| 126 |
source = { registry = "https://pypi.org/simple" }
|
| 127 |
+
sdist = { url = "https://files.pythonhosted.org/packages/76/7b/1755ed2c6bfabd1d98b37ae73152f8dcf94aa40fee119d163c19ed484704/cachetools-7.0.6.tar.gz", hash = "sha256:e5d524d36d65703a87243a26ff08ad84f73352adbeafb1cde81e207b456aaf24", size = 37526, upload-time = "2026-04-20T19:02:23.289Z" }
|
| 128 |
wheels = [
|
| 129 |
+
{ url = "https://files.pythonhosted.org/packages/fe/c4/cf76242a5da1410917107ff14551764aa405a5fd10cd10cf9a5ca8fa77f4/cachetools-7.0.6-py3-none-any.whl", hash = "sha256:4e94956cfdd3086f12042cdd29318f5ced3893014f7d0d059bf3ead3f85b7f8b", size = 13976, upload-time = "2026-04-20T19:02:21.187Z" },
|
| 130 |
]
|
| 131 |
|
| 132 |
[[package]]
|
|
|
|
| 1169 |
|
| 1170 |
[[package]]
|
| 1171 |
name = "persona-data"
|
| 1172 |
+
version = "0.2.2"
|
| 1173 |
source = { registry = "https://pypi.org/simple" }
|
| 1174 |
dependencies = [
|
| 1175 |
{ name = "huggingface-hub" },
|
|
|
|
| 1178 |
{ name = "python-dotenv" },
|
| 1179 |
{ name = "torch" },
|
| 1180 |
]
|
| 1181 |
+
sdist = { url = "https://files.pythonhosted.org/packages/35/ae/e5648d098773786d667d80fc6fa786158a61991abe43cf1d9921060cdb08/persona_data-0.2.2.tar.gz", hash = "sha256:668abd6b1fb5bdf92de89195d0de69a1f1a89b0d18d87c9fd9f50b2cae84dc6f", size = 8534, upload-time = "2026-04-20T21:56:48.598Z" }
|
| 1182 |
wheels = [
|
| 1183 |
+
{ url = "https://files.pythonhosted.org/packages/4b/bd/3c2f360ffd4e5d18ce2355b1bdfc494febd6ebdea7da9c5f4833d7131ee3/persona_data-0.2.2-py3-none-any.whl", hash = "sha256:89704980f770502ad2208e7873ebbd81734f7d168f5c075641d21d38d91d65a1", size = 11206, upload-time = "2026-04-20T21:56:47.753Z" },
|
| 1184 |
]
|
| 1185 |
|
| 1186 |
[[package]]
|
|
|
|
| 1198 |
|
| 1199 |
[package.metadata]
|
| 1200 |
requires-dist = [
|
| 1201 |
+
{ name = "persona-data", specifier = ">=0.2.2" },
|
| 1202 |
+
{ name = "persona-vectors", specifier = ">=0.3.2" },
|
| 1203 |
{ name = "plotly", specifier = ">=6.6.0" },
|
| 1204 |
{ name = "python-dotenv", specifier = ">=1.2.2" },
|
| 1205 |
{ name = "streamlit", specifier = ">=1.44.0" },
|
|
|
|
| 1208 |
|
| 1209 |
[[package]]
|
| 1210 |
name = "persona-vectors"
|
| 1211 |
+
version = "0.3.2"
|
| 1212 |
source = { registry = "https://pypi.org/simple" }
|
| 1213 |
dependencies = [
|
| 1214 |
{ name = "kaleido" },
|
|
|
|
| 1225 |
{ name = "transformers" },
|
| 1226 |
{ name = "umap-learn" },
|
| 1227 |
]
|
| 1228 |
+
sdist = { url = "https://files.pythonhosted.org/packages/4f/fc/c0dc4edbf0baec152c8d89761d22eb209e004dace2cae413009edc31f9db/persona_vectors-0.3.2.tar.gz", hash = "sha256:117744a0e4c2da4af3f571a58a422799bef6103ded822845893b6a8e316ff672", size = 15085, upload-time = "2026-04-20T22:10:55.242Z" }
|
| 1229 |
wheels = [
|
| 1230 |
+
{ url = "https://files.pythonhosted.org/packages/65/75/402db386504a6eaeed6824777bbebf42cd88a11af75082211136caa663db/persona_vectors-0.3.2-py3-none-any.whl", hash = "sha256:4d2f5cf6d72110927b1f507e6d667640c336b27163f28e81f521f806cce4fa2b", size = 18635, upload-time = "2026-04-20T22:10:54.181Z" },
|
| 1231 |
]
|
| 1232 |
|
| 1233 |
[[package]]
|
|
|
|
| 1451 |
|
| 1452 |
[[package]]
|
| 1453 |
name = "pydantic"
|
| 1454 |
+
version = "2.13.3"
|
| 1455 |
source = { registry = "https://pypi.org/simple" }
|
| 1456 |
dependencies = [
|
| 1457 |
{ name = "annotated-types" },
|
|
|
|
| 1459 |
{ name = "typing-extensions" },
|
| 1460 |
{ name = "typing-inspection" },
|
| 1461 |
]
|
| 1462 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d9/e4/40d09941a2cebcb20609b86a559817d5b9291c49dd6f8c87e5feffbe703a/pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d", size = 844068, upload-time = "2026-04-20T14:46:43.632Z" }
|
| 1463 |
wheels = [
|
| 1464 |
+
{ url = "https://files.pythonhosted.org/packages/f3/0a/fd7d723f8f8153418fb40cf9c940e82004fce7e987026b08a68a36dd3fe7/pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927", size = 471981, upload-time = "2026-04-20T14:46:41.402Z" },
|
| 1465 |
]
|
| 1466 |
|
| 1467 |
[[package]]
|
| 1468 |
name = "pydantic-core"
|
| 1469 |
+
version = "2.46.3"
|
| 1470 |
source = { registry = "https://pypi.org/simple" }
|
| 1471 |
dependencies = [
|
| 1472 |
{ name = "typing-extensions" },
|
| 1473 |
]
|
| 1474 |
+
sdist = { url = "https://files.pythonhosted.org/packages/2a/ef/f7abb56c49382a246fd2ce9c799691e3c3e7175ec74b14d99e798bcddb1a/pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c", size = 471412, upload-time = "2026-04-20T14:40:56.672Z" }
|
| 1475 |
+
wheels = [
|
| 1476 |
+
{ url = "https://files.pythonhosted.org/packages/4b/cb/5b47425556ecc1f3fe18ed2a0083188aa46e1dd812b06e406475b3a5d536/pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67", size = 2101946, upload-time = "2026-04-20T14:40:52.581Z" },
|
| 1477 |
+
{ url = "https://files.pythonhosted.org/packages/a1/4f/2fb62c2267cae99b815bbf4a7b9283812c88ca3153ef29f7707200f1d4e5/pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089", size = 1951612, upload-time = "2026-04-20T14:42:42.996Z" },
|
| 1478 |
+
{ url = "https://files.pythonhosted.org/packages/50/6e/b7348fd30d6556d132cddd5bd79f37f96f2601fe0608afac4f5fb01ec0b3/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0", size = 1977027, upload-time = "2026-04-20T14:42:02.001Z" },
|
| 1479 |
+
{ url = "https://files.pythonhosted.org/packages/82/11/31d60ee2b45540d3fb0b29302a393dbc01cd771c473f5b5147bcd353e593/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789", size = 2063008, upload-time = "2026-04-20T14:44:17.952Z" },
|
| 1480 |
+
{ url = "https://files.pythonhosted.org/packages/8a/db/3a9d1957181b59258f44a2300ab0f0be9d1e12d662a4f57bb31250455c52/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d", size = 2233082, upload-time = "2026-04-20T14:40:57.934Z" },
|
| 1481 |
+
{ url = "https://files.pythonhosted.org/packages/9c/e1/3277c38792aeb5cfb18c2f0c5785a221d9ff4e149abbe1184d53d5f72273/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c", size = 2304615, upload-time = "2026-04-20T14:42:12.584Z" },
|
| 1482 |
+
{ url = "https://files.pythonhosted.org/packages/5e/d5/e3d9717c9eba10855325650afd2a9cba8e607321697f18953af9d562da2f/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395", size = 2094380, upload-time = "2026-04-20T14:43:05.522Z" },
|
| 1483 |
+
{ url = "https://files.pythonhosted.org/packages/a1/20/abac35dedcbfd66c6f0b03e4e3564511771d6c9b7ede10a362d03e110d9b/pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396", size = 2135429, upload-time = "2026-04-20T14:41:55.549Z" },
|
| 1484 |
+
{ url = "https://files.pythonhosted.org/packages/6c/a5/41bfd1df69afad71b5cf0535055bccc73022715ad362edbc124bc1e021d7/pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d", size = 2174582, upload-time = "2026-04-20T14:41:45.96Z" },
|
| 1485 |
+
{ url = "https://files.pythonhosted.org/packages/79/65/38d86ea056b29b2b10734eb23329b7a7672ca604df4f2b6e9c02d4ee22fe/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca", size = 2187533, upload-time = "2026-04-20T14:40:55.367Z" },
|
| 1486 |
+
{ url = "https://files.pythonhosted.org/packages/b6/55/a1129141678a2026badc539ad1dee0a71d06f54c2f06a4bd68c030ac781b/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976", size = 2332985, upload-time = "2026-04-20T14:44:13.05Z" },
|
| 1487 |
+
{ url = "https://files.pythonhosted.org/packages/d7/60/cb26f4077719f709e54819f4e8e1d43f4091f94e285eb6bd21e1190a7b7c/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b", size = 2373670, upload-time = "2026-04-20T14:41:53.421Z" },
|
| 1488 |
+
{ url = "https://files.pythonhosted.org/packages/6b/7e/c3f21882bdf1d8d086876f81b5e296206c69c6082551d776895de7801fa0/pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4", size = 1966722, upload-time = "2026-04-20T14:44:30.588Z" },
|
| 1489 |
+
{ url = "https://files.pythonhosted.org/packages/57/be/6b5e757b859013ebfbd7adba02f23b428f37c86dcbf78b5bb0b4ffd36e99/pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1", size = 2072970, upload-time = "2026-04-20T14:42:54.248Z" },
|
| 1490 |
+
{ url = "https://files.pythonhosted.org/packages/bf/f8/a989b21cc75e9a32d24192ef700eea606521221a89faa40c919ce884f2b1/pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72", size = 2035963, upload-time = "2026-04-20T14:44:20.4Z" },
|
| 1491 |
+
{ url = "https://files.pythonhosted.org/packages/9b/3c/9b5e8eb9821936d065439c3b0fb1490ffa64163bfe7e1595985a47896073/pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37", size = 2102109, upload-time = "2026-04-20T14:41:24.219Z" },
|
| 1492 |
+
{ url = "https://files.pythonhosted.org/packages/91/97/1c41d1f5a19f241d8069f1e249853bcce378cdb76eec8ab636d7bc426280/pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f", size = 1951820, upload-time = "2026-04-20T14:42:14.236Z" },
|
| 1493 |
+
{ url = "https://files.pythonhosted.org/packages/30/b4/d03a7ae14571bc2b6b3c7b122441154720619afe9a336fa3a95434df5e2f/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8", size = 1977785, upload-time = "2026-04-20T14:42:31.648Z" },
|
| 1494 |
+
{ url = "https://files.pythonhosted.org/packages/ae/0c/4086f808834b59e3c8f1aa26df8f4b6d998cdcf354a143d18ef41529d1fe/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad", size = 2062761, upload-time = "2026-04-20T14:40:37.093Z" },
|
| 1495 |
+
{ url = "https://files.pythonhosted.org/packages/fa/71/a649be5a5064c2df0db06e0a512c2281134ed2fcc981f52a657936a7527c/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c", size = 2232989, upload-time = "2026-04-20T14:42:59.254Z" },
|
| 1496 |
+
{ url = "https://files.pythonhosted.org/packages/a2/84/7756e75763e810b3a710f4724441d1ecc5883b94aacb07ca71c5fb5cfb69/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f", size = 2303975, upload-time = "2026-04-20T14:41:32.287Z" },
|
| 1497 |
+
{ url = "https://files.pythonhosted.org/packages/6c/35/68a762e0c1e31f35fa0dac733cbd9f5b118042853698de9509c8e5bf128b/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35", size = 2095325, upload-time = "2026-04-20T14:42:47.685Z" },
|
| 1498 |
+
{ url = "https://files.pythonhosted.org/packages/77/bf/1bf8c9a8e91836c926eae5e3e51dce009bf495a60ca56060689d3df3f340/pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687", size = 2133368, upload-time = "2026-04-20T14:41:22.766Z" },
|
| 1499 |
+
{ url = "https://files.pythonhosted.org/packages/e5/50/87d818d6bab915984995157ceb2380f5aac4e563dddbed6b56f0ed057aba/pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3", size = 2173908, upload-time = "2026-04-20T14:42:52.044Z" },
|
| 1500 |
+
{ url = "https://files.pythonhosted.org/packages/91/88/a311fb306d0bd6185db41fa14ae888fb81d0baf648a761ae760d30819d33/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022", size = 2186422, upload-time = "2026-04-20T14:43:29.55Z" },
|
| 1501 |
+
{ url = "https://files.pythonhosted.org/packages/8f/79/28fd0d81508525ab2054fef7c77a638c8b5b0afcbbaeee493cf7c3fef7e1/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23", size = 2332709, upload-time = "2026-04-20T14:42:16.134Z" },
|
| 1502 |
+
{ url = "https://files.pythonhosted.org/packages/b3/21/795bf5fe5c0f379308b8ef19c50dedab2e7711dbc8d0c2acf08f1c7daa05/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7", size = 2372428, upload-time = "2026-04-20T14:41:10.974Z" },
|
| 1503 |
+
{ url = "https://files.pythonhosted.org/packages/45/b3/ed14c659cbe7605e3ef063077680a64680aec81eb1a04763a05190d49b7f/pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13", size = 1965601, upload-time = "2026-04-20T14:41:42.128Z" },
|
| 1504 |
+
{ url = "https://files.pythonhosted.org/packages/ef/bb/adb70d9a762ddd002d723fbf1bd492244d37da41e3af7b74ad212609027e/pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0", size = 2071517, upload-time = "2026-04-20T14:43:36.096Z" },
|
| 1505 |
+
{ url = "https://files.pythonhosted.org/packages/52/eb/66faefabebfe68bd7788339c9c9127231e680b11906368c67ce112fdb47f/pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec", size = 2035802, upload-time = "2026-04-20T14:43:38.507Z" },
|
| 1506 |
+
{ url = "https://files.pythonhosted.org/packages/7f/db/a7bcb4940183fda36022cd18ba8dd12f2dff40740ec7b58ce7457befa416/pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b", size = 2097614, upload-time = "2026-04-20T14:44:38.374Z" },
|
| 1507 |
+
{ url = "https://files.pythonhosted.org/packages/24/35/e4066358a22e3e99519db370494c7528f5a2aa1367370e80e27e20283543/pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018", size = 1951896, upload-time = "2026-04-20T14:40:53.996Z" },
|
| 1508 |
+
{ url = "https://files.pythonhosted.org/packages/87/92/37cf4049d1636996e4b888c05a501f40a43ff218983a551d57f9d5e14f0d/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34", size = 1979314, upload-time = "2026-04-20T14:41:49.446Z" },
|
| 1509 |
+
{ url = "https://files.pythonhosted.org/packages/d8/36/9ff4d676dfbdfb2d591cf43f3d90ded01e15b1404fd101180ed2d62a2fd3/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7", size = 2056133, upload-time = "2026-04-20T14:42:23.574Z" },
|
| 1510 |
+
{ url = "https://files.pythonhosted.org/packages/bc/f0/405b442a4d7ba855b06eec8b2bf9c617d43b8432d099dfdc7bf999293495/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2", size = 2228726, upload-time = "2026-04-20T14:44:22.816Z" },
|
| 1511 |
+
{ url = "https://files.pythonhosted.org/packages/e7/f8/65cd92dd5a0bd89ba277a98ecbfaf6fc36bbd3300973c7a4b826d6ab1391/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba", size = 2301214, upload-time = "2026-04-20T14:44:48.792Z" },
|
| 1512 |
+
{ url = "https://files.pythonhosted.org/packages/fd/86/ef96a4c6e79e7a2d0410826a68fbc0eccc0fd44aa733be199d5fcac3bb87/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f", size = 2099927, upload-time = "2026-04-20T14:41:40.196Z" },
|
| 1513 |
+
{ url = "https://files.pythonhosted.org/packages/6d/53/269caf30e0096e0a8a8f929d1982a27b3879872cca2d917d17c2f9fdf4fe/pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22", size = 2128789, upload-time = "2026-04-20T14:41:15.868Z" },
|
| 1514 |
+
{ url = "https://files.pythonhosted.org/packages/00/b0/1a6d9b6a587e118482910c244a1c5acf4d192604174132efd12bf0ac486f/pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f", size = 2173815, upload-time = "2026-04-20T14:44:25.152Z" },
|
| 1515 |
+
{ url = "https://files.pythonhosted.org/packages/87/56/e7e00d4041a7e62b5a40815590114db3b535bf3ca0bf4dca9f16cef25246/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127", size = 2181608, upload-time = "2026-04-20T14:41:28.933Z" },
|
| 1516 |
+
{ url = "https://files.pythonhosted.org/packages/e8/22/4bd23c3d41f7c185d60808a1de83c76cf5aeabf792f6c636a55c3b1ec7f9/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c", size = 2326968, upload-time = "2026-04-20T14:42:03.962Z" },
|
| 1517 |
+
{ url = "https://files.pythonhosted.org/packages/24/ac/66cd45129e3915e5ade3b292cb3bc7fd537f58f8f8dbdaba6170f7cabb74/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1", size = 2369842, upload-time = "2026-04-20T14:41:35.52Z" },
|
| 1518 |
+
{ url = "https://files.pythonhosted.org/packages/a2/51/dd4248abb84113615473aa20d5545b7c4cd73c8644003b5259686f93996c/pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505", size = 1959661, upload-time = "2026-04-20T14:41:00.042Z" },
|
| 1519 |
+
{ url = "https://files.pythonhosted.org/packages/20/eb/59980e5f1ae54a3b86372bd9f0fa373ea2d402e8cdcd3459334430f91e91/pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e", size = 2071686, upload-time = "2026-04-20T14:43:16.471Z" },
|
| 1520 |
+
{ url = "https://files.pythonhosted.org/packages/8c/db/1cf77e5247047dfee34bc01fa9bca134854f528c8eb053e144298893d370/pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df", size = 2026907, upload-time = "2026-04-20T14:43:31.732Z" },
|
| 1521 |
+
{ url = "https://files.pythonhosted.org/packages/57/c0/b3df9f6a543276eadba0a48487b082ca1f201745329d97dbfa287034a230/pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf", size = 2095047, upload-time = "2026-04-20T14:42:37.982Z" },
|
| 1522 |
+
{ url = "https://files.pythonhosted.org/packages/66/57/886a938073b97556c168fd99e1a7305bb363cd30a6d2c76086bf0587b32a/pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee", size = 1934329, upload-time = "2026-04-20T14:43:49.655Z" },
|
| 1523 |
+
{ url = "https://files.pythonhosted.org/packages/0b/7c/b42eaa5c34b13b07ecb51da21761297a9b8eb43044c864a035999998f328/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a", size = 1974847, upload-time = "2026-04-20T14:42:10.737Z" },
|
| 1524 |
+
{ url = "https://files.pythonhosted.org/packages/e6/9b/92b42db6543e7de4f99ae977101a2967b63122d4b6cf7773812da2d7d5b5/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c", size = 2041742, upload-time = "2026-04-20T14:40:44.262Z" },
|
| 1525 |
+
{ url = "https://files.pythonhosted.org/packages/0f/19/46fbe1efabb5aa2834b43b9454e70f9a83ad9c338c1291e48bdc4fecf167/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1", size = 2236235, upload-time = "2026-04-20T14:41:27.307Z" },
|
| 1526 |
+
{ url = "https://files.pythonhosted.org/packages/77/da/b3f95bc009ad60ec53120f5d16c6faa8cabdbe8a20d83849a1f2b8728148/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64", size = 2282633, upload-time = "2026-04-20T14:44:33.271Z" },
|
| 1527 |
+
{ url = "https://files.pythonhosted.org/packages/cc/6e/401336117722e28f32fb8220df676769d28ebdf08f2f4469646d404c43a3/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb", size = 2109679, upload-time = "2026-04-20T14:44:41.065Z" },
|
| 1528 |
+
{ url = "https://files.pythonhosted.org/packages/fc/53/b289f9bc8756a32fe718c46f55afaeaf8d489ee18d1a1e7be1db73f42cc4/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6", size = 2108342, upload-time = "2026-04-20T14:42:50.144Z" },
|
| 1529 |
+
{ url = "https://files.pythonhosted.org/packages/10/5b/8292fc7c1f9111f1b2b7c1b0dcf1179edcd014fc3ea4517499f50b829d71/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c", size = 2157208, upload-time = "2026-04-20T14:42:08.133Z" },
|
| 1530 |
+
{ url = "https://files.pythonhosted.org/packages/2b/9e/f80044e9ec07580f057a89fc131f78dda7a58751ddf52bbe05eaf31db50f/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47", size = 2167237, upload-time = "2026-04-20T14:42:25.412Z" },
|
| 1531 |
+
{ url = "https://files.pythonhosted.org/packages/f8/84/6781a1b037f3b96be9227edbd1101f6d3946746056231bf4ac48cdff1a8d/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab", size = 2312540, upload-time = "2026-04-20T14:40:40.313Z" },
|
| 1532 |
+
{ url = "https://files.pythonhosted.org/packages/3e/db/19c0839feeb728e7df03255581f198dfdf1c2aeb1e174a8420b63c5252e5/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba", size = 2369556, upload-time = "2026-04-20T14:41:09.427Z" },
|
| 1533 |
+
{ url = "https://files.pythonhosted.org/packages/e0/15/3228774cb7cd45f5f721ddf1b2242747f4eb834d0c491f0c02d606f09fed/pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56", size = 1949756, upload-time = "2026-04-20T14:41:25.717Z" },
|
| 1534 |
+
{ url = "https://files.pythonhosted.org/packages/b8/2a/c79cf53fd91e5a87e30d481809f52f9a60dd221e39de66455cf04deaad37/pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8", size = 2051305, upload-time = "2026-04-20T14:43:18.627Z" },
|
| 1535 |
+
{ url = "https://files.pythonhosted.org/packages/0b/db/d8182a7f1d9343a032265aae186eb063fe26ca4c40f256b21e8da4498e89/pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374", size = 2026310, upload-time = "2026-04-20T14:41:01.778Z" },
|
| 1536 |
+
{ url = "https://files.pythonhosted.org/packages/34/42/f426db557e8ab2791bc7562052299944a118655496fbff99914e564c0a94/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803", size = 2091877, upload-time = "2026-04-20T14:43:27.091Z" },
|
| 1537 |
+
{ url = "https://files.pythonhosted.org/packages/5c/4f/86a832a9d14df58e663bfdf4627dc00d3317c2bd583c4fb23390b0f04b8e/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3", size = 1932428, upload-time = "2026-04-20T14:40:45.781Z" },
|
| 1538 |
+
{ url = "https://files.pythonhosted.org/packages/11/1a/fe857968954d93fb78e0d4b6df5c988c74c4aaa67181c60be7cfe327c0ca/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5", size = 1997550, upload-time = "2026-04-20T14:44:02.425Z" },
|
| 1539 |
+
{ url = "https://files.pythonhosted.org/packages/17/eb/9d89ad2d9b0ba8cd65393d434471621b98912abb10fbe1df08e480ba57b5/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4", size = 2137657, upload-time = "2026-04-20T14:42:45.149Z" },
|
| 1540 |
]
|
| 1541 |
|
| 1542 |
[[package]]
|