Spaces:
Sleeping
Sleeping
Commit
·
97f90b2
1
Parent(s):
c8745de
working pipeline
Browse files- .gitignore +6 -0
- README.md +7 -20
- config/pipeline_config.py +68 -0
- container_setup/Dockerfile +13 -32
- container_setup/attach.sh +1 -0
- container_setup/build.sh +2 -2
- container_setup/credentials +3 -3
- container_setup/launch_container.sh +3 -4
- entrypoints/app.py +60 -0
- entrypoints/pipeline.py +60 -0
- main.py +0 -6
- notebooks/ML2_2025_nlp_ops1.ipynb +0 -167
- pyproject.toml +8 -1
- scripts/launch_app.sh +0 -0
- scripts/pipeline.sh +7 -0
- src/pipeline/arxiv_dataset.py +162 -0
- src/pipeline/env_setup.py +11 -0
- src/pipeline/logging_setup.py +12 -0
- src/pipeline/metrics.py +17 -0
- src/pipeline/model_setup.py +16 -0
- uv.lock +639 -20
.gitignore
CHANGED
|
@@ -6,5 +6,11 @@ dist/
|
|
| 6 |
wheels/
|
| 7 |
*.egg-info
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
# Virtual environments
|
| 10 |
.venv
|
|
|
|
| 6 |
wheels/
|
| 7 |
*.egg-info
|
| 8 |
|
| 9 |
+
outputs
|
| 10 |
+
|
| 11 |
+
data
|
| 12 |
+
NOTES.md
|
| 13 |
+
.env
|
| 14 |
+
|
| 15 |
# Virtual environments
|
| 16 |
.venv
|
README.md
CHANGED
|
@@ -1,34 +1,21 @@
|
|
| 1 |
|
| 2 |
-
Upload a file or csvs with messages/comments
|
| 3 |
|
| 4 |
-
My service cleans repetative messages(for example bot are mixed in here)
|
| 5 |
|
| 6 |
-
анализатор комментариев которые показывают ссылки на разные но описательные комментарии(сгружаете все комменты с продукта)
|
| 7 |
-
что должен делать:
|
| 8 |
-
- фильтровать ботов
|
| 9 |
-
- фильтровать спам/nsfw/не информативные оскорбления (Кластеризация по LSH, отмести ботов)
|
| 10 |
-
- фильтрация нерелевантных комментариев и сообщений
|
| 11 |
-
- показывать топ РАЗНЫХ по содержанию и по сентименту комментариев
|
| 12 |
-
- суммаризатор мнений
|
| 13 |
|
| 14 |
-
идеи для сервиса по анализу комментариев:
|
| 15 |
-
- скор полезности комментария/сообщения
|
| 16 |
-
- скор полезности по лайкам на маркетплейсах (контрастивно учим пары продукт-комментарии)
|
| 17 |
|
| 18 |
-
|
| 19 |
-
- добавить парсер озона чтобы лучше понимать отзывы про продукт? (платно)
|
| 20 |
|
| 21 |
-
|
| 22 |
|
|
|
|
| 23 |
|
| 24 |
|
| 25 |
-
идеи:
|
| 26 |
-
- детектор галлюцинаций
|
| 27 |
-
- извлечение мнений из комментариев
|
| 28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
|
| 31 |
|
| 32 |
-
uv venv
|
| 33 |
|
| 34 |
-
chmod +x container_setup/build container_setup/launch_container
|
|
|
|
| 1 |
|
|
|
|
| 2 |
|
|
|
|
| 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
+
uv venv
|
|
|
|
| 7 |
|
| 8 |
+
chmod +x container_setup/build container_setup/launch_container
|
| 9 |
|
| 10 |
+
in folder data unzip dataset
|
| 11 |
|
| 12 |
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
+
add .env with COMET_API_KEY, COMET_MODE=GET
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
chmod +x on scripts
|
| 18 |
|
| 19 |
|
| 20 |
|
|
|
|
| 21 |
|
|
|
config/pipeline_config.py
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from dataclasses import dataclass, field
|
| 2 |
+
|
| 3 |
+
from hydra.core.config_store import ConfigStore
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
@dataclass
|
| 7 |
+
class DatasetConfig:
|
| 8 |
+
"""Configuration for dataset preparation and preprocessing"""
|
| 9 |
+
|
| 10 |
+
val_size: float = 0.1
|
| 11 |
+
test_size: float = 0.1
|
| 12 |
+
seed: int = 42
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
@dataclass
|
| 16 |
+
class CustomTrainingArguments:
|
| 17 |
+
output_dir: str = "data/checkpoints"
|
| 18 |
+
overwrite_output_dir: bool = True
|
| 19 |
+
num_train_epochs: float = 10
|
| 20 |
+
learning_rate: float = 5e-5
|
| 21 |
+
lr_scheduler_type: str = "cosine"
|
| 22 |
+
# lr_scheduler_kwargs={},
|
| 23 |
+
warmup_ratio: float = 0.03125
|
| 24 |
+
warmup_steps: int = 10
|
| 25 |
+
# per_device_train_batch_size: int = 32
|
| 26 |
+
gradient_accumulation_steps: int = 1
|
| 27 |
+
log_level: str = "error"
|
| 28 |
+
# logging_dir="output_dir/runs/CURRENT_DATETIME_HOSTNAME" # логи для tensorboard (default)
|
| 29 |
+
logging_strategy: str = "steps"
|
| 30 |
+
logging_steps: int = 1
|
| 31 |
+
save_strategy: str = "best"
|
| 32 |
+
# save_steps=1,
|
| 33 |
+
save_total_limit: int = 2
|
| 34 |
+
save_safetensors: bool = True # safetensors вместо torch.save / torch.load
|
| 35 |
+
save_only_model: bool = True # сохраняем optimizer, shceduler, rng, ...
|
| 36 |
+
use_cpu: bool = False
|
| 37 |
+
seed: int = 42
|
| 38 |
+
# bf16=True, # использовать bf16 вместо fp32
|
| 39 |
+
eval_strategy: str = "epoch"
|
| 40 |
+
# eval_steps=32,
|
| 41 |
+
disable_tqdm: bool = False
|
| 42 |
+
load_best_model_at_end: bool = True
|
| 43 |
+
label_smoothing_factor: float = 0.0
|
| 44 |
+
optim: str = "adamw_torch"
|
| 45 |
+
# optim_args=...,
|
| 46 |
+
# resume_from_checkpoint: str = "last-checkpoint"
|
| 47 |
+
auto_find_batch_size: bool = True
|
| 48 |
+
report_to: str = "comet_ml"
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
@dataclass
|
| 52 |
+
class ModelConfig:
|
| 53 |
+
"""Configuration for model architecture and parameters"""
|
| 54 |
+
|
| 55 |
+
model_name: str = "bert-base-uncased"
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
@dataclass
|
| 59 |
+
class PipelineConfig:
|
| 60 |
+
"""Master configuration for the entire pipeline"""
|
| 61 |
+
|
| 62 |
+
dataset: DatasetConfig = field(default_factory=DatasetConfig)
|
| 63 |
+
model: ModelConfig = field(default_factory=ModelConfig)
|
| 64 |
+
training: CustomTrainingArguments = field(default_factory=CustomTrainingArguments)
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
cs = ConfigStore.instance()
|
| 68 |
+
cs.store(name="pipeline_config", node=PipelineConfig)
|
container_setup/Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
FROM python:3.
|
| 2 |
|
| 3 |
ENV PYTHONDONTWRITEBYTECODE=1
|
| 4 |
ENV PYTHONUNBUFFERED=1
|
|
@@ -14,25 +14,9 @@ RUN apt-get update && \
|
|
| 14 |
tmux \
|
| 15 |
unzip \
|
| 16 |
build-essential \
|
| 17 |
-
python3-dev \
|
| 18 |
-
|
| 19 |
|
| 20 |
-
# pkg-config \
|
| 21 |
-
# cmake \
|
| 22 |
-
|
| 23 |
-
# cargo \
|
| 24 |
-
# RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
|
| 25 |
-
# source $HOME/.cargo/env && \
|
| 26 |
-
# rustup default stable
|
| 27 |
-
|
| 28 |
-
# RUN rustup install stable && rustup default stable
|
| 29 |
-
|
| 30 |
-
# RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
|
| 31 |
-
# source $HOME/.cargo/env && \
|
| 32 |
-
# rustup default stable
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
# Declare build arguments before using them
|
| 36 |
ARG USER_ID=1000
|
| 37 |
ARG GROUP_ID=1000
|
| 38 |
|
|
@@ -40,11 +24,12 @@ ARG GROUP_ID=1000
|
|
| 40 |
RUN addgroup --gid $GROUP_ID appgroup && \
|
| 41 |
adduser --uid $USER_ID --gid $GROUP_ID --shell /bin/bash --disabled-password --gecos "" appuser
|
| 42 |
|
| 43 |
-
# Install sudo
|
| 44 |
-
RUN apt-get update && apt-get install -y sudo
|
|
|
|
| 45 |
|
| 46 |
-
#
|
| 47 |
-
RUN
|
| 48 |
|
| 49 |
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
| 50 |
|
|
@@ -54,19 +39,15 @@ USER appuser
|
|
| 54 |
SHELL ["/usr/bin/fish", "-c"]
|
| 55 |
|
| 56 |
WORKDIR /app
|
| 57 |
-
# Create the virtual environment in a directory not affected by the mount
|
| 58 |
-
# Copy requirements.txt and install dependencies
|
| 59 |
-
# COPY --chown=appuser:appgroup requirements.txt ./
|
| 60 |
-
# RUN uv venv && uv pip install --upgrade pip && \
|
| 61 |
-
# uv pip install -r requirements.txt
|
| 62 |
|
|
|
|
| 63 |
|
| 64 |
-
#
|
| 65 |
-
|
| 66 |
-
COPY --chown=appuser:appgroup uv.lock ./
|
| 67 |
|
|
|
|
| 68 |
RUN uv sync
|
| 69 |
|
| 70 |
EXPOSE 8000
|
| 71 |
|
| 72 |
-
|
|
|
|
| 1 |
+
FROM python:3.13-slim
|
| 2 |
|
| 3 |
ENV PYTHONDONTWRITEBYTECODE=1
|
| 4 |
ENV PYTHONUNBUFFERED=1
|
|
|
|
| 14 |
tmux \
|
| 15 |
unzip \
|
| 16 |
build-essential \
|
| 17 |
+
python3-dev && \
|
| 18 |
+
rm -rf /var/lib/apt/lists/*
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
ARG USER_ID=1000
|
| 21 |
ARG GROUP_ID=1000
|
| 22 |
|
|
|
|
| 24 |
RUN addgroup --gid $GROUP_ID appgroup && \
|
| 25 |
adduser --uid $USER_ID --gid $GROUP_ID --shell /bin/bash --disabled-password --gecos "" appuser
|
| 26 |
|
| 27 |
+
# Install sudo and grant privileges
|
| 28 |
+
RUN apt-get update && apt-get install -y sudo && \
|
| 29 |
+
echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
| 30 |
|
| 31 |
+
# Create /app directory with proper ownership
|
| 32 |
+
RUN mkdir -p /app && chown -R appuser:appgroup /app
|
| 33 |
|
| 34 |
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
| 35 |
|
|
|
|
| 39 |
SHELL ["/usr/bin/fish", "-c"]
|
| 40 |
|
| 41 |
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
+
COPY --chown=appuser:appgroup . /app
|
| 44 |
|
| 45 |
+
# 1) Create a dedicated venv in .venv
|
| 46 |
+
RUN uv venv .venv
|
|
|
|
| 47 |
|
| 48 |
+
# 2) Install / sync packages into that .venv
|
| 49 |
RUN uv sync
|
| 50 |
|
| 51 |
EXPOSE 8000
|
| 52 |
|
| 53 |
+
CMD ["uv", "run", "python", "entrypoints/app.py"]
|
container_setup/attach.sh
CHANGED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
container_setup/build.sh
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
source container_setup/credentials
|
| 4 |
|
| 5 |
-
docker build -f container_setup/Dockerfile -t ${DOCKER_NAME} . \
|
| 6 |
--build-arg DOCKER_NAME=${DOCKER_NAME} \
|
| 7 |
--build-arg USER_ID=${DOCKER_USER_ID} \
|
| 8 |
-
--build-arg GROUP_ID=${DOCKER_GROUP_ID}
|
|
|
|
| 2 |
|
| 3 |
source container_setup/credentials
|
| 4 |
|
| 5 |
+
docker build --no-cache -f container_setup/Dockerfile -t ${DOCKER_NAME} . \
|
| 6 |
--build-arg DOCKER_NAME=${DOCKER_NAME} \
|
| 7 |
--build-arg USER_ID=${DOCKER_USER_ID} \
|
| 8 |
+
--build-arg GROUP_ID=${DOCKER_GROUP_ID}
|
container_setup/credentials
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
#! /bin/bash
|
| 2 |
|
| 3 |
-
DOCKER_NAME="
|
| 4 |
-
CONTAINER_NAME=$USER"-
|
| 5 |
-
SRC="
|
| 6 |
DOCKER_USER_ID=$(id -u) # to get these values type "id" in shell termilal
|
| 7 |
DOCKER_GROUP_ID=$(id -g)
|
| 8 |
CONTAINER_PORT=8001 # used in launch_container file
|
|
|
|
| 1 |
#! /bin/bash
|
| 2 |
|
| 3 |
+
DOCKER_NAME="arxiv-papers-classification"
|
| 4 |
+
CONTAINER_NAME=$USER"-arxiv-papers-classification"
|
| 5 |
+
SRC="." # folder to propulse in docker container
|
| 6 |
DOCKER_USER_ID=$(id -u) # to get these values type "id" in shell termilal
|
| 7 |
DOCKER_GROUP_ID=$(id -g)
|
| 8 |
CONTAINER_PORT=8001 # used in launch_container file
|
container_setup/launch_container.sh
CHANGED
|
@@ -4,15 +4,14 @@ source container_setup/credentials
|
|
| 4 |
docker run \
|
| 5 |
-d \
|
| 6 |
--shm-size=8g \
|
| 7 |
-
--memory=
|
| 8 |
-
--cpuset-cpus=
|
| 9 |
--user ${DOCKER_USER_ID}:${DOCKER_GROUP_ID} \
|
| 10 |
--name ${CONTAINER_NAME} \
|
| 11 |
--rm \
|
| 12 |
-it \
|
| 13 |
--init \
|
| 14 |
-
|
| 15 |
-
-v /home/${USER}/${SRC}:/app \
|
| 16 |
-p ${INNER_PORT}:${CONTAINER_PORT} \
|
| 17 |
${DOCKER_NAME} \
|
| 18 |
bash
|
|
|
|
| 4 |
docker run \
|
| 5 |
-d \
|
| 6 |
--shm-size=8g \
|
| 7 |
+
--memory=8g \
|
| 8 |
+
--cpuset-cpus=0-7 \
|
| 9 |
--user ${DOCKER_USER_ID}:${DOCKER_GROUP_ID} \
|
| 10 |
--name ${CONTAINER_NAME} \
|
| 11 |
--rm \
|
| 12 |
-it \
|
| 13 |
--init \
|
| 14 |
+
-v ${SRC}:/app \
|
|
|
|
| 15 |
-p ${INNER_PORT}:${CONTAINER_PORT} \
|
| 16 |
${DOCKER_NAME} \
|
| 17 |
bash
|
entrypoints/app.py
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# import streamlit as st
|
| 2 |
+
|
| 3 |
+
# st.title("This is a title")
|
| 4 |
+
# st.header("This is a header")
|
| 5 |
+
# st.subheader("This is a subheader")
|
| 6 |
+
# st.text("This is a text")
|
| 7 |
+
# st.markdown("# This is a markdown header 1")
|
| 8 |
+
# st.markdown("## This is a markdown header 2")
|
| 9 |
+
# st.markdown("### This is a markdown header 3")
|
| 10 |
+
# st.markdown("This is a markdown: *bold* **italic** `inline code` ~strikethrough~")
|
| 11 |
+
# st.markdown("""This is a code block with syntax highlighting
|
| 12 |
+
# ```python
|
| 13 |
+
# print("Hello world!")
|
| 14 |
+
# ```
|
| 15 |
+
# """)
|
| 16 |
+
# st.html(
|
| 17 |
+
# "image from url example with html: "
|
| 18 |
+
# "<img src='https://www.wallpaperflare.com/static/450/825/286/kitten-cute-animals-grass-5k-wallpaper.jpg' width=400px>",
|
| 19 |
+
# )
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
# st.write("Text with write")
|
| 23 |
+
# st.write(range(10))
|
| 24 |
+
|
| 25 |
+
# st.success("Success")
|
| 26 |
+
# st.info("Information")
|
| 27 |
+
# st.warning("Warning")
|
| 28 |
+
# st.error("Error")
|
| 29 |
+
# exp = ZeroDivisionError("Trying to divide by Zero")
|
| 30 |
+
# st.exception(exp)
|
| 31 |
+
|
| 32 |
+
# # инициализируем переменные
|
| 33 |
+
# st.session_state.key1 = "value1" # Attribute API
|
| 34 |
+
# st.session_state["key2"] = "value2" # Dictionary like API
|
| 35 |
+
|
| 36 |
+
# # посмотреть что в st.session_state
|
| 37 |
+
# st.write(st.session_state)
|
| 38 |
+
|
| 39 |
+
# # magic
|
| 40 |
+
# st.session_state
|
| 41 |
+
|
| 42 |
+
# # ошибка если неправильный ключ
|
| 43 |
+
# # st.write(st.session_state["missing_key"])
|
| 44 |
+
|
| 45 |
+
# import streamlit as st
|
| 46 |
+
# from transformers import pipeline
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
# @st.cache_resource # кэширование
|
| 50 |
+
# def load_model():
|
| 51 |
+
# return pipeline("sentiment-analysis") # скачивание модели
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
# model = load_model()
|
| 55 |
+
|
| 56 |
+
# query = st.text_input("Your query", value="I love Streamlit! 🎈")
|
| 57 |
+
# if query:
|
| 58 |
+
# result = model(query)[0] # классифицируем
|
| 59 |
+
# st.write(query)
|
| 60 |
+
# st.write(result)
|
entrypoints/pipeline.py
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import comet_ml # noqa: F401
|
| 2 |
+
import hydra
|
| 3 |
+
from transformers import AutoTokenizer, Trainer, TrainingArguments
|
| 4 |
+
from loguru import logger
|
| 5 |
+
from src.pipeline.arxiv_dataset import (
|
| 6 |
+
get_label_mappings,
|
| 7 |
+
load_arxiv_dataset,
|
| 8 |
+
prepare_arxiv_dataset,
|
| 9 |
+
)
|
| 10 |
+
from config.pipeline_config import PipelineConfig
|
| 11 |
+
from src.pipeline.metrics import compute_metrics
|
| 12 |
+
from src.pipeline.model_setup import load_model
|
| 13 |
+
from src.pipeline.env_setup import setup_env
|
| 14 |
+
from src.pipeline.logging_setup import setup_logging
|
| 15 |
+
from transformers.integrations import CometCallback
|
| 16 |
+
from transformers import DataCollatorWithPadding
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
@hydra.main(config_name="pipeline_config", version_base="1.2")
|
| 20 |
+
def main(cfg: PipelineConfig):
|
| 21 |
+
logger.info("Setting up environment variables")
|
| 22 |
+
setup_env()
|
| 23 |
+
logger.info("Setting up logging")
|
| 24 |
+
experiment = setup_logging()
|
| 25 |
+
|
| 26 |
+
tokenizer = AutoTokenizer.from_pretrained(cfg.model.model_name)
|
| 27 |
+
logger.info("Loading dataset")
|
| 28 |
+
dataset = load_arxiv_dataset()
|
| 29 |
+
label2id, id2label = get_label_mappings(dataset)
|
| 30 |
+
|
| 31 |
+
train_dataset, val_dataset, test_dataset = prepare_arxiv_dataset(
|
| 32 |
+
tokenizer=tokenizer,
|
| 33 |
+
cfg=cfg.dataset,
|
| 34 |
+
dataset=dataset,
|
| 35 |
+
label2id=label2id,
|
| 36 |
+
)
|
| 37 |
+
logger.info("Loading model")
|
| 38 |
+
model = load_model(cfg.model, label2id, id2label)
|
| 39 |
+
logger.info("Training model")
|
| 40 |
+
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
|
| 41 |
+
trainer = Trainer(
|
| 42 |
+
model=model,
|
| 43 |
+
args=TrainingArguments(**cfg.training), # type: ignore
|
| 44 |
+
train_dataset=train_dataset,
|
| 45 |
+
eval_dataset=val_dataset,
|
| 46 |
+
compute_metrics=compute_metrics,
|
| 47 |
+
data_collator=data_collator,
|
| 48 |
+
callbacks=[CometCallback()],
|
| 49 |
+
)
|
| 50 |
+
|
| 51 |
+
trainer.train()
|
| 52 |
+
logger.info("Evaluating model")
|
| 53 |
+
results = trainer.evaluate(test_dataset) # type: ignore
|
| 54 |
+
logger.info(results)
|
| 55 |
+
experiment.log_metrics(results)
|
| 56 |
+
experiment.end()
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
if __name__ == "__main__":
|
| 60 |
+
main()
|
main.py
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
def main():
|
| 2 |
-
print("Hello from opinionanalyzer!")
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
if __name__ == "__main__":
|
| 6 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
notebooks/ML2_2025_nlp_ops1.ipynb
DELETED
|
@@ -1,167 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"cells": [
|
| 3 |
-
{
|
| 4 |
-
"cell_type": "markdown",
|
| 5 |
-
"metadata": {},
|
| 6 |
-
"source": [
|
| 7 |
-
"# __Девопсная домашка по трансформерам__\n",
|
| 8 |
-
"\n",
|
| 9 |
-
"## __Описание__\n",
|
| 10 |
-
"\n",
|
| 11 |
-
"\n",
|
| 12 |
-
"\n",
|
| 13 |
-
"Ваш главный квест на эту домашку - сделать свой простой сервис на трансформерах. Вот прям целый сервис: начиная с данных и заканчивая графическим интерфейсом где-то в интернете. Ваш сервис может решать либо одну из предложенных ниже задач, либо любую другую (что-то более дорогое лично вам).\n",
|
| 14 |
-
"\n",
|
| 15 |
-
"__Стандартная задача: классификатор статей.__ Нужно построить сервис который принимает название статьи и её abstract, и выдаёт наиболее вероятную тематику статьи: скажем, физика, биология или computer science. В интерфейсе должно быть можно ввести отдельно abstract, отдельно название -- и увидеть топ-95%* тематик, отсортированных по убыванию вероятности. Если abstract не ввели, нужно классифицировать статью только по названию. Ниже вас ждут инструкции и данные именно для этой задачи.\n",
|
| 16 |
-
"\n",
|
| 17 |
-
"<details><summary><u> Что значит Топ-95%?</u></summary>\n",
|
| 18 |
-
" Нужно выдавать темы по убыванию вероятности, пока их суммарная вероятность не превысит 95%. В зависимости от предсказанной вероятности, это может быть одна или более тем. Например, если модель предсказала вероятности [4%, 20%, 60%, 2%, 14%], нужно вывести 3 топ-3 класса. Если один из классов имеет вероятность 96%, достаточно вывести один этот класс.\n",
|
| 19 |
-
"</details>\n",
|
| 20 |
-
"\n",
|
| 21 |
-
"Альтернативно, вы можете отважиться сделать что-то своё, на данных из интернета или своих собственных. В вашей задаче обязательно должно быть _оправданное_ использование трансформеров. Использовать ML чтобы переводить часовые пояса - плохой план.\n",
|
| 22 |
-
"\n",
|
| 23 |
-
"Achtung: трансформеры круты, но не всемогущи. Далеко не любую задачу можно решить ощутимо лучше рандома. Для калибровки, вот несколько примеров решаемых задач (всё кликабельно):\n",
|
| 24 |
-
"\n",
|
| 25 |
-
"\n",
|
| 26 |
-
"<details><summary> - <b>[medium]</b> <u>Сгенерировать youtube-комментарии по _ссылке_ на видео</u></summary>\n",
|
| 27 |
-
" Всё просто, юзер постит ссылку на видео - вы его комментируете. Можно заранее обусловиться что видео только на английском или на русском. Нужно сочинить _несколько_ комментариев. Kudos если вместе с основным комментарием вы порождаете юзернеймы и-или ответы на него.\n",
|
| 28 |
-
" \n",
|
| 29 |
-
" Датасет для файнтюна можно [взять с kaggle](https://www.kaggle.com/tanmay111/youtube-comments-sentiment-analysis/data?select=UScomments.csv) или [собрать самостоятельно](https://towardsdatascience.com/how-to-build-your-own-dataset-of-youtube-comments-39a1e57aade).\n",
|
| 30 |
-
" \n",
|
| 31 |
-
" В качестве основной модели можно использовать [GPT-2 large](https://huggingface.co/gpt2-large). Вот как её файнтюнить: https://tinyurl.com/gpt2-finetune-colab . Если хотите больше - можно взять что-то из творчества https://huggingface.co/EleutherAI . Например, вот [тут](https://tinyurl.com/gpt-j-8bit) есть пример как файнтюнить GPT-J-6B (в 8 раз больше gpt2-large). Однако, этим стоит заниматься уже после того, как у вас заработал базовый сценарий с GPT2-large или даже base.\n",
|
| 32 |
-
" \n",
|
| 33 |
-
" В итоговом сервисе ��ожно дать пользователю вариировать параметры генерации: температура или top-p, если сэмплинг; beam size и length penalty, если beam search; сколько комментариев сгенерировать, etc. Отдельный респект если ваш код будет выводить комментарий по одному слову, прямо в процессе генерёжки - чтобы пользователь не ждал пока вы настругаете абзац целиком.\n",
|
| 34 |
-
"</details>\n",
|
| 35 |
-
"\n",
|
| 36 |
-
"<details><summary> - <b>[medium]</b> <u>Предсказать зарплату по профилю (симулятор Дудя).</u></summary>\n",
|
| 37 |
-
" Note: <details> <summary>Причём тут Дудь?</summary> <img src=https://www.meme-arsenal.com/memes/6dd85f126bbab4f9774ced71ffadbcb3.jpg> </details>\n",
|
| 38 |
-
" \n",
|
| 39 |
-
" Главная сложность задачи - достать хорошие данные. Если хороших данных не случилось - можно и трешовые :) Задание всё-таки про технологии а не про продукт. Для начала можно взять подмножество фичей [отсюда](https://www.kaggle.com/c/job-salary-prediction/data), которые вы можете восстановить из профиля linkedin - название профессии и компании. Название компании лучше заменить на фичи из открытых источников: сфера деятельности, размер, етц.\n",
|
| 40 |
-
" \n",
|
| 41 |
-
" А дальше файнтюним на этом BERT / T5 и радуемся. Ну или хотя бы смеёмся.\n",
|
| 42 |
-
"</details>\n",
|
| 43 |
-
"\n",
|
| 44 |
-
"\n",
|
| 45 |
-
"<details><summary> - <b>[hard]</b> <u>Мнения с географической окраской.</u></summary>\n",
|
| 46 |
-
" \n",
|
| 47 |
-
" Сервис который принимает на вход тему (хэштег или ключевую фразу) и рисует карту мира, где в каждом регионе показано, с какой эмоциональной окраской о ней высказываются в социальных сетях. В качестве социальной сети можно взять VK/twitter, в случая VK ожидается детализация не по странам, а по городам стран бывшего СССР.\n",
|
| 48 |
-
" \n",
|
| 49 |
-
" В минимальном варианте достаточно определять тональность твита в режиме \"позитивно-негативно\", зафайнтюнив условный BERT/T5 на одном из десятков {vk/twitter} sentiment classification датасетах. Географическую привязку можно получить из профиля пользователя. А дальше осталось собрать данные по странам и регионам.\n",
|
| 50 |
-
"\n",
|
| 51 |
-
"</details>\n",
|
| 52 |
-
"\n",
|
| 53 |
-
"\n",
|
| 54 |
-
"<details><summary> - <b>[very hard]</b> <u>Найти статью википедии по фото предмета статьи</u></summary>\n",
|
| 55 |
-
"\n",
|
| 56 |
-
" Чтобы можно было сфотать какую-нибудь неведомую чешуйню на телефон и получить сумму человеческих знаний о ней в форме вики-статьи.\n",
|
| 57 |
-
" \n",
|
| 58 |
-
" В качестве функции потерь можно использовать contrastive loss. Этот лосс неплохо описан в статье [CLIP](https://arxiv.org/abs/2103.00020). Вместо обучения с нуля предлагается взять, собственно, CLIP (text transformer + image transformer) отсюда: https://huggingface.co/docs/transformers/model_doc/clip. Модель будет сопоставлять каждой статьи и \n",
|
| 59 |
-
" \n",
|
| 60 |
-
" Данные для этого квеста можно собрать через API википедии: вики-статьи о предметах обычно содержит фото этого объекта и, собственно, текст статьи. Советуем собрать как минимум 10^4 пар картинка-статья. Картинки советуем дополнительно аугментировать как минимум стандартными картиночными аугами, как максимум - поиском похожих картинок в интернете / imagenet-е по тому же CLIP image encoder-у, но с исходными весами.\n",
|
| 61 |
-
" \n",
|
| 62 |
-
" На время отладки интерфейса рекомендуем ограничить��я небольшим списком статьей: условно, кошечки, собачки, птички, гаечные ключи, машины. Как станет понятно что оно работает \"на кошках\", можно расширить этот список до \"всех статей таких-то категорий\". Эмбединги статей лучше предпосчитать в файл. Если долго их перебирать - можно (но необязательно) воспользоваться быстрым поиском соседей, e.g. [faiss](https://github.com/facebookresearch/faiss) HNSW.\n",
|
| 63 |
-
"</details>\n",
|
| 64 |
-
"\n",
|
| 65 |
-
"\n",
|
| 66 |
-
"## __Как научить классификатор статей?__\n",
|
| 67 |
-
"\n",
|
| 68 |
-
"Данные для классификации статей можно скачать, например, [отсюда](https://www.kaggle.com/neelshah18/arxivdataset/). В этих данных есть заголовок и abstract статьи, а ещё поле __\"tag\"__: тематика статьи [по таксономии arxiv.org](https://arxiv.org/category_taxonomy). Вы можете расширить выборку, добавив в неё статьи за 2019-н.в. годы. Для этого можно [использовать arxiv API](https://github.com/lukasschwab/arxiv.py), самостоятельно распарсить arxiv с помощью [beautifulsoup](https://pypi.org/project/beautifulsoup4/), или поискать другие датасеты на kaggle, huggingface, etc.\n",
|
| 69 |
-
"\n",
|
| 70 |
-
"Когда данные собраны (и аккуратно нарезаны на train/test), можно что-нибудь и обучить. Мы советуем использовать для этого библиотеку `transformers`. Советуем, но не заставляем: если хочется, можно взять [fairseq roberta](https://github.com/pytorch/fairseq/blob/main/examples/roberta), [google t5](https://github.com/google-research/text-to-text-transfer-transformer) или даже написать всё с нуля.\n",
|
| 71 |
-
"\n",
|
| 72 |
-
"Мы разбирали transformers на [семинаре](https://lk.yandexdataschool.ru/courses/2025-spring/7.1332-machine-learning-2/classes/13138/), за любой дополнительной информацией - смотрите [документации HF](https://huggingface.co/docs).\n",
|
| 73 |
-
"\n",
|
| 74 |
-
"Начать лучше с простой модели, такой как [`distilbert-base-cased`](https://huggingface.co/distilbert-base-cased). Когда вы будете понимать, какие значения accuracy ожидать от базовой модели, можно поискать что-то получше. Два очевидных направления улучшения: (1) сильнее модель T5 или deberta v3, или (2) близкие данные, например взять модель которую предобучили на том же arxiv. И то и другое удобно [искать здесь](https://huggingface.co/models).\n",
|
| 75 |
-
"\n",
|
| 76 |
-
"## __Научили, и что теперь?__\n",
|
| 77 |
-
"\n",
|
| 78 |
-
"А теперь нужно сделать так, чтобы ваша обученная модель отвечала на запросы в интернете. Как и на прошлом этапе, вы можете сделать это кучей разных способов: от простого [streamlit](https://streamlit.io/) / [gradio](https://gradio.app/), минуя [TorchServe](https://pytorch.org/serve/) с [Triton/TensorRT](https://developer.nvidia.com/nvidia-triton-inference-server), и заканчивая экспортом модели в javascript с помощью [TensorFlow.js](https://www.tensorflow.org/js/tutorials) / [ONNX.js](https://github.com/elliotwaite/pytorch-to-javascript-with-onnx-js).\n",
|
| 79 |
-
"\n",
|
| 80 |
-
"На [семинаре](https://lk.yandexdataschool.ru/courses/2025-spring/7.1332-machine-learning-2/classes/13138/) мы разбирали основные вещи про то как работает streamlit и как сделать простое приложение с его помощью.\n",
|
| 81 |
-
"\n",
|
| 82 |
-
"Общая идея streamlit: вы [описываете](https://docs.streamlit.io/library/get-started/create-an-app) внешний вид приложения на питоне с помощью примитивов (кнопки, поля, любой html) -- а потом этот код выполняется на сервере и обслуживает каждого пользователя в отдельном процессе.\n",
|
| 83 |
-
"\n",
|
| 84 |
-
"__Для отладки__ можно запустить приложение локально, открыв консоль рядом с app.py:\n",
|
| 85 |
-
"* `pip install streamlit`\n",
|
| 86 |
-
"* `streamlit run app.py --server.port 8080`\n",
|
| 87 |
-
"* открыть в браузере localhost:8080, если он не открылся автоматически\n",
|
| 88 |
-
"\n",
|
| 89 |
-
"\n",
|
| 90 |
-
"## __Deployment time!__\n",
|
| 91 |
-
"\n",
|
| 92 |
-
"В этот раз вам нужно не просто написать код, __но и поднять ваше приложение с доступом из интернета__. И да, вы угадали, это можно сделать несколькими способами: [HuggingFace spaces](https://huggingface.co/spaces) (данный способ разбирали на [семинаре](https://lk.yandexdataschool.ru/courses/2025-spring/7.1332-machine-learning-2/classes/13138/)), [Streamlit Cloud](https://streamlit.io/cloud), а ещё вы можете купить или арендовать свой собственный сервер и захоститься там.\n",
|
| 93 |
-
"\n",
|
| 94 |
-
"Проще всего захостить на HF spaces, для этого вам нужно [зарегистрироваться](https://huggingface.co/join) и найти [меню создания нового приложения](https://huggingface.co/new-space). Название и лицензию можно выбрать на своё усмотрение, главное чтобы Space SDK был Streamlit, а доступ - public.\n",
|
| 95 |
-
"\n",
|
| 96 |
-
"Как создали - можно редактировать ваше приложение прямо на сайте, для этого откройте приложение и перейдите в Files and versions, и там в правом углу добавьте нужные файлы.\n",
|
| 97 |
-
"\n",
|
| 98 |
-
"На минималках вам потребуется 2 файла:\n",
|
| 99 |
-
"- `app.py`, о котором мы говорили выше\n",
|
| 100 |
-
"- `requirements.txt`, где вы укажете нужные вам библиотеки\n",
|
| 101 |
-
"\n",
|
| 102 |
-
"Вы можете разместить там же веса вашей обученной модели, любые необходимые данные, дополнительные файлы, ...\n",
|
| 103 |
-
"\n",
|
| 104 |
-
"После каждого изменения файлов, ваше приложение соберётся (обычно 1-5 минут) и будет доступно уже во вкладке App. Ну или не соберётся и покажет вам, где оно сломалось. И вуаля, теперь у вас есть ссылка, которую можно показать ~друзьям~ ассистентам курса и кому угодно в интернете.\n",
|
| 105 |
-
"\n",
|
| 106 |
-
"__Удобная работа с кодом.__ Пока у вас 2 файла, их легко редактивровать прямо в интерфейсе HF spaces. Если же у вас дюжина файлов, вам может быть удобнее редактировать их в любимом vscode/pycharm/.../emacs. Чтобы это не вызывало мучений, можно пользоваться HF spaces как git репозиторием ([подробности тут](https://huggingface.co/docs/hub/spaces#manage-app-with-github-actions)).\n",
|
| 107 |
-
"\n",
|
| 108 |
-
"## __Что нужно сдать__\n",
|
| 109 |
-
"\n",
|
| 110 |
-
"Вы сдаёте проект, который будет проверяться вручную, то что ожидается от каждого проекта:\n",
|
| 111 |
-
"- Текстовое сопровождение вашего конкретного проекта в любом удобно читаемом формате (pdf, html, текст в lk, ...) - что за задачу вы решали, где/как брали данные, какие использовали модели, какие проводили эксперименты, ...\n",
|
| 112 |
-
"- Ссылка на веб интерфейс, где можно протестировать демо вашего проекта - обязательно проверяйте что работает не только у вас (с другого устройства и из под incognito режима)\n",
|
| 113 |
-
"- Код обучения вашей модели (желательно ipynb с заполненными ячейками и не стёртыми выходами, переведённый в pdf / html), но если вы обучали не в ноутбуке, то сдавайте код в виде файла / архива файлов / git ссылки с readme.md описанием того как именно проходило обучение с помощью этого кода.\n",
|
| 114 |
-
"\n",
|
| 115 |
-
"## __Оценка__\n",
|
| 116 |
-
"\n",
|
| 117 |
-
"Мы будем оценивать проект целиком, включая идею и реализацию. Максимум за проект можно получить 10 баллов, но мы оставляем ещё до 5 баллов, котор��е можем выдать как бонусные за особенно интересные и качественно реализованные проекты.\n",
|
| 118 |
-
"\n",
|
| 119 |
-
"### __Тонкие места, за которые могут быть снижения баллов:__\n",
|
| 120 |
-
"\n",
|
| 121 |
-
"__1. Скорость работы.__\n",
|
| 122 |
-
"\n",
|
| 123 |
-
"По умолчанию, streamlit будет выполняет весь ваш код на каждое действие пользователя. То есть всякий раз, когда пользователь меняет что-то в тексте, оно будет заново загружать модель. Чтобы исправить это безобразие, вы можете закэшировать подготовленную модель в `@st.cache`. Подробности в [семинаре](https://lk.yandexdataschool.ru/courses/2025-spring/7.1332-machine-learning-2/classes/13138/), а также [читайте тут](https://docs.streamlit.io/library/advanced-features/caching).\n",
|
| 124 |
-
"\n",
|
| 125 |
-
"__Как будет оцениваться:__\n",
|
| 126 |
-
"\n",
|
| 127 |
-
"Вы не обязаны пользоваться кэшированием, но ваше приложение не должно неоправдано тормозить дольше, чем на 3 секунды. \"Оправданые\" тормоза это те, которые вы явно оправдали текстом в ЛМС :)\n",
|
| 128 |
-
"\n",
|
| 129 |
-
"-----\n",
|
| 130 |
-
"\n",
|
| 131 |
-
"__2. Понятный фронтенд.__\n",
|
| 132 |
-
"\n",
|
| 133 |
-
"Наколеночный графический интерфейс с семинара - пример того, как скорее не надо делать интерфейс приложения. Как надо - сложный вопрос, причём настолько сложный, что есть даже [Школа Разработки Интерфейсов](https://academy.yandex.ru/schools/frontend). Но для начала:\n",
|
| 134 |
-
"\n",
|
| 135 |
-
"- Выводить нужно человекочитаемый текст, а не просто JSON с индексами и метаданными.\n",
|
| 136 |
-
"- Пользователю должно быть понятно, куда и какие данные вводить. Пустые текстовые поля в вакууме - плохой тон.\n",
|
| 137 |
-
"- Сервис не должен падать с не_отловленными ошибками. Даже если пользователь введёт неправильные/пустые данные, нужно это обработать и написать, где произошла ошибка.\n",
|
| 138 |
-
"\n",
|
| 139 |
-
"__Как будет оцениваться:__\n",
|
| 140 |
-
"\n",
|
| 141 |
-
"Для полного балла достаточно соблюсти эти три правила и специально не стрелять себе в ногу.\n",
|
| 142 |
-
"\n",
|
| 143 |
-
"-----\n",
|
| 144 |
-
"\n",
|
| 145 |
-
"__3. Код обучения и инференса.__\n",
|
| 146 |
-
"\n",
|
| 147 |
-
"Сдавая проект мы будем также получать от вас код проекта (как обучения ваших моделей, так и код веб интерфейса).\n",
|
| 148 |
-
"\n",
|
| 149 |
-
"__Как будет оцениваться:__\n",
|
| 150 |
-
"\n",
|
| 151 |
-
"Код не будет отдельно проверяться как часть задания, поэтому пишите как хотите, однако - в спорных ситуациях мы оставляем за собой право проверить ваш код, за чем могут последовать потенциальные снижения баллов при любых нарушениях.\n"
|
| 152 |
-
]
|
| 153 |
-
},
|
| 154 |
-
{
|
| 155 |
-
"cell_type": "markdown",
|
| 156 |
-
"metadata": {},
|
| 157 |
-
"source": []
|
| 158 |
-
}
|
| 159 |
-
],
|
| 160 |
-
"metadata": {
|
| 161 |
-
"language_info": {
|
| 162 |
-
"name": "python"
|
| 163 |
-
}
|
| 164 |
-
},
|
| 165 |
-
"nbformat": 4,
|
| 166 |
-
"nbformat_minor": 2
|
| 167 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pyproject.toml
CHANGED
|
@@ -1,15 +1,22 @@
|
|
| 1 |
[project]
|
| 2 |
-
name = "
|
| 3 |
version = "0.1.0"
|
| 4 |
description = "Add your description here"
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.13"
|
| 7 |
dependencies = [
|
| 8 |
"accelerate>=1.6.0",
|
|
|
|
| 9 |
"datasets>=3.5.0",
|
| 10 |
"evaluate>=0.4.3",
|
|
|
|
|
|
|
| 11 |
"ipykernel>=6.29.5",
|
|
|
|
|
|
|
|
|
|
| 12 |
"scikit-learn>=1.6.1",
|
|
|
|
| 13 |
"torch>=2.6.0",
|
| 14 |
"transformers>=4.50.3",
|
| 15 |
]
|
|
|
|
| 1 |
[project]
|
| 2 |
+
name = "arxiv-papers-classification"
|
| 3 |
version = "0.1.0"
|
| 4 |
description = "Add your description here"
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.13"
|
| 7 |
dependencies = [
|
| 8 |
"accelerate>=1.6.0",
|
| 9 |
+
"comet-ml>=3.49.7",
|
| 10 |
"datasets>=3.5.0",
|
| 11 |
"evaluate>=0.4.3",
|
| 12 |
+
"huggingface-hub[hf-xet]>=0.30.1",
|
| 13 |
+
"hydra-core>=1.3.2",
|
| 14 |
"ipykernel>=6.29.5",
|
| 15 |
+
"ipywidgets>=8.1.5",
|
| 16 |
+
"loguru>=0.7.3",
|
| 17 |
+
"python-dotenv>=1.1.0",
|
| 18 |
"scikit-learn>=1.6.1",
|
| 19 |
+
"streamlit>=1.44.1",
|
| 20 |
"torch>=2.6.0",
|
| 21 |
"transformers>=4.50.3",
|
| 22 |
]
|
scripts/launch_app.sh
ADDED
|
File without changes
|
scripts/pipeline.sh
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
export PYTHONPATH='.'
|
| 4 |
+
|
| 5 |
+
source .venv/bin/activate
|
| 6 |
+
|
| 7 |
+
python entrypoints/pipeline.py
|
src/pipeline/arxiv_dataset.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import typing as tp
|
| 2 |
+
from collections.abc import Mapping
|
| 3 |
+
|
| 4 |
+
import pandas as pd
|
| 5 |
+
from datasets import Dataset
|
| 6 |
+
from transformers import PreTrainedTokenizerBase
|
| 7 |
+
from config.pipeline_config import DatasetConfig
|
| 8 |
+
from loguru import logger
|
| 9 |
+
import ast
|
| 10 |
+
import string
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
class ArxivTag(tp.TypedDict):
|
| 14 |
+
term: str
|
| 15 |
+
scheme: str
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class ArxivPaper(tp.TypedDict):
|
| 19 |
+
summary: str
|
| 20 |
+
tag: str
|
| 21 |
+
title: str
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def load_arxiv_dataset() -> Dataset:
|
| 25 |
+
df = pd.read_json("data/arxivData.json").head(100)
|
| 26 |
+
dataset = Dataset.from_pandas(df[["summary", "tag", "title"]])
|
| 27 |
+
return dataset
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def multihot_encode_tags(
|
| 31 |
+
tags: list[str], label_mapping: Mapping[str, int]
|
| 32 |
+
) -> list[float]:
|
| 33 |
+
num_labels = len(label_mapping)
|
| 34 |
+
labels = [0.0] * num_labels
|
| 35 |
+
|
| 36 |
+
for tag in tags:
|
| 37 |
+
if tag in label_mapping:
|
| 38 |
+
labels[label_mapping[tag]] = 1.0
|
| 39 |
+
|
| 40 |
+
return labels
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def generate_preprocessing_function(
|
| 44 |
+
tokenizer: PreTrainedTokenizerBase,
|
| 45 |
+
label_mapping: Mapping[str, int],
|
| 46 |
+
):
|
| 47 |
+
def preprocess_arxiv_dataset(row: ArxivPaper):
|
| 48 |
+
text = row["title"] + " " + row["summary"]
|
| 49 |
+
|
| 50 |
+
tokenized_text = tokenizer(
|
| 51 |
+
text,
|
| 52 |
+
truncation=True,
|
| 53 |
+
padding="max_length",
|
| 54 |
+
)
|
| 55 |
+
|
| 56 |
+
tags_list: list[ArxivTag] = ast.literal_eval(row["tag"])
|
| 57 |
+
|
| 58 |
+
tags = [tag["term"] for tag in tags_list]
|
| 59 |
+
tokenized_text["labels"] = multihot_encode_tags(tags, label_mapping)
|
| 60 |
+
|
| 61 |
+
return tokenized_text
|
| 62 |
+
|
| 63 |
+
return preprocess_arxiv_dataset
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
def get_label_mappings(dataset: Dataset) -> tuple[dict[str, int], dict[int, str]]:
|
| 67 |
+
"""
|
| 68 |
+
Create label mappings from dataset
|
| 69 |
+
|
| 70 |
+
Args:
|
| 71 |
+
dataset: Dataset containing tag information
|
| 72 |
+
|
| 73 |
+
Returns:
|
| 74 |
+
tuple containing:
|
| 75 |
+
- label2id: Mapping from label names to indices
|
| 76 |
+
- id2label: Mapping from indices to label names
|
| 77 |
+
"""
|
| 78 |
+
all_tags = set()
|
| 79 |
+
for idx in range(len(dataset)):
|
| 80 |
+
example = dataset[idx]
|
| 81 |
+
tags_list: list[ArxivTag] = ast.literal_eval(example["tag"])
|
| 82 |
+
for tag in tags_list:
|
| 83 |
+
if not any(digit in tag["term"] for digit in string.digits):
|
| 84 |
+
all_tags.add(tag["term"])
|
| 85 |
+
|
| 86 |
+
logger.info(f"Found {len(all_tags)} unique tags")
|
| 87 |
+
|
| 88 |
+
label2id = {tag: idx for idx, tag in enumerate(sorted(all_tags))}
|
| 89 |
+
id2label = {idx: tag for tag, idx in label2id.items()}
|
| 90 |
+
|
| 91 |
+
return label2id, id2label
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def train_val_test_split(
|
| 95 |
+
dataset: Dataset, cfg: DatasetConfig
|
| 96 |
+
) -> tuple[Dataset, Dataset, Dataset]:
|
| 97 |
+
"""
|
| 98 |
+
Split dataset into train, validation and test sets
|
| 99 |
+
|
| 100 |
+
Args:
|
| 101 |
+
dataset: Dataset to split
|
| 102 |
+
cfg: Dataset configuration containing split parameters
|
| 103 |
+
|
| 104 |
+
Returns:
|
| 105 |
+
tuple containing train, validation and test datasets
|
| 106 |
+
"""
|
| 107 |
+
shuffled_dataset = dataset.shuffle(seed=cfg.seed)
|
| 108 |
+
|
| 109 |
+
train_temp = shuffled_dataset.train_test_split(
|
| 110 |
+
test_size=cfg.val_size + cfg.test_size
|
| 111 |
+
)
|
| 112 |
+
|
| 113 |
+
remaining_test_ratio = cfg.test_size / (cfg.val_size + cfg.test_size)
|
| 114 |
+
val_test = train_temp["test"].train_test_split(test_size=remaining_test_ratio)
|
| 115 |
+
|
| 116 |
+
train_dataset = train_temp["train"]
|
| 117 |
+
val_dataset = val_test["train"]
|
| 118 |
+
test_dataset = val_test["test"]
|
| 119 |
+
|
| 120 |
+
logger.info(
|
| 121 |
+
f"Split dataset: train={len(train_dataset)}, val={len(val_dataset)}, test={len(test_dataset)}"
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
return train_dataset, val_dataset, test_dataset
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
def prepare_arxiv_dataset(
|
| 128 |
+
tokenizer: PreTrainedTokenizerBase,
|
| 129 |
+
cfg: DatasetConfig,
|
| 130 |
+
dataset: Dataset,
|
| 131 |
+
label2id: dict[str, int],
|
| 132 |
+
) -> tuple[Dataset, Dataset, Dataset]:
|
| 133 |
+
"""
|
| 134 |
+
Load arxiv dataset, preprocess it and return train/validation/test split
|
| 135 |
+
|
| 136 |
+
Args:
|
| 137 |
+
tokenizer: Tokenizer to use for text processing
|
| 138 |
+
cfg: Dataset configuration
|
| 139 |
+
dataset: Optional pre-loaded dataset, will load if None
|
| 140 |
+
label2id: Optional pre-computed label mapping, will create if None
|
| 141 |
+
|
| 142 |
+
Returns:
|
| 143 |
+
tuple containing:
|
| 144 |
+
- train dataset
|
| 145 |
+
- validation dataset
|
| 146 |
+
- test dataset
|
| 147 |
+
"""
|
| 148 |
+
|
| 149 |
+
preprocess_fn = generate_preprocessing_function(
|
| 150 |
+
tokenizer=tokenizer,
|
| 151 |
+
label_mapping=label2id,
|
| 152 |
+
)
|
| 153 |
+
|
| 154 |
+
processed_dataset = dataset.map(
|
| 155 |
+
preprocess_fn, remove_columns=["summary", "tag", "title"]
|
| 156 |
+
)
|
| 157 |
+
|
| 158 |
+
return train_val_test_split(processed_dataset, cfg)
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def invert_label_mapping(label_mapping: Mapping[str, int]) -> dict[int, str]:
|
| 162 |
+
return {idx: label for label, idx in label_mapping.items()}
|
src/pipeline/env_setup.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from dotenv import load_dotenv
|
| 2 |
+
import os
|
| 3 |
+
|
| 4 |
+
REQUIRED_ENV_VARS = ["COMET_API_KEY", "COMET_MODE"]
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def setup_env():
|
| 8 |
+
load_dotenv()
|
| 9 |
+
for var in REQUIRED_ENV_VARS:
|
| 10 |
+
if os.getenv(var) is None:
|
| 11 |
+
raise ValueError(f"Environment variable {var} is not set")
|
src/pipeline/logging_setup.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from comet_ml import Experiment
|
| 2 |
+
import os
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def setup_logging():
|
| 6 |
+
experiment = Experiment(
|
| 7 |
+
api_key=os.getenv("COMET_API_KEY"),
|
| 8 |
+
project_name="arxiv-papers-classification",
|
| 9 |
+
auto_output_logging="simple",
|
| 10 |
+
)
|
| 11 |
+
|
| 12 |
+
return experiment
|
src/pipeline/metrics.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import evaluate
|
| 2 |
+
import numpy as np
|
| 3 |
+
|
| 4 |
+
clf_metrics = evaluate.combine(["accuracy", "f1", "precision", "recall"])
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def sigmoid(x):
|
| 8 |
+
return 1 / (1 + np.exp(-x))
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
def compute_metrics(eval_pred):
|
| 12 |
+
predictions, labels = eval_pred
|
| 13 |
+
predictions = sigmoid(predictions)
|
| 14 |
+
predictions = (predictions > 0.5).astype(int).reshape(-1)
|
| 15 |
+
return clf_metrics.compute(
|
| 16 |
+
predictions=predictions, references=labels.astype(int).reshape(-1)
|
| 17 |
+
)
|
src/pipeline/model_setup.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from transformers import AutoModelForSequenceClassification, PreTrainedModel
|
| 2 |
+
from config.pipeline_config import ModelConfig
|
| 3 |
+
import typing as tp
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def load_model(
|
| 7 |
+
config: ModelConfig, label2id: tp.Mapping[str, int], id2label: tp.Mapping[int, str]
|
| 8 |
+
) -> PreTrainedModel:
|
| 9 |
+
model = AutoModelForSequenceClassification.from_pretrained(
|
| 10 |
+
config.model_name,
|
| 11 |
+
num_labels=len(label2id),
|
| 12 |
+
label2id=label2id,
|
| 13 |
+
id2label=id2label,
|
| 14 |
+
problem_type="multi_label_classification",
|
| 15 |
+
)
|
| 16 |
+
return model
|
uv.lock
CHANGED
|
@@ -74,6 +74,28 @@ wheels = [
|
|
| 74 |
{ url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 },
|
| 75 |
]
|
| 76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
[[package]]
|
| 78 |
name = "appnope"
|
| 79 |
version = "0.1.4"
|
|
@@ -83,6 +105,45 @@ wheels = [
|
|
| 83 |
{ url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 },
|
| 84 |
]
|
| 85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
[[package]]
|
| 87 |
name = "asttokens"
|
| 88 |
version = "3.0.0"
|
|
@@ -101,6 +162,24 @@ wheels = [
|
|
| 101 |
{ url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 },
|
| 102 |
]
|
| 103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
[[package]]
|
| 105 |
name = "certifi"
|
| 106 |
version = "2025.1.31"
|
|
@@ -154,6 +233,18 @@ wheels = [
|
|
| 154 |
{ url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 },
|
| 155 |
]
|
| 156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
[[package]]
|
| 158 |
name = "colorama"
|
| 159 |
version = "0.4.6"
|
|
@@ -163,6 +254,32 @@ wheels = [
|
|
| 163 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
| 164 |
]
|
| 165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
[[package]]
|
| 167 |
name = "comm"
|
| 168 |
version = "0.2.2"
|
|
@@ -175,6 +292,15 @@ wheels = [
|
|
| 175 |
{ url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 },
|
| 176 |
]
|
| 177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 178 |
[[package]]
|
| 179 |
name = "datasets"
|
| 180 |
version = "3.5.0"
|
|
@@ -231,6 +357,24 @@ wheels = [
|
|
| 231 |
{ url = "https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7", size = 116252 },
|
| 232 |
]
|
| 233 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 234 |
[[package]]
|
| 235 |
name = "evaluate"
|
| 236 |
version = "0.4.3"
|
|
@@ -253,6 +397,20 @@ wheels = [
|
|
| 253 |
{ url = "https://files.pythonhosted.org/packages/a2/e7/cbca9e2d2590eb9b5aa8f7ebabe1beb1498f9462d2ecede5c9fd9735faaf/evaluate-0.4.3-py3-none-any.whl", hash = "sha256:47d8770bdea76e2c2ed0d40189273027d1a41ccea861bcc7ba12d30ec5d1e517", size = 84010 },
|
| 254 |
]
|
| 255 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 256 |
[[package]]
|
| 257 |
name = "executing"
|
| 258 |
version = "2.2.0"
|
|
@@ -309,6 +467,45 @@ http = [
|
|
| 309 |
{ name = "aiohttp" },
|
| 310 |
]
|
| 311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 312 |
[[package]]
|
| 313 |
name = "huggingface-hub"
|
| 314 |
version = "0.30.1"
|
|
@@ -327,6 +524,25 @@ wheels = [
|
|
| 327 |
{ url = "https://files.pythonhosted.org/packages/99/e3/2232d0e726d4d6ea69643b9593d97d0e7e6ea69c2fe9ed5de34d476c1c47/huggingface_hub-0.30.1-py3-none-any.whl", hash = "sha256:0f6aa5ec5a4e68e5b9e45d556b4e5ea180c58f5a5ffa734e7f38c9d573028959", size = 481170 },
|
| 328 |
]
|
| 329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 330 |
[[package]]
|
| 331 |
name = "idna"
|
| 332 |
version = "3.10"
|
|
@@ -393,6 +609,22 @@ wheels = [
|
|
| 393 |
{ url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 },
|
| 394 |
]
|
| 395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 396 |
[[package]]
|
| 397 |
name = "jedi"
|
| 398 |
version = "0.19.2"
|
|
@@ -426,6 +658,33 @@ wheels = [
|
|
| 426 |
{ url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 },
|
| 427 |
]
|
| 428 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 429 |
[[package]]
|
| 430 |
name = "jupyter-client"
|
| 431 |
version = "8.6.3"
|
|
@@ -456,6 +715,40 @@ wheels = [
|
|
| 456 |
{ url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 },
|
| 457 |
]
|
| 458 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 459 |
[[package]]
|
| 460 |
name = "markupsafe"
|
| 461 |
version = "3.0.2"
|
|
@@ -496,6 +789,15 @@ wheels = [
|
|
| 496 |
{ url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 },
|
| 497 |
]
|
| 498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 499 |
[[package]]
|
| 500 |
name = "mpmath"
|
| 501 |
version = "1.3.0"
|
|
@@ -560,6 +862,15 @@ wheels = [
|
|
| 560 |
{ url = "https://files.pythonhosted.org/packages/da/d9/f7f9379981e39b8c2511c9e0326d212accacb82f12fbfdc1aa2ce2a7b2b6/multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3", size = 133351 },
|
| 561 |
]
|
| 562 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 563 |
[[package]]
|
| 564 |
name = "nest-asyncio"
|
| 565 |
version = "1.6.0"
|
|
@@ -725,28 +1036,16 @@ wheels = [
|
|
| 725 |
]
|
| 726 |
|
| 727 |
[[package]]
|
| 728 |
-
name = "
|
| 729 |
-
version = "
|
| 730 |
-
source = {
|
| 731 |
dependencies = [
|
| 732 |
-
{ name = "
|
| 733 |
-
{ name = "
|
| 734 |
-
{ name = "evaluate" },
|
| 735 |
-
{ name = "ipykernel" },
|
| 736 |
-
{ name = "scikit-learn" },
|
| 737 |
-
{ name = "torch" },
|
| 738 |
-
{ name = "transformers" },
|
| 739 |
]
|
| 740 |
-
|
| 741 |
-
[
|
| 742 |
-
|
| 743 |
-
{ name = "accelerate", specifier = ">=1.6.0" },
|
| 744 |
-
{ name = "datasets", specifier = ">=3.5.0" },
|
| 745 |
-
{ name = "evaluate", specifier = ">=0.4.3" },
|
| 746 |
-
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 747 |
-
{ name = "scikit-learn", specifier = ">=1.6.1" },
|
| 748 |
-
{ name = "torch", specifier = ">=2.6.0" },
|
| 749 |
-
{ name = "transformers", specifier = ">=4.50.3" },
|
| 750 |
]
|
| 751 |
|
| 752 |
[[package]]
|
|
@@ -806,6 +1105,33 @@ wheels = [
|
|
| 806 |
{ url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 },
|
| 807 |
]
|
| 808 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 809 |
[[package]]
|
| 810 |
name = "platformdirs"
|
| 811 |
version = "4.3.7"
|
|
@@ -868,6 +1194,20 @@ wheels = [
|
|
| 868 |
{ url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 },
|
| 869 |
]
|
| 870 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 871 |
[[package]]
|
| 872 |
name = "psutil"
|
| 873 |
version = "7.0.0"
|
|
@@ -931,6 +1271,19 @@ wheels = [
|
|
| 931 |
{ url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 },
|
| 932 |
]
|
| 933 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 934 |
[[package]]
|
| 935 |
name = "pygments"
|
| 936 |
version = "2.19.1"
|
|
@@ -940,6 +1293,15 @@ wheels = [
|
|
| 940 |
{ url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
|
| 941 |
]
|
| 942 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 943 |
[[package]]
|
| 944 |
name = "python-dateutil"
|
| 945 |
version = "2.9.0.post0"
|
|
@@ -952,6 +1314,15 @@ wheels = [
|
|
| 952 |
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
|
| 953 |
]
|
| 954 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 955 |
[[package]]
|
| 956 |
name = "pytz"
|
| 957 |
version = "2025.2"
|
|
@@ -1018,6 +1389,19 @@ wheels = [
|
|
| 1018 |
{ url = "https://files.pythonhosted.org/packages/87/88/0236056156da0278c9ca2e2562463643597808b5bbd6c34009ba217e7e92/pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d015efcd96aca8882057e7e6f06224f79eecd22cad193d3e6a0a91ec67590d1f", size = 1398401 },
|
| 1019 |
]
|
| 1020 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1021 |
[[package]]
|
| 1022 |
name = "regex"
|
| 1023 |
version = "2024.11.6"
|
|
@@ -1056,6 +1440,65 @@ wheels = [
|
|
| 1056 |
{ url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 },
|
| 1057 |
]
|
| 1058 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1059 |
[[package]]
|
| 1060 |
name = "safetensors"
|
| 1061 |
version = "0.5.3"
|
|
@@ -1130,6 +1573,28 @@ wheels = [
|
|
| 1130 |
{ url = "https://files.pythonhosted.org/packages/0a/c8/b3f566db71461cabd4b2d5b39bcc24a7e1c119535c8361f81426be39bb47/scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db", size = 40477705 },
|
| 1131 |
]
|
| 1132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1133 |
[[package]]
|
| 1134 |
name = "setuptools"
|
| 1135 |
version = "78.1.0"
|
|
@@ -1139,6 +1604,28 @@ wheels = [
|
|
| 1139 |
{ url = "https://files.pythonhosted.org/packages/54/21/f43f0a1fa8b06b32812e0975981f4677d28e0f3271601dc88ac5a5b83220/setuptools-78.1.0-py3-none-any.whl", hash = "sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8", size = 1256108 },
|
| 1140 |
]
|
| 1141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1142 |
[[package]]
|
| 1143 |
name = "six"
|
| 1144 |
version = "1.17.0"
|
|
@@ -1148,6 +1635,15 @@ wheels = [
|
|
| 1148 |
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
|
| 1149 |
]
|
| 1150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1151 |
[[package]]
|
| 1152 |
name = "stack-data"
|
| 1153 |
version = "0.6.3"
|
|
@@ -1162,6 +1658,35 @@ wheels = [
|
|
| 1162 |
{ url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 },
|
| 1163 |
]
|
| 1164 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1165 |
[[package]]
|
| 1166 |
name = "sympy"
|
| 1167 |
version = "1.13.1"
|
|
@@ -1174,6 +1699,15 @@ wheels = [
|
|
| 1174 |
{ url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 },
|
| 1175 |
]
|
| 1176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1177 |
[[package]]
|
| 1178 |
name = "threadpoolctl"
|
| 1179 |
version = "3.6.0"
|
|
@@ -1208,6 +1742,15 @@ wheels = [
|
|
| 1208 |
{ url = "https://files.pythonhosted.org/packages/e6/b6/072a8e053ae600dcc2ac0da81a23548e3b523301a442a6ca900e92ac35be/tokenizers-0.21.1-cp39-abi3-win_amd64.whl", hash = "sha256:0f0dcbcc9f6e13e675a66d7a5f2f225a736745ce484c1a4e07476a89ccdad382", size = 2435481 },
|
| 1209 |
]
|
| 1210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1211 |
[[package]]
|
| 1212 |
name = "torch"
|
| 1213 |
version = "2.6.0"
|
|
@@ -1337,6 +1880,24 @@ wheels = [
|
|
| 1337 |
{ url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 },
|
| 1338 |
]
|
| 1339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1340 |
[[package]]
|
| 1341 |
name = "wcwidth"
|
| 1342 |
version = "0.2.13"
|
|
@@ -1346,6 +1907,64 @@ wheels = [
|
|
| 1346 |
{ url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 },
|
| 1347 |
]
|
| 1348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1349 |
[[package]]
|
| 1350 |
name = "xxhash"
|
| 1351 |
version = "3.5.0"
|
|
|
|
| 74 |
{ url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 },
|
| 75 |
]
|
| 76 |
|
| 77 |
+
[[package]]
|
| 78 |
+
name = "altair"
|
| 79 |
+
version = "5.5.0"
|
| 80 |
+
source = { registry = "https://pypi.org/simple" }
|
| 81 |
+
dependencies = [
|
| 82 |
+
{ name = "jinja2" },
|
| 83 |
+
{ name = "jsonschema" },
|
| 84 |
+
{ name = "narwhals" },
|
| 85 |
+
{ name = "packaging" },
|
| 86 |
+
{ name = "typing-extensions", marker = "python_full_version < '3.14'" },
|
| 87 |
+
]
|
| 88 |
+
sdist = { url = "https://files.pythonhosted.org/packages/16/b1/f2969c7bdb8ad8bbdda031687defdce2c19afba2aa2c8e1d2a17f78376d8/altair-5.5.0.tar.gz", hash = "sha256:d960ebe6178c56de3855a68c47b516be38640b73fb3b5111c2a9ca90546dd73d", size = 705305 }
|
| 89 |
+
wheels = [
|
| 90 |
+
{ url = "https://files.pythonhosted.org/packages/aa/f3/0b6ced594e51cc95d8c1fc1640d3623770d01e4969d29c0bd09945fafefa/altair-5.5.0-py3-none-any.whl", hash = "sha256:91a310b926508d560fe0148d02a194f38b824122641ef528113d029fcd129f8c", size = 731200 },
|
| 91 |
+
]
|
| 92 |
+
|
| 93 |
+
[[package]]
|
| 94 |
+
name = "antlr4-python3-runtime"
|
| 95 |
+
version = "4.9.3"
|
| 96 |
+
source = { registry = "https://pypi.org/simple" }
|
| 97 |
+
sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034 }
|
| 98 |
+
|
| 99 |
[[package]]
|
| 100 |
name = "appnope"
|
| 101 |
version = "0.1.4"
|
|
|
|
| 105 |
{ url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 },
|
| 106 |
]
|
| 107 |
|
| 108 |
+
[[package]]
|
| 109 |
+
name = "arxiv-papers-classification"
|
| 110 |
+
version = "0.1.0"
|
| 111 |
+
source = { virtual = "." }
|
| 112 |
+
dependencies = [
|
| 113 |
+
{ name = "accelerate" },
|
| 114 |
+
{ name = "comet-ml" },
|
| 115 |
+
{ name = "datasets" },
|
| 116 |
+
{ name = "evaluate" },
|
| 117 |
+
{ name = "huggingface-hub", extra = ["hf-xet"] },
|
| 118 |
+
{ name = "hydra-core" },
|
| 119 |
+
{ name = "ipykernel" },
|
| 120 |
+
{ name = "ipywidgets" },
|
| 121 |
+
{ name = "loguru" },
|
| 122 |
+
{ name = "python-dotenv" },
|
| 123 |
+
{ name = "scikit-learn" },
|
| 124 |
+
{ name = "streamlit" },
|
| 125 |
+
{ name = "torch" },
|
| 126 |
+
{ name = "transformers" },
|
| 127 |
+
]
|
| 128 |
+
|
| 129 |
+
[package.metadata]
|
| 130 |
+
requires-dist = [
|
| 131 |
+
{ name = "accelerate", specifier = ">=1.6.0" },
|
| 132 |
+
{ name = "comet-ml", specifier = ">=3.49.7" },
|
| 133 |
+
{ name = "datasets", specifier = ">=3.5.0" },
|
| 134 |
+
{ name = "evaluate", specifier = ">=0.4.3" },
|
| 135 |
+
{ name = "huggingface-hub", extras = ["hf-xet"], specifier = ">=0.30.1" },
|
| 136 |
+
{ name = "hydra-core", specifier = ">=1.3.2" },
|
| 137 |
+
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 138 |
+
{ name = "ipywidgets", specifier = ">=8.1.5" },
|
| 139 |
+
{ name = "loguru", specifier = ">=0.7.3" },
|
| 140 |
+
{ name = "python-dotenv", specifier = ">=1.1.0" },
|
| 141 |
+
{ name = "scikit-learn", specifier = ">=1.6.1" },
|
| 142 |
+
{ name = "streamlit", specifier = ">=1.44.1" },
|
| 143 |
+
{ name = "torch", specifier = ">=2.6.0" },
|
| 144 |
+
{ name = "transformers", specifier = ">=4.50.3" },
|
| 145 |
+
]
|
| 146 |
+
|
| 147 |
[[package]]
|
| 148 |
name = "asttokens"
|
| 149 |
version = "3.0.0"
|
|
|
|
| 162 |
{ url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 },
|
| 163 |
]
|
| 164 |
|
| 165 |
+
[[package]]
|
| 166 |
+
name = "blinker"
|
| 167 |
+
version = "1.9.0"
|
| 168 |
+
source = { registry = "https://pypi.org/simple" }
|
| 169 |
+
sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 }
|
| 170 |
+
wheels = [
|
| 171 |
+
{ url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 },
|
| 172 |
+
]
|
| 173 |
+
|
| 174 |
+
[[package]]
|
| 175 |
+
name = "cachetools"
|
| 176 |
+
version = "5.5.2"
|
| 177 |
+
source = { registry = "https://pypi.org/simple" }
|
| 178 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 }
|
| 179 |
+
wheels = [
|
| 180 |
+
{ url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 },
|
| 181 |
+
]
|
| 182 |
+
|
| 183 |
[[package]]
|
| 184 |
name = "certifi"
|
| 185 |
version = "2025.1.31"
|
|
|
|
| 233 |
{ url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 },
|
| 234 |
]
|
| 235 |
|
| 236 |
+
[[package]]
|
| 237 |
+
name = "click"
|
| 238 |
+
version = "8.1.8"
|
| 239 |
+
source = { registry = "https://pypi.org/simple" }
|
| 240 |
+
dependencies = [
|
| 241 |
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 242 |
+
]
|
| 243 |
+
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
|
| 244 |
+
wheels = [
|
| 245 |
+
{ url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
|
| 246 |
+
]
|
| 247 |
+
|
| 248 |
[[package]]
|
| 249 |
name = "colorama"
|
| 250 |
version = "0.4.6"
|
|
|
|
| 254 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
| 255 |
]
|
| 256 |
|
| 257 |
+
[[package]]
|
| 258 |
+
name = "comet-ml"
|
| 259 |
+
version = "3.49.7"
|
| 260 |
+
source = { registry = "https://pypi.org/simple" }
|
| 261 |
+
dependencies = [
|
| 262 |
+
{ name = "dulwich" },
|
| 263 |
+
{ name = "everett", extra = ["ini"] },
|
| 264 |
+
{ name = "jsonschema" },
|
| 265 |
+
{ name = "psutil" },
|
| 266 |
+
{ name = "python-box" },
|
| 267 |
+
{ name = "requests" },
|
| 268 |
+
{ name = "requests-toolbelt" },
|
| 269 |
+
{ name = "rich" },
|
| 270 |
+
{ name = "semantic-version" },
|
| 271 |
+
{ name = "sentry-sdk" },
|
| 272 |
+
{ name = "setuptools" },
|
| 273 |
+
{ name = "simplejson" },
|
| 274 |
+
{ name = "urllib3" },
|
| 275 |
+
{ name = "wrapt" },
|
| 276 |
+
{ name = "wurlitzer" },
|
| 277 |
+
]
|
| 278 |
+
sdist = { url = "https://files.pythonhosted.org/packages/78/b7/d7c5729b47559204f5f2e20a90ac5d50ea4569bcb473f7886f7ab8b8ad74/comet_ml-3.49.7.tar.gz", hash = "sha256:7c6529d6307d94c252f09575e137fb033873111ef56b2168efa2e9b8ef89f606", size = 540317 }
|
| 279 |
+
wheels = [
|
| 280 |
+
{ url = "https://files.pythonhosted.org/packages/38/af/913dddaef0e23ebe0f3275b901965b54365487e779dbfdc4f5e55d4239c1/comet_ml-3.49.7-py3-none-any.whl", hash = "sha256:f8e231007dffd9ea504a3d5866c495776d2db6dccfb1f2c15f26313247aeab32", size = 726703 },
|
| 281 |
+
]
|
| 282 |
+
|
| 283 |
[[package]]
|
| 284 |
name = "comm"
|
| 285 |
version = "0.2.2"
|
|
|
|
| 292 |
{ url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 },
|
| 293 |
]
|
| 294 |
|
| 295 |
+
[[package]]
|
| 296 |
+
name = "configobj"
|
| 297 |
+
version = "5.0.9"
|
| 298 |
+
source = { registry = "https://pypi.org/simple" }
|
| 299 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f5/c4/c7f9e41bc2e5f8eeae4a08a01c91b2aea3dfab40a3e14b25e87e7db8d501/configobj-5.0.9.tar.gz", hash = "sha256:03c881bbf23aa07bccf1b837005975993c4ab4427ba57f959afdd9d1a2386848", size = 101518 }
|
| 300 |
+
wheels = [
|
| 301 |
+
{ url = "https://files.pythonhosted.org/packages/a6/c4/0679472c60052c27efa612b4cd3ddd2a23e885dcdc73461781d2c802d39e/configobj-5.0.9-py2.py3-none-any.whl", hash = "sha256:1ba10c5b6ee16229c79a05047aeda2b55eb4e80d7c7d8ecf17ec1ca600c79882", size = 35615 },
|
| 302 |
+
]
|
| 303 |
+
|
| 304 |
[[package]]
|
| 305 |
name = "datasets"
|
| 306 |
version = "3.5.0"
|
|
|
|
| 357 |
{ url = "https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7", size = 116252 },
|
| 358 |
]
|
| 359 |
|
| 360 |
+
[[package]]
|
| 361 |
+
name = "dulwich"
|
| 362 |
+
version = "0.22.8"
|
| 363 |
+
source = { registry = "https://pypi.org/simple" }
|
| 364 |
+
dependencies = [
|
| 365 |
+
{ name = "urllib3" },
|
| 366 |
+
]
|
| 367 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d4/8b/0f2de00c0c0d5881dc39be147ec2918725fb3628deeeb1f27d1c6cf6d9f4/dulwich-0.22.8.tar.gz", hash = "sha256:701547310415de300269331abe29cb5717aa1ea377af826bf513d0adfb1c209b", size = 466542 }
|
| 368 |
+
wheels = [
|
| 369 |
+
{ url = "https://files.pythonhosted.org/packages/dc/b7/78116bfe8860edca277d00ac243749c8b94714dc3b4608f0c23fa7f4b78e/dulwich-0.22.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbade3342376be1cd2409539fe1b901d2d57a531106bbae204da921ef4456a74", size = 915617 },
|
| 370 |
+
{ url = "https://files.pythonhosted.org/packages/a1/af/28c317a83d6ae9ca93a8decfaa50f09b25a73134f5087a98f51fa5a2d784/dulwich-0.22.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71420ffb6deebc59b2ce875e63d814509f9c1dc89c76db962d547aebf15670c7", size = 991271 },
|
| 371 |
+
{ url = "https://files.pythonhosted.org/packages/84/a0/64a0376f79c7fb87ec6e6d9a0e2157f3196d1f5f75618c402645ac5ccf19/dulwich-0.22.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a626adbfac44646a125618266a24133763bdc992bf8bd0702910d67e6b994443", size = 999791 },
|
| 372 |
+
{ url = "https://files.pythonhosted.org/packages/63/c3/260f060ededcdf5f13a7e63a36329c95225bf8e8c3f50aeca6820850b56a/dulwich-0.22.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f1476c9c4e4ede95714d06c4831883a26680e37b040b8b6230f506e5ba39f51", size = 1043970 },
|
| 373 |
+
{ url = "https://files.pythonhosted.org/packages/11/47/2bc02dd1c25eb13cb3cd20cd5a55dd9d7b9fa6af95ed574dd913dd67a0fb/dulwich-0.22.8-cp313-cp313-win32.whl", hash = "sha256:b2b31913932bb5bd41658dd398b33b1a2d4d34825123ad54e40912cfdfe60003", size = 590548 },
|
| 374 |
+
{ url = "https://files.pythonhosted.org/packages/f3/17/66368fa9d4cffd52663d20354a74aa42d3a6d998f1a462e30aff38c99d25/dulwich-0.22.8-cp313-cp313-win_amd64.whl", hash = "sha256:7a44e5a61a7989aca1e301d39cfb62ad2f8853368682f524d6e878b4115d823d", size = 608200 },
|
| 375 |
+
{ url = "https://files.pythonhosted.org/packages/37/56/395c6d82d4d9eb7a7ab62939c99db5b746995b0f3ad3b31f43c15e3e07a0/dulwich-0.22.8-py3-none-any.whl", hash = "sha256:ffc7a02e62b72884de58baaa3b898b7f6427893e79b1289ffa075092efe59181", size = 273071 },
|
| 376 |
+
]
|
| 377 |
+
|
| 378 |
[[package]]
|
| 379 |
name = "evaluate"
|
| 380 |
version = "0.4.3"
|
|
|
|
| 397 |
{ url = "https://files.pythonhosted.org/packages/a2/e7/cbca9e2d2590eb9b5aa8f7ebabe1beb1498f9462d2ecede5c9fd9735faaf/evaluate-0.4.3-py3-none-any.whl", hash = "sha256:47d8770bdea76e2c2ed0d40189273027d1a41ccea861bcc7ba12d30ec5d1e517", size = 84010 },
|
| 398 |
]
|
| 399 |
|
| 400 |
+
[[package]]
|
| 401 |
+
name = "everett"
|
| 402 |
+
version = "3.1.0"
|
| 403 |
+
source = { registry = "https://pypi.org/simple" }
|
| 404 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c0/b4/c7c61c0b243c4277d19299cd1bccee8b2b57d04073c0d8625799fe47f5c9/everett-3.1.0.tar.gz", hash = "sha256:46175da5bcb06c193aa129e59714bca981344ff067c3a8bc2e625bc0b3dc01f6", size = 73796 }
|
| 405 |
+
wheels = [
|
| 406 |
+
{ url = "https://files.pythonhosted.org/packages/91/9a/d882fd7562208456236fb2e62b762bf16fbc9ecde842bb871f676ca0f7e1/everett-3.1.0-py2.py3-none-any.whl", hash = "sha256:db13891b849e45e54faea93ee79881d12458c5378f5b9b7f806eeff03ce1de3c", size = 35702 },
|
| 407 |
+
]
|
| 408 |
+
|
| 409 |
+
[package.optional-dependencies]
|
| 410 |
+
ini = [
|
| 411 |
+
{ name = "configobj" },
|
| 412 |
+
]
|
| 413 |
+
|
| 414 |
[[package]]
|
| 415 |
name = "executing"
|
| 416 |
version = "2.2.0"
|
|
|
|
| 467 |
{ name = "aiohttp" },
|
| 468 |
]
|
| 469 |
|
| 470 |
+
[[package]]
|
| 471 |
+
name = "gitdb"
|
| 472 |
+
version = "4.0.12"
|
| 473 |
+
source = { registry = "https://pypi.org/simple" }
|
| 474 |
+
dependencies = [
|
| 475 |
+
{ name = "smmap" },
|
| 476 |
+
]
|
| 477 |
+
sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 }
|
| 478 |
+
wheels = [
|
| 479 |
+
{ url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 },
|
| 480 |
+
]
|
| 481 |
+
|
| 482 |
+
[[package]]
|
| 483 |
+
name = "gitpython"
|
| 484 |
+
version = "3.1.44"
|
| 485 |
+
source = { registry = "https://pypi.org/simple" }
|
| 486 |
+
dependencies = [
|
| 487 |
+
{ name = "gitdb" },
|
| 488 |
+
]
|
| 489 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 }
|
| 490 |
+
wheels = [
|
| 491 |
+
{ url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 },
|
| 492 |
+
]
|
| 493 |
+
|
| 494 |
+
[[package]]
|
| 495 |
+
name = "hf-xet"
|
| 496 |
+
version = "1.0.2"
|
| 497 |
+
source = { registry = "https://pypi.org/simple" }
|
| 498 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ea/a0/d909bbbec11ec6b4759761cf82ee6fef54090e4419af0103d51ac7a8a193/hf_xet-1.0.2.tar.gz", hash = "sha256:08d3ffadafec693f468196a6b73a06228ee92228a185faf59f1331b7b688bd0b", size = 257438 }
|
| 499 |
+
wheels = [
|
| 500 |
+
{ url = "https://files.pythonhosted.org/packages/bf/6f/fa406bcd791abb1fa2008699eadfd75942085da9c3fbe1bcf5350f67a169/hf_xet-1.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ecedfa15291deb37dcb76d2c1161183e0ea7c9eb2ee2faee65ab51581aface72", size = 5003702 },
|
| 501 |
+
{ url = "https://files.pythonhosted.org/packages/a8/09/d94d1b918b9ae4f27957498a93ab8490d73a9af3b1075937b1746269b65c/hf_xet-1.0.2-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:df74b85086d5a605b1bc891f40532d8c8ae4543529a30b8bcd249bd254d74b38", size = 4806239 },
|
| 502 |
+
{ url = "https://files.pythonhosted.org/packages/ef/4a/5f8daad74457eeeed2e8dda30683626736c0fdcf78edc45e3915b155d480/hf_xet-1.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4278542881217e176fb14132ce519324a849162fa14814981d319d46819158f0", size = 53823444 },
|
| 503 |
+
{ url = "https://files.pythonhosted.org/packages/1e/96/3e2aba0a84f033869eb72227ee5ee14f47c14e89408c6d990d3dfc5228b7/hf_xet-1.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:58cc3496fba08a7b87cf33cd25cf2118d1b72ba17533925ca9a70aa97871270b", size = 52278291 },
|
| 504 |
+
{ url = "https://files.pythonhosted.org/packages/78/06/e28a9c284a13f615b37b5878c042a842ed6ccfd056c092f430a365bdc491/hf_xet-1.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8afa21f725707078906d4c3dcb1555b2fd8ca35213891ba0d31ae6d77f4e242e", size = 53270013 },
|
| 505 |
+
{ url = "https://files.pythonhosted.org/packages/98/cc/c91c0b98cb41b1f301b13c16569e8ba29cd9751192735a8ab46c5ea61ce2/hf_xet-1.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a9d4f005f862d6c58dd161d6bc20d690669a00d22719dd5c64a42112e406492f", size = 53744462 },
|
| 506 |
+
{ url = "https://files.pythonhosted.org/packages/7f/1d/2fdb0f7af9be284cbd3dc2864f164dbc96e76d92f1598793d18bcbbca47e/hf_xet-1.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:9d207244a7ac564954fb9087a20fc48401b2ef7224534748d9513b4e196b69f9", size = 4119119 },
|
| 507 |
+
]
|
| 508 |
+
|
| 509 |
[[package]]
|
| 510 |
name = "huggingface-hub"
|
| 511 |
version = "0.30.1"
|
|
|
|
| 524 |
{ url = "https://files.pythonhosted.org/packages/99/e3/2232d0e726d4d6ea69643b9593d97d0e7e6ea69c2fe9ed5de34d476c1c47/huggingface_hub-0.30.1-py3-none-any.whl", hash = "sha256:0f6aa5ec5a4e68e5b9e45d556b4e5ea180c58f5a5ffa734e7f38c9d573028959", size = 481170 },
|
| 525 |
]
|
| 526 |
|
| 527 |
+
[package.optional-dependencies]
|
| 528 |
+
hf-xet = [
|
| 529 |
+
{ name = "hf-xet" },
|
| 530 |
+
]
|
| 531 |
+
|
| 532 |
+
[[package]]
|
| 533 |
+
name = "hydra-core"
|
| 534 |
+
version = "1.3.2"
|
| 535 |
+
source = { registry = "https://pypi.org/simple" }
|
| 536 |
+
dependencies = [
|
| 537 |
+
{ name = "antlr4-python3-runtime" },
|
| 538 |
+
{ name = "omegaconf" },
|
| 539 |
+
{ name = "packaging" },
|
| 540 |
+
]
|
| 541 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494 }
|
| 542 |
+
wheels = [
|
| 543 |
+
{ url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547 },
|
| 544 |
+
]
|
| 545 |
+
|
| 546 |
[[package]]
|
| 547 |
name = "idna"
|
| 548 |
version = "3.10"
|
|
|
|
| 609 |
{ url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 },
|
| 610 |
]
|
| 611 |
|
| 612 |
+
[[package]]
|
| 613 |
+
name = "ipywidgets"
|
| 614 |
+
version = "8.1.5"
|
| 615 |
+
source = { registry = "https://pypi.org/simple" }
|
| 616 |
+
dependencies = [
|
| 617 |
+
{ name = "comm" },
|
| 618 |
+
{ name = "ipython" },
|
| 619 |
+
{ name = "jupyterlab-widgets" },
|
| 620 |
+
{ name = "traitlets" },
|
| 621 |
+
{ name = "widgetsnbextension" },
|
| 622 |
+
]
|
| 623 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c7/4c/dab2a281b07596a5fc220d49827fe6c794c66f1493d7a74f1df0640f2cc5/ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17", size = 116723 }
|
| 624 |
+
wheels = [
|
| 625 |
+
{ url = "https://files.pythonhosted.org/packages/22/2d/9c0b76f2f9cc0ebede1b9371b6f317243028ed60b90705863d493bae622e/ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245", size = 139767 },
|
| 626 |
+
]
|
| 627 |
+
|
| 628 |
[[package]]
|
| 629 |
name = "jedi"
|
| 630 |
version = "0.19.2"
|
|
|
|
| 658 |
{ url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 },
|
| 659 |
]
|
| 660 |
|
| 661 |
+
[[package]]
|
| 662 |
+
name = "jsonschema"
|
| 663 |
+
version = "4.23.0"
|
| 664 |
+
source = { registry = "https://pypi.org/simple" }
|
| 665 |
+
dependencies = [
|
| 666 |
+
{ name = "attrs" },
|
| 667 |
+
{ name = "jsonschema-specifications" },
|
| 668 |
+
{ name = "referencing" },
|
| 669 |
+
{ name = "rpds-py" },
|
| 670 |
+
]
|
| 671 |
+
sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 }
|
| 672 |
+
wheels = [
|
| 673 |
+
{ url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 },
|
| 674 |
+
]
|
| 675 |
+
|
| 676 |
+
[[package]]
|
| 677 |
+
name = "jsonschema-specifications"
|
| 678 |
+
version = "2024.10.1"
|
| 679 |
+
source = { registry = "https://pypi.org/simple" }
|
| 680 |
+
dependencies = [
|
| 681 |
+
{ name = "referencing" },
|
| 682 |
+
]
|
| 683 |
+
sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 }
|
| 684 |
+
wheels = [
|
| 685 |
+
{ url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 },
|
| 686 |
+
]
|
| 687 |
+
|
| 688 |
[[package]]
|
| 689 |
name = "jupyter-client"
|
| 690 |
version = "8.6.3"
|
|
|
|
| 715 |
{ url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 },
|
| 716 |
]
|
| 717 |
|
| 718 |
+
[[package]]
|
| 719 |
+
name = "jupyterlab-widgets"
|
| 720 |
+
version = "3.0.13"
|
| 721 |
+
source = { registry = "https://pypi.org/simple" }
|
| 722 |
+
sdist = { url = "https://files.pythonhosted.org/packages/59/73/fa26bbb747a9ea4fca6b01453aa22990d52ab62dd61384f1ac0dc9d4e7ba/jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed", size = 203556 }
|
| 723 |
+
wheels = [
|
| 724 |
+
{ url = "https://files.pythonhosted.org/packages/a9/93/858e87edc634d628e5d752ba944c2833133a28fa87bb093e6832ced36a3e/jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54", size = 214392 },
|
| 725 |
+
]
|
| 726 |
+
|
| 727 |
+
[[package]]
|
| 728 |
+
name = "loguru"
|
| 729 |
+
version = "0.7.3"
|
| 730 |
+
source = { registry = "https://pypi.org/simple" }
|
| 731 |
+
dependencies = [
|
| 732 |
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 733 |
+
{ name = "win32-setctime", marker = "sys_platform == 'win32'" },
|
| 734 |
+
]
|
| 735 |
+
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 }
|
| 736 |
+
wheels = [
|
| 737 |
+
{ url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 },
|
| 738 |
+
]
|
| 739 |
+
|
| 740 |
+
[[package]]
|
| 741 |
+
name = "markdown-it-py"
|
| 742 |
+
version = "3.0.0"
|
| 743 |
+
source = { registry = "https://pypi.org/simple" }
|
| 744 |
+
dependencies = [
|
| 745 |
+
{ name = "mdurl" },
|
| 746 |
+
]
|
| 747 |
+
sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 }
|
| 748 |
+
wheels = [
|
| 749 |
+
{ url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 },
|
| 750 |
+
]
|
| 751 |
+
|
| 752 |
[[package]]
|
| 753 |
name = "markupsafe"
|
| 754 |
version = "3.0.2"
|
|
|
|
| 789 |
{ url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 },
|
| 790 |
]
|
| 791 |
|
| 792 |
+
[[package]]
|
| 793 |
+
name = "mdurl"
|
| 794 |
+
version = "0.1.2"
|
| 795 |
+
source = { registry = "https://pypi.org/simple" }
|
| 796 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 }
|
| 797 |
+
wheels = [
|
| 798 |
+
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
| 799 |
+
]
|
| 800 |
+
|
| 801 |
[[package]]
|
| 802 |
name = "mpmath"
|
| 803 |
version = "1.3.0"
|
|
|
|
| 862 |
{ url = "https://files.pythonhosted.org/packages/da/d9/f7f9379981e39b8c2511c9e0326d212accacb82f12fbfdc1aa2ce2a7b2b6/multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3", size = 133351 },
|
| 863 |
]
|
| 864 |
|
| 865 |
+
[[package]]
|
| 866 |
+
name = "narwhals"
|
| 867 |
+
version = "1.33.0"
|
| 868 |
+
source = { registry = "https://pypi.org/simple" }
|
| 869 |
+
sdist = { url = "https://files.pythonhosted.org/packages/85/fd/484aa8bb557f97a1781f38c78b79f795a2fa320e4165c4230f679937d1e8/narwhals-1.33.0.tar.gz", hash = "sha256:6233d2457debf4b5fe4a1da54530c6fe2d84326f4a8e3bca35bbbff580a347cb", size = 262554 }
|
| 870 |
+
wheels = [
|
| 871 |
+
{ url = "https://files.pythonhosted.org/packages/41/c1/e9bc6b67c774e7c1f939c91ea535f18f7644fedc61b20d6baa861ad52b34/narwhals-1.33.0-py3-none-any.whl", hash = "sha256:f653319112fd121a1f1c18a40cf70dada773cdacfd53e62c2aa0afae43c17129", size = 322750 },
|
| 872 |
+
]
|
| 873 |
+
|
| 874 |
[[package]]
|
| 875 |
name = "nest-asyncio"
|
| 876 |
version = "1.6.0"
|
|
|
|
| 1036 |
]
|
| 1037 |
|
| 1038 |
[[package]]
|
| 1039 |
+
name = "omegaconf"
|
| 1040 |
+
version = "2.3.0"
|
| 1041 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1042 |
dependencies = [
|
| 1043 |
+
{ name = "antlr4-python3-runtime" },
|
| 1044 |
+
{ name = "pyyaml" },
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1045 |
]
|
| 1046 |
+
sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120 }
|
| 1047 |
+
wheels = [
|
| 1048 |
+
{ url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500 },
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1049 |
]
|
| 1050 |
|
| 1051 |
[[package]]
|
|
|
|
| 1105 |
{ url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 },
|
| 1106 |
]
|
| 1107 |
|
| 1108 |
+
[[package]]
|
| 1109 |
+
name = "pillow"
|
| 1110 |
+
version = "11.1.0"
|
| 1111 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1112 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 }
|
| 1113 |
+
wheels = [
|
| 1114 |
+
{ url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 },
|
| 1115 |
+
{ url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 },
|
| 1116 |
+
{ url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 },
|
| 1117 |
+
{ url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 },
|
| 1118 |
+
{ url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 },
|
| 1119 |
+
{ url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 },
|
| 1120 |
+
{ url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 },
|
| 1121 |
+
{ url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 },
|
| 1122 |
+
{ url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 },
|
| 1123 |
+
{ url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 },
|
| 1124 |
+
{ url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 },
|
| 1125 |
+
{ url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 },
|
| 1126 |
+
{ url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 },
|
| 1127 |
+
{ url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 },
|
| 1128 |
+
{ url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 },
|
| 1129 |
+
{ url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 },
|
| 1130 |
+
{ url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 },
|
| 1131 |
+
{ url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 },
|
| 1132 |
+
{ url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 },
|
| 1133 |
+
]
|
| 1134 |
+
|
| 1135 |
[[package]]
|
| 1136 |
name = "platformdirs"
|
| 1137 |
version = "4.3.7"
|
|
|
|
| 1194 |
{ url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 },
|
| 1195 |
]
|
| 1196 |
|
| 1197 |
+
[[package]]
|
| 1198 |
+
name = "protobuf"
|
| 1199 |
+
version = "5.29.4"
|
| 1200 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1201 |
+
sdist = { url = "https://files.pythonhosted.org/packages/17/7d/b9dca7365f0e2c4fa7c193ff795427cfa6290147e5185ab11ece280a18e7/protobuf-5.29.4.tar.gz", hash = "sha256:4f1dfcd7997b31ef8f53ec82781ff434a28bf71d9102ddde14d076adcfc78c99", size = 424902 }
|
| 1202 |
+
wheels = [
|
| 1203 |
+
{ url = "https://files.pythonhosted.org/packages/9a/b2/043a1a1a20edd134563699b0e91862726a0dc9146c090743b6c44d798e75/protobuf-5.29.4-cp310-abi3-win32.whl", hash = "sha256:13eb236f8eb9ec34e63fc8b1d6efd2777d062fa6aaa68268fb67cf77f6839ad7", size = 422709 },
|
| 1204 |
+
{ url = "https://files.pythonhosted.org/packages/79/fc/2474b59570daa818de6124c0a15741ee3e5d6302e9d6ce0bdfd12e98119f/protobuf-5.29.4-cp310-abi3-win_amd64.whl", hash = "sha256:bcefcdf3976233f8a502d265eb65ea740c989bacc6c30a58290ed0e519eb4b8d", size = 434506 },
|
| 1205 |
+
{ url = "https://files.pythonhosted.org/packages/46/de/7c126bbb06aa0f8a7b38aaf8bd746c514d70e6a2a3f6dd460b3b7aad7aae/protobuf-5.29.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:307ecba1d852ec237e9ba668e087326a67564ef83e45a0189a772ede9e854dd0", size = 417826 },
|
| 1206 |
+
{ url = "https://files.pythonhosted.org/packages/a2/b5/bade14ae31ba871a139aa45e7a8183d869efe87c34a4850c87b936963261/protobuf-5.29.4-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:aec4962f9ea93c431d5714ed1be1c93f13e1a8618e70035ba2b0564d9e633f2e", size = 319574 },
|
| 1207 |
+
{ url = "https://files.pythonhosted.org/packages/46/88/b01ed2291aae68b708f7d334288ad5fb3e7aa769a9c309c91a0d55cb91b0/protobuf-5.29.4-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:d7d3f7d1d5a66ed4942d4fefb12ac4b14a29028b209d4bfb25c68ae172059922", size = 319672 },
|
| 1208 |
+
{ url = "https://files.pythonhosted.org/packages/12/fb/a586e0c973c95502e054ac5f81f88394f24ccc7982dac19c515acd9e2c93/protobuf-5.29.4-py3-none-any.whl", hash = "sha256:3fde11b505e1597f71b875ef2fc52062b6a9740e5f7c8997ce878b6009145862", size = 172551 },
|
| 1209 |
+
]
|
| 1210 |
+
|
| 1211 |
[[package]]
|
| 1212 |
name = "psutil"
|
| 1213 |
version = "7.0.0"
|
|
|
|
| 1271 |
{ url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 },
|
| 1272 |
]
|
| 1273 |
|
| 1274 |
+
[[package]]
|
| 1275 |
+
name = "pydeck"
|
| 1276 |
+
version = "0.9.1"
|
| 1277 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1278 |
+
dependencies = [
|
| 1279 |
+
{ name = "jinja2" },
|
| 1280 |
+
{ name = "numpy" },
|
| 1281 |
+
]
|
| 1282 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a1/ca/40e14e196864a0f61a92abb14d09b3d3da98f94ccb03b49cf51688140dab/pydeck-0.9.1.tar.gz", hash = "sha256:f74475ae637951d63f2ee58326757f8d4f9cd9f2a457cf42950715003e2cb605", size = 3832240 }
|
| 1283 |
+
wheels = [
|
| 1284 |
+
{ url = "https://files.pythonhosted.org/packages/ab/4c/b888e6cf58bd9db9c93f40d1c6be8283ff49d88919231afe93a6bcf61626/pydeck-0.9.1-py2.py3-none-any.whl", hash = "sha256:b3f75ba0d273fc917094fa61224f3f6076ca8752b93d46faf3bcfd9f9d59b038", size = 6900403 },
|
| 1285 |
+
]
|
| 1286 |
+
|
| 1287 |
[[package]]
|
| 1288 |
name = "pygments"
|
| 1289 |
version = "2.19.1"
|
|
|
|
| 1293 |
{ url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
|
| 1294 |
]
|
| 1295 |
|
| 1296 |
+
[[package]]
|
| 1297 |
+
name = "python-box"
|
| 1298 |
+
version = "6.1.0"
|
| 1299 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1300 |
+
sdist = { url = "https://files.pythonhosted.org/packages/9a/85/b02b80d74bdb95bfe491d49ad1627e9833c73d331edbe6eed0bdfe170361/python-box-6.1.0.tar.gz", hash = "sha256:6e7c243b356cb36e2c0f0e5ed7850969fede6aa812a7f501de7768996c7744d7", size = 41443 }
|
| 1301 |
+
wheels = [
|
| 1302 |
+
{ url = "https://files.pythonhosted.org/packages/88/c6/6d1e368710cb6c458ed692d179d7e101ebce80a3e640b2e74cc7ae886d6f/python_box-6.1.0-py3-none-any.whl", hash = "sha256:bdec0a5f5a17b01fc538d292602a077aa8c641fb121e1900dff0591791af80e8", size = 27277 },
|
| 1303 |
+
]
|
| 1304 |
+
|
| 1305 |
[[package]]
|
| 1306 |
name = "python-dateutil"
|
| 1307 |
version = "2.9.0.post0"
|
|
|
|
| 1314 |
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
|
| 1315 |
]
|
| 1316 |
|
| 1317 |
+
[[package]]
|
| 1318 |
+
name = "python-dotenv"
|
| 1319 |
+
version = "1.1.0"
|
| 1320 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1321 |
+
sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 }
|
| 1322 |
+
wheels = [
|
| 1323 |
+
{ url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 },
|
| 1324 |
+
]
|
| 1325 |
+
|
| 1326 |
[[package]]
|
| 1327 |
name = "pytz"
|
| 1328 |
version = "2025.2"
|
|
|
|
| 1389 |
{ url = "https://files.pythonhosted.org/packages/87/88/0236056156da0278c9ca2e2562463643597808b5bbd6c34009ba217e7e92/pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d015efcd96aca8882057e7e6f06224f79eecd22cad193d3e6a0a91ec67590d1f", size = 1398401 },
|
| 1390 |
]
|
| 1391 |
|
| 1392 |
+
[[package]]
|
| 1393 |
+
name = "referencing"
|
| 1394 |
+
version = "0.36.2"
|
| 1395 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1396 |
+
dependencies = [
|
| 1397 |
+
{ name = "attrs" },
|
| 1398 |
+
{ name = "rpds-py" },
|
| 1399 |
+
]
|
| 1400 |
+
sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 }
|
| 1401 |
+
wheels = [
|
| 1402 |
+
{ url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 },
|
| 1403 |
+
]
|
| 1404 |
+
|
| 1405 |
[[package]]
|
| 1406 |
name = "regex"
|
| 1407 |
version = "2024.11.6"
|
|
|
|
| 1440 |
{ url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 },
|
| 1441 |
]
|
| 1442 |
|
| 1443 |
+
[[package]]
|
| 1444 |
+
name = "requests-toolbelt"
|
| 1445 |
+
version = "1.0.0"
|
| 1446 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1447 |
+
dependencies = [
|
| 1448 |
+
{ name = "requests" },
|
| 1449 |
+
]
|
| 1450 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 }
|
| 1451 |
+
wheels = [
|
| 1452 |
+
{ url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 },
|
| 1453 |
+
]
|
| 1454 |
+
|
| 1455 |
+
[[package]]
|
| 1456 |
+
name = "rich"
|
| 1457 |
+
version = "14.0.0"
|
| 1458 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1459 |
+
dependencies = [
|
| 1460 |
+
{ name = "markdown-it-py" },
|
| 1461 |
+
{ name = "pygments" },
|
| 1462 |
+
]
|
| 1463 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 }
|
| 1464 |
+
wheels = [
|
| 1465 |
+
{ url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 },
|
| 1466 |
+
]
|
| 1467 |
+
|
| 1468 |
+
[[package]]
|
| 1469 |
+
name = "rpds-py"
|
| 1470 |
+
version = "0.24.0"
|
| 1471 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1472 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 }
|
| 1473 |
+
wheels = [
|
| 1474 |
+
{ url = "https://files.pythonhosted.org/packages/9d/c3/3607abc770395bc6d5a00cb66385a5479fb8cd7416ddef90393b17ef4340/rpds_py-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2d8e4508e15fc05b31285c4b00ddf2e0eb94259c2dc896771966a163122a0c", size = 367072 },
|
| 1475 |
+
{ url = "https://files.pythonhosted.org/packages/d8/35/8c7ee0fe465793e3af3298dc5a9f3013bd63e7a69df04ccfded8293a4982/rpds_py-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f00c16e089282ad68a3820fd0c831c35d3194b7cdc31d6e469511d9bffc535c", size = 351919 },
|
| 1476 |
+
{ url = "https://files.pythonhosted.org/packages/91/d3/7e1b972501eb5466b9aca46a9c31bcbbdc3ea5a076e9ab33f4438c1d069d/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951cc481c0c395c4a08639a469d53b7d4afa252529a085418b82a6b43c45c240", size = 390360 },
|
| 1477 |
+
{ url = "https://files.pythonhosted.org/packages/a2/a8/ccabb50d3c91c26ad01f9b09a6a3b03e4502ce51a33867c38446df9f896b/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9ca89938dff18828a328af41ffdf3902405a19f4131c88e22e776a8e228c5a8", size = 400704 },
|
| 1478 |
+
{ url = "https://files.pythonhosted.org/packages/53/ae/5fa5bf0f3bc6ce21b5ea88fc0ecd3a439e7cb09dd5f9ffb3dbe1b6894fc5/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0ef550042a8dbcd657dfb284a8ee00f0ba269d3f2286b0493b15a5694f9fe8", size = 450839 },
|
| 1479 |
+
{ url = "https://files.pythonhosted.org/packages/e3/ac/c4e18b36d9938247e2b54f6a03746f3183ca20e1edd7d3654796867f5100/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2356688e5d958c4d5cb964af865bea84db29971d3e563fb78e46e20fe1848b", size = 441494 },
|
| 1480 |
+
{ url = "https://files.pythonhosted.org/packages/bf/08/b543969c12a8f44db6c0f08ced009abf8f519191ca6985509e7c44102e3c/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78884d155fd15d9f64f5d6124b486f3d3f7fd7cd71a78e9670a0f6f6ca06fb2d", size = 393185 },
|
| 1481 |
+
{ url = "https://files.pythonhosted.org/packages/da/7e/f6eb6a7042ce708f9dfc781832a86063cea8a125bbe451d663697b51944f/rpds_py-0.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4a535013aeeef13c5532f802708cecae8d66c282babb5cd916379b72110cf7", size = 426168 },
|
| 1482 |
+
{ url = "https://files.pythonhosted.org/packages/38/b0/6cd2bb0509ac0b51af4bb138e145b7c4c902bb4b724d6fd143689d6e0383/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:84e0566f15cf4d769dade9b366b7b87c959be472c92dffb70462dd0844d7cbad", size = 567622 },
|
| 1483 |
+
{ url = "https://files.pythonhosted.org/packages/64/b0/c401f4f077547d98e8b4c2ec6526a80e7cb04f519d416430ec1421ee9e0b/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:823e74ab6fbaa028ec89615ff6acb409e90ff45580c45920d4dfdddb069f2120", size = 595435 },
|
| 1484 |
+
{ url = "https://files.pythonhosted.org/packages/9f/ec/7993b6e803294c87b61c85bd63e11142ccfb2373cf88a61ec602abcbf9d6/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c61a2cb0085c8783906b2f8b1f16a7e65777823c7f4d0a6aaffe26dc0d358dd9", size = 563762 },
|
| 1485 |
+
{ url = "https://files.pythonhosted.org/packages/1f/29/4508003204cb2f461dc2b83dd85f8aa2b915bc98fe6046b9d50d4aa05401/rpds_py-0.24.0-cp313-cp313-win32.whl", hash = "sha256:60d9b630c8025b9458a9d114e3af579a2c54bd32df601c4581bd054e85258143", size = 223510 },
|
| 1486 |
+
{ url = "https://files.pythonhosted.org/packages/f9/12/09e048d1814195e01f354155fb772fb0854bd3450b5f5a82224b3a319f0e/rpds_py-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:6eea559077d29486c68218178ea946263b87f1c41ae7f996b1f30a983c476a5a", size = 239075 },
|
| 1487 |
+
{ url = "https://files.pythonhosted.org/packages/d2/03/5027cde39bb2408d61e4dd0cf81f815949bb629932a6c8df1701d0257fc4/rpds_py-0.24.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:d09dc82af2d3c17e7dd17120b202a79b578d79f2b5424bda209d9966efeed114", size = 362974 },
|
| 1488 |
+
{ url = "https://files.pythonhosted.org/packages/bf/10/24d374a2131b1ffafb783e436e770e42dfdb74b69a2cd25eba8c8b29d861/rpds_py-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5fc13b44de6419d1e7a7e592a4885b323fbc2f46e1f22151e3a8ed3b8b920405", size = 348730 },
|
| 1489 |
+
{ url = "https://files.pythonhosted.org/packages/7a/d1/1ef88d0516d46cd8df12e5916966dbf716d5ec79b265eda56ba1b173398c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c347a20d79cedc0a7bd51c4d4b7dbc613ca4e65a756b5c3e57ec84bd43505b47", size = 387627 },
|
| 1490 |
+
{ url = "https://files.pythonhosted.org/packages/4e/35/07339051b8b901ecefd449ebf8e5522e92bcb95e1078818cbfd9db8e573c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20f2712bd1cc26a3cc16c5a1bfee9ed1abc33d4cdf1aabd297fe0eb724df4272", size = 394094 },
|
| 1491 |
+
{ url = "https://files.pythonhosted.org/packages/dc/62/ee89ece19e0ba322b08734e95441952062391065c157bbd4f8802316b4f1/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad911555286884be1e427ef0dc0ba3929e6821cbeca2194b13dc415a462c7fd", size = 449639 },
|
| 1492 |
+
{ url = "https://files.pythonhosted.org/packages/15/24/b30e9f9e71baa0b9dada3a4ab43d567c6b04a36d1cb531045f7a8a0a7439/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aeb3329c1721c43c58cae274d7d2ca85c1690d89485d9c63a006cb79a85771a", size = 438584 },
|
| 1493 |
+
{ url = "https://files.pythonhosted.org/packages/28/d9/49f7b8f3b4147db13961e19d5e30077cd0854ccc08487026d2cb2142aa4a/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0f156e9509cee987283abd2296ec816225145a13ed0391df8f71bf1d789e2d", size = 391047 },
|
| 1494 |
+
{ url = "https://files.pythonhosted.org/packages/49/b0/e66918d0972c33a259ba3cd7b7ff10ed8bd91dbcfcbec6367b21f026db75/rpds_py-0.24.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa6800adc8204ce898c8a424303969b7aa6a5e4ad2789c13f8648739830323b7", size = 418085 },
|
| 1495 |
+
{ url = "https://files.pythonhosted.org/packages/e1/6b/99ed7ea0a94c7ae5520a21be77a82306aac9e4e715d4435076ead07d05c6/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a18fc371e900a21d7392517c6f60fe859e802547309e94313cd8181ad9db004d", size = 564498 },
|
| 1496 |
+
{ url = "https://files.pythonhosted.org/packages/28/26/1cacfee6b800e6fb5f91acecc2e52f17dbf8b0796a7c984b4568b6d70e38/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9168764133fd919f8dcca2ead66de0105f4ef5659cbb4fa044f7014bed9a1797", size = 590202 },
|
| 1497 |
+
{ url = "https://files.pythonhosted.org/packages/a9/9e/57bd2f9fba04a37cef673f9a66b11ca8c43ccdd50d386c455cd4380fe461/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c", size = 561771 },
|
| 1498 |
+
{ url = "https://files.pythonhosted.org/packages/9f/cf/b719120f375ab970d1c297dbf8de1e3c9edd26fe92c0ed7178dd94b45992/rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba", size = 221195 },
|
| 1499 |
+
{ url = "https://files.pythonhosted.org/packages/2d/e5/22865285789f3412ad0c3d7ec4dc0a3e86483b794be8a5d9ed5a19390900/rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350", size = 237354 },
|
| 1500 |
+
]
|
| 1501 |
+
|
| 1502 |
[[package]]
|
| 1503 |
name = "safetensors"
|
| 1504 |
version = "0.5.3"
|
|
|
|
| 1573 |
{ url = "https://files.pythonhosted.org/packages/0a/c8/b3f566db71461cabd4b2d5b39bcc24a7e1c119535c8361f81426be39bb47/scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db", size = 40477705 },
|
| 1574 |
]
|
| 1575 |
|
| 1576 |
+
[[package]]
|
| 1577 |
+
name = "semantic-version"
|
| 1578 |
+
version = "2.10.0"
|
| 1579 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1580 |
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289 }
|
| 1581 |
+
wheels = [
|
| 1582 |
+
{ url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552 },
|
| 1583 |
+
]
|
| 1584 |
+
|
| 1585 |
+
[[package]]
|
| 1586 |
+
name = "sentry-sdk"
|
| 1587 |
+
version = "2.25.1"
|
| 1588 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1589 |
+
dependencies = [
|
| 1590 |
+
{ name = "certifi" },
|
| 1591 |
+
{ name = "urllib3" },
|
| 1592 |
+
]
|
| 1593 |
+
sdist = { url = "https://files.pythonhosted.org/packages/85/2f/a0f732270cc7c1834f5ec45539aec87c360d5483a8bd788217a9102ccfbd/sentry_sdk-2.25.1.tar.gz", hash = "sha256:f9041b7054a7cf12d41eadabe6458ce7c6d6eea7a97cfe1b760b6692e9562cf0", size = 322190 }
|
| 1594 |
+
wheels = [
|
| 1595 |
+
{ url = "https://files.pythonhosted.org/packages/96/b6/84049ab0967affbc7cc7590d86ae0170c1b494edb69df8786707100420e5/sentry_sdk-2.25.1-py2.py3-none-any.whl", hash = "sha256:60b016d0772789454dc55a284a6a44212044d4a16d9f8448725effee97aaf7f6", size = 339851 },
|
| 1596 |
+
]
|
| 1597 |
+
|
| 1598 |
[[package]]
|
| 1599 |
name = "setuptools"
|
| 1600 |
version = "78.1.0"
|
|
|
|
| 1604 |
{ url = "https://files.pythonhosted.org/packages/54/21/f43f0a1fa8b06b32812e0975981f4677d28e0f3271601dc88ac5a5b83220/setuptools-78.1.0-py3-none-any.whl", hash = "sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8", size = 1256108 },
|
| 1605 |
]
|
| 1606 |
|
| 1607 |
+
[[package]]
|
| 1608 |
+
name = "simplejson"
|
| 1609 |
+
version = "3.20.1"
|
| 1610 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1611 |
+
sdist = { url = "https://files.pythonhosted.org/packages/af/92/51b417685abd96b31308b61b9acce7ec50d8e1de8fbc39a7fd4962c60689/simplejson-3.20.1.tar.gz", hash = "sha256:e64139b4ec4f1f24c142ff7dcafe55a22b811a74d86d66560c8815687143037d", size = 85591 }
|
| 1612 |
+
wheels = [
|
| 1613 |
+
{ url = "https://files.pythonhosted.org/packages/c4/03/0f453a27877cb5a5fff16a975925f4119102cc8552f52536b9a98ef0431e/simplejson-3.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:71e849e7ceb2178344998cbe5ade101f1b329460243c79c27fbfc51c0447a7c3", size = 93109 },
|
| 1614 |
+
{ url = "https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29", size = 75475 },
|
| 1615 |
+
{ url = "https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb", size = 75112 },
|
| 1616 |
+
{ url = "https://files.pythonhosted.org/packages/45/86/ea9835abb646755140e2d482edc9bc1e91997ed19a59fd77ae4c6a0facea/simplejson-3.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1336ba7bcb722ad487cd265701ff0583c0bb6de638364ca947bb84ecc0015d1", size = 150245 },
|
| 1617 |
+
{ url = "https://files.pythonhosted.org/packages/12/b4/53084809faede45da829fe571c65fbda8479d2a5b9c633f46b74124d56f5/simplejson-3.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e975aac6a5acd8b510eba58d5591e10a03e3d16c1cf8a8624ca177491f7230f0", size = 158465 },
|
| 1618 |
+
{ url = "https://files.pythonhosted.org/packages/a9/7d/d56579468d1660b3841e1f21c14490d103e33cf911886b22652d6e9683ec/simplejson-3.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a6dd11ee282937ad749da6f3b8d87952ad585b26e5edfa10da3ae2536c73078", size = 148514 },
|
| 1619 |
+
{ url = "https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6", size = 152262 },
|
| 1620 |
+
{ url = "https://files.pythonhosted.org/packages/32/84/f0fdb3625292d945c2bd13a814584603aebdb38cfbe5fe9be6b46fe598c4/simplejson-3.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f5aee2a4cb6b146bd17333ac623610f069f34e8f31d2f4f0c1a2186e50c594f0", size = 150164 },
|
| 1621 |
+
{ url = "https://files.pythonhosted.org/packages/95/51/6d625247224f01eaaeabace9aec75ac5603a42f8ebcce02c486fbda8b428/simplejson-3.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:652d8eecbb9a3b6461b21ec7cf11fd0acbab144e45e600c817ecf18e4580b99e", size = 151795 },
|
| 1622 |
+
{ url = "https://files.pythonhosted.org/packages/7f/d9/bb921df6b35be8412f519e58e86d1060fddf3ad401b783e4862e0a74c4c1/simplejson-3.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8c09948f1a486a89251ee3a67c9f8c969b379f6ffff1a6064b41fea3bce0a112", size = 159027 },
|
| 1623 |
+
{ url = "https://files.pythonhosted.org/packages/03/c5/5950605e4ad023a6621cf4c931b29fd3d2a9c1f36be937230bfc83d7271d/simplejson-3.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cbbd7b215ad4fc6f058b5dd4c26ee5c59f72e031dfda3ac183d7968a99e4ca3a", size = 154380 },
|
| 1624 |
+
{ url = "https://files.pythonhosted.org/packages/66/ad/b74149557c5ec1e4e4d55758bda426f5d2ec0123cd01a53ae63b8de51fa3/simplejson-3.20.1-cp313-cp313-win32.whl", hash = "sha256:ae81e482476eaa088ef9d0120ae5345de924f23962c0c1e20abbdff597631f87", size = 74102 },
|
| 1625 |
+
{ url = "https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc", size = 75736 },
|
| 1626 |
+
{ url = "https://files.pythonhosted.org/packages/4b/30/00f02a0a921556dd5a6db1ef2926a1bc7a8bbbfb1c49cfed68a275b8ab2b/simplejson-3.20.1-py3-none-any.whl", hash = "sha256:8a6c1bbac39fa4a79f83cbf1df6ccd8ff7069582a9fd8db1e52cea073bc2c697", size = 57121 },
|
| 1627 |
+
]
|
| 1628 |
+
|
| 1629 |
[[package]]
|
| 1630 |
name = "six"
|
| 1631 |
version = "1.17.0"
|
|
|
|
| 1635 |
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
|
| 1636 |
]
|
| 1637 |
|
| 1638 |
+
[[package]]
|
| 1639 |
+
name = "smmap"
|
| 1640 |
+
version = "5.0.2"
|
| 1641 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1642 |
+
sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 }
|
| 1643 |
+
wheels = [
|
| 1644 |
+
{ url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 },
|
| 1645 |
+
]
|
| 1646 |
+
|
| 1647 |
[[package]]
|
| 1648 |
name = "stack-data"
|
| 1649 |
version = "0.6.3"
|
|
|
|
| 1658 |
{ url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 },
|
| 1659 |
]
|
| 1660 |
|
| 1661 |
+
[[package]]
|
| 1662 |
+
name = "streamlit"
|
| 1663 |
+
version = "1.44.1"
|
| 1664 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1665 |
+
dependencies = [
|
| 1666 |
+
{ name = "altair" },
|
| 1667 |
+
{ name = "blinker" },
|
| 1668 |
+
{ name = "cachetools" },
|
| 1669 |
+
{ name = "click" },
|
| 1670 |
+
{ name = "gitpython" },
|
| 1671 |
+
{ name = "numpy" },
|
| 1672 |
+
{ name = "packaging" },
|
| 1673 |
+
{ name = "pandas" },
|
| 1674 |
+
{ name = "pillow" },
|
| 1675 |
+
{ name = "protobuf" },
|
| 1676 |
+
{ name = "pyarrow" },
|
| 1677 |
+
{ name = "pydeck" },
|
| 1678 |
+
{ name = "requests" },
|
| 1679 |
+
{ name = "tenacity" },
|
| 1680 |
+
{ name = "toml" },
|
| 1681 |
+
{ name = "tornado" },
|
| 1682 |
+
{ name = "typing-extensions" },
|
| 1683 |
+
{ name = "watchdog", marker = "sys_platform != 'darwin'" },
|
| 1684 |
+
]
|
| 1685 |
+
sdist = { url = "https://files.pythonhosted.org/packages/3e/c0/7286284567e5045f0c587c426d0c41aee5d10c0a2e360e627a83037e9f0c/streamlit-1.44.1.tar.gz", hash = "sha256:c6914ed6d5b76870b461510476806db370f36425ae0e6654d227c988288198d3", size = 9423685 }
|
| 1686 |
+
wheels = [
|
| 1687 |
+
{ url = "https://files.pythonhosted.org/packages/eb/17/fc425e1d4d86e31b2aaf0812a2ef2163763a0670d671720c7c36e8679323/streamlit-1.44.1-py3-none-any.whl", hash = "sha256:9fe355f58b11f4eb71e74f115ce1f38c4c9eaff2733e6bcffb510ac1298a5990", size = 9812242 },
|
| 1688 |
+
]
|
| 1689 |
+
|
| 1690 |
[[package]]
|
| 1691 |
name = "sympy"
|
| 1692 |
version = "1.13.1"
|
|
|
|
| 1699 |
{ url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 },
|
| 1700 |
]
|
| 1701 |
|
| 1702 |
+
[[package]]
|
| 1703 |
+
name = "tenacity"
|
| 1704 |
+
version = "9.1.2"
|
| 1705 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1706 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 }
|
| 1707 |
+
wheels = [
|
| 1708 |
+
{ url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 },
|
| 1709 |
+
]
|
| 1710 |
+
|
| 1711 |
[[package]]
|
| 1712 |
name = "threadpoolctl"
|
| 1713 |
version = "3.6.0"
|
|
|
|
| 1742 |
{ url = "https://files.pythonhosted.org/packages/e6/b6/072a8e053ae600dcc2ac0da81a23548e3b523301a442a6ca900e92ac35be/tokenizers-0.21.1-cp39-abi3-win_amd64.whl", hash = "sha256:0f0dcbcc9f6e13e675a66d7a5f2f225a736745ce484c1a4e07476a89ccdad382", size = 2435481 },
|
| 1743 |
]
|
| 1744 |
|
| 1745 |
+
[[package]]
|
| 1746 |
+
name = "toml"
|
| 1747 |
+
version = "0.10.2"
|
| 1748 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1749 |
+
sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 }
|
| 1750 |
+
wheels = [
|
| 1751 |
+
{ url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 },
|
| 1752 |
+
]
|
| 1753 |
+
|
| 1754 |
[[package]]
|
| 1755 |
name = "torch"
|
| 1756 |
version = "2.6.0"
|
|
|
|
| 1880 |
{ url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 },
|
| 1881 |
]
|
| 1882 |
|
| 1883 |
+
[[package]]
|
| 1884 |
+
name = "watchdog"
|
| 1885 |
+
version = "6.0.0"
|
| 1886 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1887 |
+
sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 }
|
| 1888 |
+
wheels = [
|
| 1889 |
+
{ url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 },
|
| 1890 |
+
{ url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 },
|
| 1891 |
+
{ url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 },
|
| 1892 |
+
{ url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 },
|
| 1893 |
+
{ url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 },
|
| 1894 |
+
{ url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 },
|
| 1895 |
+
{ url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 },
|
| 1896 |
+
{ url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 },
|
| 1897 |
+
{ url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 },
|
| 1898 |
+
{ url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 },
|
| 1899 |
+
]
|
| 1900 |
+
|
| 1901 |
[[package]]
|
| 1902 |
name = "wcwidth"
|
| 1903 |
version = "0.2.13"
|
|
|
|
| 1907 |
{ url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 },
|
| 1908 |
]
|
| 1909 |
|
| 1910 |
+
[[package]]
|
| 1911 |
+
name = "widgetsnbextension"
|
| 1912 |
+
version = "4.0.13"
|
| 1913 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1914 |
+
sdist = { url = "https://files.pythonhosted.org/packages/56/fc/238c424fd7f4ebb25f8b1da9a934a3ad7c848286732ae04263661eb0fc03/widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6", size = 1164730 }
|
| 1915 |
+
wheels = [
|
| 1916 |
+
{ url = "https://files.pythonhosted.org/packages/21/02/88b65cc394961a60c43c70517066b6b679738caf78506a5da7b88ffcb643/widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71", size = 2335872 },
|
| 1917 |
+
]
|
| 1918 |
+
|
| 1919 |
+
[[package]]
|
| 1920 |
+
name = "win32-setctime"
|
| 1921 |
+
version = "1.2.0"
|
| 1922 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1923 |
+
sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 }
|
| 1924 |
+
wheels = [
|
| 1925 |
+
{ url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 },
|
| 1926 |
+
]
|
| 1927 |
+
|
| 1928 |
+
[[package]]
|
| 1929 |
+
name = "wrapt"
|
| 1930 |
+
version = "1.17.2"
|
| 1931 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1932 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 }
|
| 1933 |
+
wheels = [
|
| 1934 |
+
{ url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 },
|
| 1935 |
+
{ url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 },
|
| 1936 |
+
{ url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 },
|
| 1937 |
+
{ url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 },
|
| 1938 |
+
{ url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 },
|
| 1939 |
+
{ url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 },
|
| 1940 |
+
{ url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 },
|
| 1941 |
+
{ url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 },
|
| 1942 |
+
{ url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 },
|
| 1943 |
+
{ url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 },
|
| 1944 |
+
{ url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 },
|
| 1945 |
+
{ url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 },
|
| 1946 |
+
{ url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 },
|
| 1947 |
+
{ url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 },
|
| 1948 |
+
{ url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 },
|
| 1949 |
+
{ url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 },
|
| 1950 |
+
{ url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 },
|
| 1951 |
+
{ url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 },
|
| 1952 |
+
{ url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 },
|
| 1953 |
+
{ url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 },
|
| 1954 |
+
{ url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 },
|
| 1955 |
+
{ url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 },
|
| 1956 |
+
{ url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 },
|
| 1957 |
+
]
|
| 1958 |
+
|
| 1959 |
+
[[package]]
|
| 1960 |
+
name = "wurlitzer"
|
| 1961 |
+
version = "3.1.1"
|
| 1962 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1963 |
+
sdist = { url = "https://files.pythonhosted.org/packages/33/90/623f99c55c7d0727a58eb2b7dfb65cb406c561a5c2e9a95b0d6a450c473d/wurlitzer-3.1.1.tar.gz", hash = "sha256:bfb9144ab9f02487d802b9ff89dbd3fa382d08f73e12db8adc4c2fb00cd39bd9", size = 11867 }
|
| 1964 |
+
wheels = [
|
| 1965 |
+
{ url = "https://files.pythonhosted.org/packages/9a/24/93ce54550a9dd3fd996ed477f00221f215bf6da3580397fbc138d6036e2e/wurlitzer-3.1.1-py3-none-any.whl", hash = "sha256:0b2749c2cde3ef640bf314a9f94b24d929fe1ca476974719a6909dfc568c3aac", size = 8590 },
|
| 1966 |
+
]
|
| 1967 |
+
|
| 1968 |
[[package]]
|
| 1969 |
name = "xxhash"
|
| 1970 |
version = "3.5.0"
|