Spaces:
Sleeping
Sleeping
Jac-Zac commited on
Commit ·
e8b71ab
1
Parent(s): ae347c6
Updated to latest persona-vector
Browse files- .env.example +4 -2
- README.md +22 -38
- pyproject.toml +1 -1
- tabs/analysis/_shared.py +0 -6
- tabs/analysis/cosine.py +2 -2
- tabs/analysis/dendrogram.py +2 -7
- tabs/analysis/layered.py +2 -2
- uv.lock +64 -64
.env.example
CHANGED
|
@@ -5,11 +5,13 @@
|
|
| 5 |
# Get one at https://login.ndif.us
|
| 6 |
NDIF_API_KEY=your-ndif-api-key-here
|
| 7 |
|
| 8 |
-
# HuggingFace
|
| 9 |
# Defaults to ~/.cache/huggingface if unset
|
| 10 |
# Useful when working on a cluster with a shared cache or limited home quota
|
| 11 |
HF_HOME=/path/to/your/hf/cache
|
| 12 |
-
|
|
|
|
|
|
|
| 13 |
|
| 14 |
# Root directory for all generated artifacts (activations, plots, etc.)
|
| 15 |
# Defaults to artifacts if unset
|
|
|
|
| 5 |
# Get one at https://login.ndif.us
|
| 6 |
NDIF_API_KEY=your-ndif-api-key-here
|
| 7 |
|
| 8 |
+
# HuggingFace cache directory for public model and dataset downloads
|
| 9 |
# Defaults to ~/.cache/huggingface if unset
|
| 10 |
# Useful when working on a cluster with a shared cache or limited home quota
|
| 11 |
HF_HOME=/path/to/your/hf/cache
|
| 12 |
+
# Optional: improves Hugging Face Hub rate limits for public downloads.
|
| 13 |
+
# The built-in datasets are public and do not require this.
|
| 14 |
+
# HF_TOKEN=your-token
|
| 15 |
|
| 16 |
# Root directory for all generated artifacts (activations, plots, etc.)
|
| 17 |
# Defaults to artifacts if unset
|
README.md
CHANGED
|
@@ -12,9 +12,6 @@ pinned: false
|
|
| 12 |
|
| 13 |
Streamlit interface for persona vector extraction, analysis, and chat.
|
| 14 |
|
| 15 |
-
> [!WARNING]
|
| 16 |
-
> This is a proof-of-concept UI, mostly vibe-coded. It will likely be replaced by a proper frontend/backend in the future.
|
| 17 |
-
|
| 18 |
## Overview
|
| 19 |
|
| 20 |
A web app built on top of [persona-vectors](../persona-vectors) that provides these tabs:
|
|
@@ -32,11 +29,16 @@ persona-ui/
|
|
| 32 |
├── state.py # Session state management (chat history, KV cache)
|
| 33 |
├── tabs/
|
| 34 |
│ ├── chat.py / chat_ui.py / chat_shared.py # Chat tab
|
| 35 |
-
│ ├── analysis_core.py # Analysis tab (cosine sim, PCA, UMAP, Isomap, dendrogram)
|
| 36 |
│ ├── compare_chat.py # Side-by-side chat comparison mode
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
│ ├── extract.py # Extraction tab
|
| 38 |
-
│ ├── probe.py
|
| 39 |
-
│ └──
|
| 40 |
└── utils/
|
| 41 |
├── analysis_sources.py # Local + Hub persona-vector store wiring
|
| 42 |
├── chat.py # Chat generation logic
|
|
@@ -46,13 +48,13 @@ persona-ui/
|
|
| 46 |
├── helpers.py # UI labels and slug helpers
|
| 47 |
├── probe_trace.py # Chat-token activation tracing
|
| 48 |
├── probe_overlay.py # Per-token probe-score overlay
|
| 49 |
-
├── probes.py
|
|
|
|
| 50 |
└── runtime.py # Model caching and NDIF queries
|
| 51 |
```
|
| 52 |
|
| 53 |
-
Dataset loading and environment helpers are provided by the sibling
|
| 54 |
-
[persona-
|
| 55 |
-
steering logic comes from [persona-vectors](../persona-vectors).
|
| 56 |
|
| 57 |
## Installation
|
| 58 |
|
|
@@ -64,8 +66,7 @@ cp .env.example .env
|
|
| 64 |
## Local Development
|
| 65 |
|
| 66 |
The checked-in dependency config uses published packages. For local package
|
| 67 |
-
work, uncomment the `tool.uv.sources` block in `pyproject.toml` and keep sibling
|
| 68 |
-
checkouts next to this repo.
|
| 69 |
|
| 70 |
Example:
|
| 71 |
|
|
@@ -93,13 +94,7 @@ streamlit run app.py
|
|
| 93 |
|
| 94 |
This app can be deployed to Hugging Face Spaces using Docker.
|
| 95 |
|
| 96 |
-
###
|
| 97 |
-
|
| 98 |
-
Dependencies are published on PyPI, so deployment does not require sibling
|
| 99 |
-
checkouts. Remote NDIF execution still needs an API key, either configured as an
|
| 100 |
-
environment variable or entered by each user in the sidebar.
|
| 101 |
-
|
| 102 |
-
### Build Locally (Optional)
|
| 103 |
|
| 104 |
```bash
|
| 105 |
docker build -t persona-ui .
|
|
@@ -114,17 +109,19 @@ Copy `.env.example` to `.env` and fill in:
|
|
| 114 |
```bash
|
| 115 |
NDIF_API_KEY=... # Optional shared NDIF key; users can also enter one per session
|
| 116 |
HF_HOME=... # Optional: HuggingFace cache directory
|
|
|
|
| 117 |
ARTIFACTS_DIR=... # Optional: where persona vectors are read from (default: ./artifacts)
|
| 118 |
PERSONA_VECTORS_HUB_REPO=... # Optional: default Analysis/Probing Hub dataset repo
|
|
|
|
| 119 |
PERSONA_UI_VECTOR_CACHE_ENTRIES=4 # Optional: loaded analysis datasets kept warm
|
| 120 |
PERSONA_UI_PREPARED_CACHE_ENTRIES=8 # Optional: prepared projections / k-means groups kept warm
|
| 121 |
PERSONA_UI_FIGURE_STATE_ENTRIES=2 # Optional: recent rendered Analysis figures kept in-session
|
| 122 |
PERSONA_UI_PREPARED_STATE_ENTRIES=4 # Optional: recent projection-ready markers kept in-session
|
| 123 |
```
|
| 124 |
|
| 125 |
-
The app picks up
|
| 126 |
-
|
| 127 |
-
key when they need remote execution.
|
| 128 |
|
| 129 |
## Persona Vectors
|
| 130 |
|
|
@@ -142,19 +139,6 @@ artifacts/
|
|
| 142 |
└── <export>.json
|
| 143 |
```
|
| 144 |
|
| 145 |
-
`<model_dir>` is the model name with `/` replaced by `__` (e.g.
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
JSON payload.
|
| 149 |
-
|
| 150 |
-
The all-questions extraction script (`persona-vectors/scripts/extraction_all_questions.sh`)
|
| 151 |
-
writes to `artifacts/persona-vectors/` instead of `artifacts/activations/`,
|
| 152 |
-
so all-questions and train-split runs can coexist; point `ARTIFACTS_DIR` (or
|
| 153 |
-
the Analysis/Probing tab's Local source path) at the tree you want to load.
|
| 154 |
-
|
| 155 |
-
The store classes are `PersonaVectorStore` (local) and `HFPersonaVectorStore`
|
| 156 |
-
(Hub) — same API, both imported by `utils/analysis_sources.py`.
|
| 157 |
-
|
| 158 |
-
## Analysis responsiveness
|
| 159 |
-
|
| 160 |
-
The Analysis tab keeps small bounded caches of loaded vector datasets, prepared projection data, and a tiny MRU window of rendered figures. Once a projection has been computed, recoloring it by persona, attribute, or k-means group reuses the same coordinates; nearby method switches can reuse the last couple of figures instead of rebuilding immediately, while the caps keep RAM bounded. Tune `PERSONA_UI_VECTOR_CACHE_ENTRIES` if RAM is tight or you regularly switch among many selections, `PERSONA_UI_PREPARED_CACHE_ENTRIES` if you revisit several projection configurations in one session, and `PERSONA_UI_FIGURE_STATE_ENTRIES` if you want more or less method-switch warmth. Probe loading, probe sweeps, and per-trace probe outputs are bounded separately via `PERSONA_UI_PROBE_CACHE_ENTRIES`, `PERSONA_UI_PROBE_SWEEP_CACHE_ENTRIES`, and `PERSONA_UI_PROBE_DERIVED_CACHE_ENTRIES`; the derived-output cache defaults to a wider MRU window because those tensors are small compared with traced activations and are cheap wins to keep warm.
|
|
|
|
| 12 |
|
| 13 |
Streamlit interface for persona vector extraction, analysis, and chat.
|
| 14 |
|
|
|
|
|
|
|
|
|
|
| 15 |
## Overview
|
| 16 |
|
| 17 |
A web app built on top of [persona-vectors](../persona-vectors) that provides these tabs:
|
|
|
|
| 29 |
├── state.py # Session state management (chat history, KV cache)
|
| 30 |
├── tabs/
|
| 31 |
│ ├── chat.py / chat_ui.py / chat_shared.py # Chat tab
|
|
|
|
| 32 |
│ ├── compare_chat.py # Side-by-side chat comparison mode
|
| 33 |
+
│ ├── analysis_core.py # Analysis tab entry point
|
| 34 |
+
│ ├── analysis/ # Analysis tab internals
|
| 35 |
+
│ │ ├── _shared.py / _state.py # Shared loading + session state
|
| 36 |
+
│ │ ├── cosine.py # Cosine similarity view
|
| 37 |
+
│ │ ├── dendrogram.py # Persona dendrograms
|
| 38 |
+
│ │ └── layered.py # PCA/UMAP/Isomap projections
|
| 39 |
│ ├── extract.py # Extraction tab
|
| 40 |
+
│ ├── probe.py / probe_ui.py # Probe diagnostics + upload/tracing controls
|
| 41 |
+
│ └── probe_sweep.py # Probe sweep tab
|
| 42 |
└── utils/
|
| 43 |
├── analysis_sources.py # Local + Hub persona-vector store wiring
|
| 44 |
├── chat.py # Chat generation logic
|
|
|
|
| 48 |
├── helpers.py # UI labels and slug helpers
|
| 49 |
├── probe_trace.py # Chat-token activation tracing
|
| 50 |
├── probe_overlay.py # Per-token probe-score overlay
|
| 51 |
+
├── probes.py / probe_files.py # Probe loading, scoring, artifact paths
|
| 52 |
+
├── preload.py # Background startup warmup
|
| 53 |
└── runtime.py # Model caching and NDIF queries
|
| 54 |
```
|
| 55 |
|
| 56 |
+
Dataset loading and environment helpers are provided by the sibling [persona-data](https://github.com/implicit-personalization/persona-data) package.
|
| 57 |
+
Core extraction, analysis, and steering logic comes from [persona-vectors](https://github.com/implicit-personalization/persona-vectors).
|
|
|
|
| 58 |
|
| 59 |
## Installation
|
| 60 |
|
|
|
|
| 66 |
## Local Development
|
| 67 |
|
| 68 |
The checked-in dependency config uses published packages. For local package
|
| 69 |
+
work, uncomment the `tool.uv.sources` block in `pyproject.toml` and keep sibling checkouts next to this repo.
|
|
|
|
| 70 |
|
| 71 |
Example:
|
| 72 |
|
|
|
|
| 94 |
|
| 95 |
This app can be deployed to Hugging Face Spaces using Docker.
|
| 96 |
|
| 97 |
+
### Build Locally
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
```bash
|
| 100 |
docker build -t persona-ui .
|
|
|
|
| 109 |
```bash
|
| 110 |
NDIF_API_KEY=... # Optional shared NDIF key; users can also enter one per session
|
| 111 |
HF_HOME=... # Optional: HuggingFace cache directory
|
| 112 |
+
HF_TOKEN=... # Optional: higher Hugging Face Hub rate limits; public datasets do not require it
|
| 113 |
ARTIFACTS_DIR=... # Optional: where persona vectors are read from (default: ./artifacts)
|
| 114 |
PERSONA_VECTORS_HUB_REPO=... # Optional: default Analysis/Probing Hub dataset repo
|
| 115 |
+
PERSONA_UI_STORE_CACHE_ENTRIES=4 # Optional: open local/Hub vector stores kept warm
|
| 116 |
PERSONA_UI_VECTOR_CACHE_ENTRIES=4 # Optional: loaded analysis datasets kept warm
|
| 117 |
PERSONA_UI_PREPARED_CACHE_ENTRIES=8 # Optional: prepared projections / k-means groups kept warm
|
| 118 |
PERSONA_UI_FIGURE_STATE_ENTRIES=2 # Optional: recent rendered Analysis figures kept in-session
|
| 119 |
PERSONA_UI_PREPARED_STATE_ENTRIES=4 # Optional: recent projection-ready markers kept in-session
|
| 120 |
```
|
| 121 |
|
| 122 |
+
The app picks up `.env` automatically via `load_dotenv()` on startup, and hosted
|
| 123 |
+
environments such as Hugging Face Spaces can provide the same values as
|
| 124 |
+
environment variables. If `NDIF_API_KEY` is unset, Chat and Extract users are prompted for a per-session key when they need remote execution.
|
| 125 |
|
| 126 |
## Persona Vectors
|
| 127 |
|
|
|
|
| 139 |
└── <export>.json
|
| 140 |
```
|
| 141 |
|
| 142 |
+
`<model_dir>` is the model name with `/` replaced by `__` (e.g. `google__gemma-2-9b-it`).
|
| 143 |
+
The manifest stores persona names, tensor shape metadata, and sample ids.
|
| 144 |
+
Chat exports still store `dataset_source` in the JSON payload.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pyproject.toml
CHANGED
|
@@ -5,7 +5,7 @@ description = "Streamlit UI for persona-vectors"
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.12"
|
| 7 |
dependencies = [
|
| 8 |
-
"persona-vectors>=0.8.
|
| 9 |
"datasets>=4.8.5",
|
| 10 |
"huggingface-hub>=1.14.0",
|
| 11 |
"streamlit>=1.44.0",
|
|
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.12"
|
| 7 |
dependencies = [
|
| 8 |
+
"persona-vectors>=0.8.5",
|
| 9 |
"datasets>=4.8.5",
|
| 10 |
"huggingface-hub>=1.14.0",
|
| 11 |
"streamlit>=1.44.0",
|
tabs/analysis/_shared.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
| 1 |
-
import gc
|
| 2 |
-
|
| 3 |
import plotly.graph_objects as go
|
| 4 |
import streamlit as st
|
| 5 |
from persona_data.synth_persona import BASELINE_PERSONA_ID
|
|
@@ -116,10 +114,6 @@ def _load_variant_vectors(
|
|
| 116 |
)
|
| 117 |
|
| 118 |
|
| 119 |
-
def _release_vector_memory() -> None:
|
| 120 |
-
gc.collect()
|
| 121 |
-
|
| 122 |
-
|
| 123 |
def _evenly_spaced_layers(layers: list[int], max_count: int) -> list[int]:
|
| 124 |
if max_count >= len(layers):
|
| 125 |
return layers
|
|
|
|
|
|
|
|
|
|
| 1 |
import plotly.graph_objects as go
|
| 2 |
import streamlit as st
|
| 3 |
from persona_data.synth_persona import BASELINE_PERSONA_ID
|
|
|
|
| 114 |
)
|
| 115 |
|
| 116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
def _evenly_spaced_layers(layers: list[int], max_count: int) -> list[int]:
|
| 118 |
if max_count >= len(layers):
|
| 119 |
return layers
|
tabs/analysis/cosine.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
from itertools import combinations
|
| 2 |
|
| 3 |
import streamlit as st
|
|
@@ -7,7 +8,6 @@ from persona_vectors.plots import plot_layer_similarity
|
|
| 7 |
from tabs.analysis._shared import (
|
| 8 |
_load_variant_vectors,
|
| 9 |
_plotly_chart,
|
| 10 |
-
_release_vector_memory,
|
| 11 |
_render_save_buttons,
|
| 12 |
_select_artifact_personas,
|
| 13 |
)
|
|
@@ -199,7 +199,7 @@ def _render_cosine_similarity(
|
|
| 199 |
_store_figure_state(cosine_fig_key, figures)
|
| 200 |
progress.progress(100, text="Done.")
|
| 201 |
finally:
|
| 202 |
-
|
| 203 |
progress.empty()
|
| 204 |
|
| 205 |
if cosine_fig_key in st.session_state:
|
|
|
|
| 1 |
+
import gc
|
| 2 |
from itertools import combinations
|
| 3 |
|
| 4 |
import streamlit as st
|
|
|
|
| 8 |
from tabs.analysis._shared import (
|
| 9 |
_load_variant_vectors,
|
| 10 |
_plotly_chart,
|
|
|
|
| 11 |
_render_save_buttons,
|
| 12 |
_select_artifact_personas,
|
| 13 |
)
|
|
|
|
| 199 |
_store_figure_state(cosine_fig_key, figures)
|
| 200 |
progress.progress(100, text="Done.")
|
| 201 |
finally:
|
| 202 |
+
gc.collect()
|
| 203 |
progress.empty()
|
| 204 |
|
| 205 |
if cosine_fig_key in st.session_state:
|
tabs/analysis/dendrogram.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
from copy import deepcopy
|
| 2 |
|
| 3 |
import plotly.graph_objects as go
|
|
@@ -10,7 +11,6 @@ from tabs.analysis._shared import (
|
|
| 10 |
_load_persona_options,
|
| 11 |
_load_variant_vectors,
|
| 12 |
_plotly_chart,
|
| 13 |
-
_release_vector_memory,
|
| 14 |
_render_layer_frame_controls,
|
| 15 |
_render_persona_select_controls,
|
| 16 |
_render_save_buttons,
|
|
@@ -311,16 +311,11 @@ def _render_dendrogram_analysis(
|
|
| 311 |
st.error(f"Could not build dendrogram: {exc}")
|
| 312 |
st.session_state.pop(fig_key, None)
|
| 313 |
finally:
|
| 314 |
-
|
| 315 |
progress.empty()
|
| 316 |
|
| 317 |
if fig_key in st.session_state:
|
| 318 |
saved = st.session_state[fig_key]
|
| 319 |
-
if len(saved) == 5:
|
| 320 |
-
# Drop pre-refactor state so hot-reloaded sessions do not unpack the
|
| 321 |
-
# old two-figure payload shape.
|
| 322 |
-
st.session_state.pop(fig_key, None)
|
| 323 |
-
return
|
| 324 |
fig_a, fig_b, comparison_fig, n_personas, va, vb = saved
|
| 325 |
if comparison_fig is not None:
|
| 326 |
_plotly_chart(comparison_fig)
|
|
|
|
| 1 |
+
import gc
|
| 2 |
from copy import deepcopy
|
| 3 |
|
| 4 |
import plotly.graph_objects as go
|
|
|
|
| 11 |
_load_persona_options,
|
| 12 |
_load_variant_vectors,
|
| 13 |
_plotly_chart,
|
|
|
|
| 14 |
_render_layer_frame_controls,
|
| 15 |
_render_persona_select_controls,
|
| 16 |
_render_save_buttons,
|
|
|
|
| 311 |
st.error(f"Could not build dendrogram: {exc}")
|
| 312 |
st.session_state.pop(fig_key, None)
|
| 313 |
finally:
|
| 314 |
+
gc.collect()
|
| 315 |
progress.empty()
|
| 316 |
|
| 317 |
if fig_key in st.session_state:
|
| 318 |
saved = st.session_state[fig_key]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 319 |
fig_a, fig_b, comparison_fig, n_personas, va, vb = saved
|
| 320 |
if comparison_fig is not None:
|
| 321 |
_plotly_chart(comparison_fig)
|
tabs/analysis/layered.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
from collections.abc import Callable
|
| 2 |
|
| 3 |
import plotly.graph_objects as go
|
|
@@ -14,7 +15,6 @@ from tabs.analysis._shared import (
|
|
| 14 |
_gray_out_unselected_personas,
|
| 15 |
_load_persona_vectors,
|
| 16 |
_plotly_chart,
|
| 17 |
-
_release_vector_memory,
|
| 18 |
_render_save_buttons,
|
| 19 |
_select_single_variant_samples,
|
| 20 |
)
|
|
@@ -564,7 +564,7 @@ def _render_layered_figure_analysis(
|
|
| 564 |
st.error(f"Could not build figure: {exc}")
|
| 565 |
st.session_state.pop(state_keys.figure, None)
|
| 566 |
finally:
|
| 567 |
-
|
| 568 |
progress.empty()
|
| 569 |
|
| 570 |
if state_keys.figure in st.session_state:
|
|
|
|
| 1 |
+
import gc
|
| 2 |
from collections.abc import Callable
|
| 3 |
|
| 4 |
import plotly.graph_objects as go
|
|
|
|
| 15 |
_gray_out_unselected_personas,
|
| 16 |
_load_persona_vectors,
|
| 17 |
_plotly_chart,
|
|
|
|
| 18 |
_render_save_buttons,
|
| 19 |
_select_single_variant_samples,
|
| 20 |
)
|
|
|
|
| 564 |
st.error(f"Could not build figure: {exc}")
|
| 565 |
st.session_state.pop(state_keys.figure, None)
|
| 566 |
finally:
|
| 567 |
+
gc.collect()
|
| 568 |
progress.empty()
|
| 569 |
|
| 570 |
if state_keys.figure in st.session_state:
|
uv.lock
CHANGED
|
@@ -229,11 +229,11 @@ wheels = [
|
|
| 229 |
|
| 230 |
[[package]]
|
| 231 |
name = "cachetools"
|
| 232 |
-
version = "7.1.
|
| 233 |
source = { registry = "https://pypi.org/simple" }
|
| 234 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 235 |
wheels = [
|
| 236 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 237 |
]
|
| 238 |
|
| 239 |
[[package]]
|
|
@@ -1232,63 +1232,63 @@ wheels = [
|
|
| 1232 |
|
| 1233 |
[[package]]
|
| 1234 |
name = "numpy"
|
| 1235 |
-
version = "2.4.
|
| 1236 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1237 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1238 |
-
wheels = [
|
| 1239 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1240 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1241 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1242 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1243 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1244 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1245 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1246 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1247 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1248 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1249 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1250 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1251 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1252 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1253 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1254 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1255 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1256 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1257 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1258 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1259 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1260 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1261 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1262 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1263 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1264 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1265 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1266 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1267 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1268 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1269 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1270 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1271 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1272 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1273 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1274 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1275 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1276 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1277 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1278 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1279 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1280 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1281 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1282 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1283 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1284 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1285 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1286 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1287 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1288 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1289 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1290 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1291 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1292 |
]
|
| 1293 |
|
| 1294 |
[[package]]
|
|
@@ -1608,7 +1608,7 @@ requires-dist = [
|
|
| 1608 |
{ name = "catppuccin", specifier = ">=2.5.0" },
|
| 1609 |
{ name = "datasets", specifier = ">=4.8.5" },
|
| 1610 |
{ name = "huggingface-hub", specifier = ">=1.14.0" },
|
| 1611 |
-
{ name = "persona-vectors", specifier = ">=0.8.
|
| 1612 |
{ name = "plotly", specifier = ">=6.6.0" },
|
| 1613 |
{ name = "python-dotenv", specifier = ">=1.2.2" },
|
| 1614 |
{ name = "safetensors", specifier = ">=0.7.0" },
|
|
@@ -1620,7 +1620,7 @@ dev = [{ name = "pytest", specifier = ">=9.0.3" }]
|
|
| 1620 |
|
| 1621 |
[[package]]
|
| 1622 |
name = "persona-vectors"
|
| 1623 |
-
version = "0.8.
|
| 1624 |
source = { registry = "https://pypi.org/simple" }
|
| 1625 |
dependencies = [
|
| 1626 |
{ name = "datasets" },
|
|
@@ -1639,9 +1639,9 @@ dependencies = [
|
|
| 1639 |
{ name = "transformers" },
|
| 1640 |
{ name = "umap-learn" },
|
| 1641 |
]
|
| 1642 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1643 |
wheels = [
|
| 1644 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1645 |
]
|
| 1646 |
|
| 1647 |
[[package]]
|
|
|
|
| 229 |
|
| 230 |
[[package]]
|
| 231 |
name = "cachetools"
|
| 232 |
+
version = "7.1.3"
|
| 233 |
source = { registry = "https://pypi.org/simple" }
|
| 234 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8f/c1/67cfb86aa21144796ff51068326d467fbef8ee42f8d08a3a8a926106cf0c/cachetools-7.1.3.tar.gz", hash = "sha256:135cfe944bc3c1e805505f65dae0bef375a2f96261171ab66c79ef77d0bda39d", size = 45780, upload-time = "2026-05-18T18:21:03.819Z" }
|
| 235 |
wheels = [
|
| 236 |
+
{ url = "https://files.pythonhosted.org/packages/68/52/8ff5c1a3b2e821ced9b2998fba3ee29aa4525c0bf51e5ee55dd6f61a4ed5/cachetools-7.1.3-py3-none-any.whl", hash = "sha256:9876787e2346e20584d5cca236cb5d49d04e7193de91646f230725b2e1e8b804", size = 16763, upload-time = "2026-05-18T18:21:02.386Z" },
|
| 237 |
]
|
| 238 |
|
| 239 |
[[package]]
|
|
|
|
| 1232 |
|
| 1233 |
[[package]]
|
| 1234 |
name = "numpy"
|
| 1235 |
+
version = "2.4.6"
|
| 1236 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1237 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" }
|
| 1238 |
+
wheels = [
|
| 1239 |
+
{ url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" },
|
| 1240 |
+
{ url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" },
|
| 1241 |
+
{ url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" },
|
| 1242 |
+
{ url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" },
|
| 1243 |
+
{ url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" },
|
| 1244 |
+
{ url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" },
|
| 1245 |
+
{ url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" },
|
| 1246 |
+
{ url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" },
|
| 1247 |
+
{ url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" },
|
| 1248 |
+
{ url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" },
|
| 1249 |
+
{ url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" },
|
| 1250 |
+
{ url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" },
|
| 1251 |
+
{ url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" },
|
| 1252 |
+
{ url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" },
|
| 1253 |
+
{ url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" },
|
| 1254 |
+
{ url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" },
|
| 1255 |
+
{ url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" },
|
| 1256 |
+
{ url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" },
|
| 1257 |
+
{ url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" },
|
| 1258 |
+
{ url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" },
|
| 1259 |
+
{ url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" },
|
| 1260 |
+
{ url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" },
|
| 1261 |
+
{ url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" },
|
| 1262 |
+
{ url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" },
|
| 1263 |
+
{ url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" },
|
| 1264 |
+
{ url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" },
|
| 1265 |
+
{ url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" },
|
| 1266 |
+
{ url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" },
|
| 1267 |
+
{ url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" },
|
| 1268 |
+
{ url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" },
|
| 1269 |
+
{ url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" },
|
| 1270 |
+
{ url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" },
|
| 1271 |
+
{ url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" },
|
| 1272 |
+
{ url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" },
|
| 1273 |
+
{ url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" },
|
| 1274 |
+
{ url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" },
|
| 1275 |
+
{ url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" },
|
| 1276 |
+
{ url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" },
|
| 1277 |
+
{ url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" },
|
| 1278 |
+
{ url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" },
|
| 1279 |
+
{ url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" },
|
| 1280 |
+
{ url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" },
|
| 1281 |
+
{ url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" },
|
| 1282 |
+
{ url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" },
|
| 1283 |
+
{ url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" },
|
| 1284 |
+
{ url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" },
|
| 1285 |
+
{ url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" },
|
| 1286 |
+
{ url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" },
|
| 1287 |
+
{ url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" },
|
| 1288 |
+
{ url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" },
|
| 1289 |
+
{ url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" },
|
| 1290 |
+
{ url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" },
|
| 1291 |
+
{ url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" },
|
| 1292 |
]
|
| 1293 |
|
| 1294 |
[[package]]
|
|
|
|
| 1608 |
{ name = "catppuccin", specifier = ">=2.5.0" },
|
| 1609 |
{ name = "datasets", specifier = ">=4.8.5" },
|
| 1610 |
{ name = "huggingface-hub", specifier = ">=1.14.0" },
|
| 1611 |
+
{ name = "persona-vectors", specifier = ">=0.8.5" },
|
| 1612 |
{ name = "plotly", specifier = ">=6.6.0" },
|
| 1613 |
{ name = "python-dotenv", specifier = ">=1.2.2" },
|
| 1614 |
{ name = "safetensors", specifier = ">=0.7.0" },
|
|
|
|
| 1620 |
|
| 1621 |
[[package]]
|
| 1622 |
name = "persona-vectors"
|
| 1623 |
+
version = "0.8.5"
|
| 1624 |
source = { registry = "https://pypi.org/simple" }
|
| 1625 |
dependencies = [
|
| 1626 |
{ name = "datasets" },
|
|
|
|
| 1639 |
{ name = "transformers" },
|
| 1640 |
{ name = "umap-learn" },
|
| 1641 |
]
|
| 1642 |
+
sdist = { url = "https://files.pythonhosted.org/packages/9d/ca/032a8f60c4a1fd7ecc094971a817f4d25e752a023f8de88217e0f68e0429/persona_vectors-0.8.5.tar.gz", hash = "sha256:225bb481ef1ae24d69fceaf4b9a90567fe88630ffed1209a03c4445f5d15217a", size = 43191, upload-time = "2026-05-19T09:14:16.111Z" }
|
| 1643 |
wheels = [
|
| 1644 |
+
{ url = "https://files.pythonhosted.org/packages/ab/fe/1ac8349c9f2da7d38c96d2eafe86871251055ad6a3c3aba64b6d008cb000/persona_vectors-0.8.5-py3-none-any.whl", hash = "sha256:b1f706c1160dd0b9d86fdeec97a757779bc95189c2a6682c0c7f76689871f3ea", size = 53182, upload-time = "2026-05-19T09:14:16.916Z" },
|
| 1645 |
]
|
| 1646 |
|
| 1647 |
[[package]]
|