Spaces:
Sleeping
Sleeping
tidy: ruff autofixes
Browse files- TODO.md +1 -2
- app.py +9 -18
- pstuts_rag/pstuts_rag/datastore.py +9 -15
- pstuts_rag/pstuts_rag/evaluator_utils.py +9 -12
- pstuts_rag/pstuts_rag/nodes.py +11 -16
- pstuts_rag/pstuts_rag/rag_for_transcripts.py +7 -16
- pstuts_rag/pstuts_rag/state.py +4 -4
- pstuts_rag/pstuts_rag/utils.py +8 -19
- pyproject.toml +6 -11
- uv.lock +2 -73
TODO.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
# π TODOs in Codebase
|
| 2 |
|
| 3 |
-
- `./app.py:
|
| 4 |
-
- `./app.py:254:# TODO: This should be fixed - new comment`
|
| 5 |
|
| 6 |
Keep up the great work! π
|
|
|
|
| 1 |
# π TODOs in Codebase
|
| 2 |
|
| 3 |
+
- `./app.py:245:# TODO: Clean up imports.`
|
|
|
|
| 4 |
|
| 5 |
Keep up the great work! π
|
app.py
CHANGED
|
@@ -1,26 +1,22 @@
|
|
| 1 |
-
from pstuts_rag.configuration import Configuration
|
| 2 |
import asyncio
|
| 3 |
-
|
| 4 |
import signal
|
|
|
|
| 5 |
from datetime import datetime
|
|
|
|
|
|
|
| 6 |
|
| 7 |
import chainlit as cl
|
|
|
|
|
|
|
| 8 |
from dotenv import load_dotenv
|
| 9 |
-
|
| 10 |
-
from langgraph.checkpoint.memory import MemorySaver
|
| 11 |
-
|
| 12 |
from langchain_core.runnables import Runnable
|
|
|
|
| 13 |
|
|
|
|
| 14 |
from pstuts_rag.datastore import Datastore
|
| 15 |
from pstuts_rag.nodes import FinalAnswer, TutorialState, initialize
|
| 16 |
-
|
| 17 |
-
import nest_asyncio
|
| 18 |
-
from uuid import uuid4
|
| 19 |
-
|
| 20 |
-
import logging
|
| 21 |
-
|
| 22 |
from pstuts_rag.utils import get_unique
|
| 23 |
-
import httpx
|
| 24 |
|
| 25 |
# Track the single active session
|
| 26 |
active_session = {"id": None, "timestamp": None}
|
|
@@ -113,7 +109,7 @@ def format_video_reference(doc: Document):
|
|
| 113 |
display="side",
|
| 114 |
)
|
| 115 |
video_message = cl.Message(
|
| 116 |
-
content=f
|
| 117 |
elements=[video_link],
|
| 118 |
)
|
| 119 |
|
|
@@ -246,14 +242,9 @@ class ChainlitCallbackHandler(BaseCallbackHandler):
|
|
| 246 |
print(f"Error in on_chain_error: {e}")
|
| 247 |
|
| 248 |
|
| 249 |
-
import time
|
| 250 |
-
|
| 251 |
# TODO: Clean up imports.
|
| 252 |
|
| 253 |
|
| 254 |
-
# TODO: This should be fixed - new comment
|
| 255 |
-
|
| 256 |
-
|
| 257 |
@cl.on_message
|
| 258 |
async def main(input_message: cl.Message):
|
| 259 |
"""
|
|
|
|
|
|
|
| 1 |
import asyncio
|
| 2 |
+
import logging
|
| 3 |
import signal
|
| 4 |
+
import time
|
| 5 |
from datetime import datetime
|
| 6 |
+
from typing import cast
|
| 7 |
+
from uuid import uuid4
|
| 8 |
|
| 9 |
import chainlit as cl
|
| 10 |
+
import httpx
|
| 11 |
+
import nest_asyncio
|
| 12 |
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
|
|
| 13 |
from langchain_core.runnables import Runnable
|
| 14 |
+
from langgraph.checkpoint.memory import MemorySaver
|
| 15 |
|
| 16 |
+
from pstuts_rag.configuration import Configuration
|
| 17 |
from pstuts_rag.datastore import Datastore
|
| 18 |
from pstuts_rag.nodes import FinalAnswer, TutorialState, initialize
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
from pstuts_rag.utils import get_unique
|
|
|
|
| 20 |
|
| 21 |
# Track the single active session
|
| 22 |
active_session = {"id": None, "timestamp": None}
|
|
|
|
| 109 |
display="side",
|
| 110 |
)
|
| 111 |
video_message = cl.Message(
|
| 112 |
+
content=f"πΌ Watch {video_link.name} (_@ {v['start_min']}_)", # text has to include video name
|
| 113 |
elements=[video_link],
|
| 114 |
)
|
| 115 |
|
|
|
|
| 242 |
print(f"Error in on_chain_error: {e}")
|
| 243 |
|
| 244 |
|
|
|
|
|
|
|
| 245 |
# TODO: Clean up imports.
|
| 246 |
|
| 247 |
|
|
|
|
|
|
|
|
|
|
| 248 |
@cl.on_message
|
| 249 |
async def main(input_message: cl.Message):
|
| 250 |
"""
|
pstuts_rag/pstuts_rag/datastore.py
CHANGED
|
@@ -1,32 +1,26 @@
|
|
| 1 |
import asyncio
|
| 2 |
import atexit
|
| 3 |
-
import json
|
| 4 |
import glob
|
| 5 |
-
import
|
| 6 |
-
from pathlib import Path
|
| 7 |
-
from typing import List, Dict, Iterator, Any, Callable, Optional, Self
|
| 8 |
-
import uuid
|
| 9 |
import logging
|
| 10 |
import threading
|
|
|
|
|
|
|
| 11 |
|
|
|
|
| 12 |
import chainlit as cl
|
| 13 |
-
from langchain_core.document_loaders import BaseLoader
|
| 14 |
-
from langchain_experimental.text_splitter import SemanticChunker
|
| 15 |
-
from langchain_huggingface import HuggingFaceEmbeddings
|
| 16 |
-
from langchain_openai.embeddings import OpenAIEmbeddings
|
| 17 |
-
from langchain_ollama.embeddings import OllamaEmbeddings
|
| 18 |
from langchain_core.documents import Document
|
| 19 |
from langchain_core.embeddings import Embeddings
|
| 20 |
-
|
| 21 |
from langchain_core.vectorstores import VectorStoreRetriever
|
| 22 |
-
|
| 23 |
from langchain_qdrant import QdrantVectorStore
|
| 24 |
-
from
|
| 25 |
from qdrant_client import QdrantClient
|
| 26 |
from qdrant_client.http.models import Distance, VectorParams
|
| 27 |
from qdrant_client.models import PointStruct
|
| 28 |
-
|
| 29 |
-
from
|
|
|
|
| 30 |
|
| 31 |
|
| 32 |
class QdrantClientSingleton:
|
|
|
|
| 1 |
import asyncio
|
| 2 |
import atexit
|
|
|
|
| 3 |
import glob
|
| 4 |
+
import json
|
|
|
|
|
|
|
|
|
|
| 5 |
import logging
|
| 6 |
import threading
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
from typing import Any, Callable, Dict, Iterator, List, Optional, Self
|
| 9 |
|
| 10 |
+
import aiofiles
|
| 11 |
import chainlit as cl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
from langchain_core.documents import Document
|
| 13 |
from langchain_core.embeddings import Embeddings
|
|
|
|
| 14 |
from langchain_core.vectorstores import VectorStoreRetriever
|
| 15 |
+
from langchain_experimental.text_splitter import SemanticChunker
|
| 16 |
from langchain_qdrant import QdrantVectorStore
|
| 17 |
+
from pathvalidate import sanitize_filename, sanitize_filepath
|
| 18 |
from qdrant_client import QdrantClient
|
| 19 |
from qdrant_client.http.models import Distance, VectorParams
|
| 20 |
from qdrant_client.models import PointStruct
|
| 21 |
+
|
| 22 |
+
from pstuts_rag.configuration import Configuration
|
| 23 |
+
from pstuts_rag.utils import batch, flatten, get_embeddings_api
|
| 24 |
|
| 25 |
|
| 26 |
class QdrantClientSingleton:
|
pstuts_rag/pstuts_rag/evaluator_utils.py
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
|
|
| 1 |
import uuid
|
| 2 |
-
import pandas as pd
|
| 3 |
-
import numpy as np
|
| 4 |
from functools import partial
|
| 5 |
-
from
|
| 6 |
-
|
| 7 |
-
from typing import Set, Tuple, Dict, List
|
| 8 |
-
from sklearn.model_selection import train_test_split
|
| 9 |
import bidict
|
| 10 |
-
from typing import Mapping
|
| 11 |
-
from itertools import chain
|
| 12 |
-
import asyncio
|
| 13 |
-
from typing import Optional
|
| 14 |
-
from tqdm import tqdm
|
| 15 |
-
from .datastore import batch
|
| 16 |
import numpy as np
|
|
|
|
|
|
|
|
|
|
| 17 |
from scipy.stats import norm
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
|
| 20 |
async def apply_rag_chain_inplace(
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
import uuid
|
|
|
|
|
|
|
| 3 |
from functools import partial
|
| 4 |
+
from typing import Dict, Mapping, Set, Tuple
|
| 5 |
+
|
|
|
|
|
|
|
| 6 |
import bidict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
import numpy as np
|
| 8 |
+
import pandas as pd
|
| 9 |
+
from langchain_core.runnables import Runnable
|
| 10 |
+
from ragas import EvaluationDataset
|
| 11 |
from scipy.stats import norm
|
| 12 |
+
from sklearn.model_selection import train_test_split
|
| 13 |
+
|
| 14 |
+
from .datastore import batch
|
| 15 |
|
| 16 |
|
| 17 |
async def apply_rag_chain_inplace(
|
pstuts_rag/pstuts_rag/nodes.py
CHANGED
|
@@ -1,32 +1,27 @@
|
|
| 1 |
# nodes.py
|
| 2 |
-
from enum import Enum
|
| 3 |
-
from typing import Annotated, Any, Callable, Dict, Literal, Tuple, Union
|
| 4 |
-
import functools
|
| 5 |
import asyncio
|
| 6 |
-
import
|
| 7 |
import logging
|
| 8 |
import operator
|
| 9 |
-
|
| 10 |
-
from
|
| 11 |
-
from
|
|
|
|
|
|
|
| 12 |
from langchain_core.documents import Document
|
|
|
|
| 13 |
from langchain_core.runnables import RunnableConfig
|
| 14 |
-
from langchain_core.messages import HumanMessage, AIMessage, BaseMessage
|
| 15 |
-
from langgraph.checkpoint.memory import MemorySaver
|
| 16 |
-
from numpy import add
|
| 17 |
-
from langchain_community.tools.tavily_search import TavilySearchResults
|
| 18 |
from langchain_tavily import TavilyExtract
|
| 19 |
-
|
| 20 |
-
from pydantic import BaseModel, Field, HttpUrl
|
| 21 |
-
|
| 22 |
-
from langgraph.types import interrupt
|
| 23 |
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
from pstuts_rag.utils import get_chat_api, get_title_streaming
|
| 26 |
from pstuts_rag.configuration import Configuration
|
| 27 |
from pstuts_rag.datastore import Datastore
|
| 28 |
from pstuts_rag.prompts import NODE_PROMPTS
|
| 29 |
from pstuts_rag.rag_for_transcripts import create_transcript_rag_chain
|
|
|
|
| 30 |
|
| 31 |
|
| 32 |
class YesNoAsk(Enum):
|
|
|
|
| 1 |
# nodes.py
|
|
|
|
|
|
|
|
|
|
| 2 |
import asyncio
|
| 3 |
+
import functools
|
| 4 |
import logging
|
| 5 |
import operator
|
| 6 |
+
import os
|
| 7 |
+
from enum import Enum
|
| 8 |
+
from typing import Annotated, Dict, Literal, Tuple
|
| 9 |
+
|
| 10 |
+
from langchain_community.tools.tavily_search import TavilySearchResults
|
| 11 |
from langchain_core.documents import Document
|
| 12 |
+
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
|
| 13 |
from langchain_core.runnables import RunnableConfig
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
from langchain_tavily import TavilyExtract
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
from langgraph.checkpoint.memory import MemorySaver
|
| 16 |
+
from langgraph.graph import END, START, MessagesState, StateGraph
|
| 17 |
+
from langgraph.types import interrupt
|
| 18 |
+
from pydantic import BaseModel, Field, HttpUrl
|
| 19 |
|
|
|
|
| 20 |
from pstuts_rag.configuration import Configuration
|
| 21 |
from pstuts_rag.datastore import Datastore
|
| 22 |
from pstuts_rag.prompts import NODE_PROMPTS
|
| 23 |
from pstuts_rag.rag_for_transcripts import create_transcript_rag_chain
|
| 24 |
+
from pstuts_rag.utils import get_chat_api, get_title_streaming
|
| 25 |
|
| 26 |
|
| 27 |
class YesNoAsk(Enum):
|
pstuts_rag/pstuts_rag/rag_for_transcripts.py
CHANGED
|
@@ -1,28 +1,24 @@
|
|
| 1 |
-
import functools
|
| 2 |
import json
|
| 3 |
-
import asyncio
|
| 4 |
-
from operator import itemgetter
|
| 5 |
-
from typing import Any, Dict, Union, Optional, Callable
|
| 6 |
-
import logging
|
| 7 |
import re
|
|
|
|
|
|
|
| 8 |
|
| 9 |
from langchain.prompts import ChatPromptTemplate
|
| 10 |
from langchain_core.messages import AIMessage
|
| 11 |
from langchain_core.runnables import (
|
| 12 |
Runnable,
|
| 13 |
-
RunnableParallel,
|
| 14 |
-
RunnablePassthrough,
|
| 15 |
RunnableConfig,
|
| 16 |
RunnableLambda,
|
|
|
|
|
|
|
| 17 |
)
|
| 18 |
from langchain_openai import ChatOpenAI
|
| 19 |
-
|
| 20 |
-
from
|
|
|
|
| 21 |
|
| 22 |
from .datastore import Datastore
|
| 23 |
from .prompts import RAG_PROMPT_TEMPLATES
|
| 24 |
-
from pstuts_rag.utils import ChatAPISelector
|
| 25 |
-
from pstuts_rag.configuration import Configuration, ModelAPI
|
| 26 |
|
| 27 |
|
| 28 |
def post_process_response(
|
|
@@ -57,11 +53,6 @@ def post_process_response(
|
|
| 57 |
if configurable.eva_strip_think
|
| 58 |
else answer.content
|
| 59 |
)
|
| 60 |
-
# Only append references if the model provided a substantive answer
|
| 61 |
-
# if "I don't know" not in answer.content:
|
| 62 |
-
# text_w_references = "\n".join(
|
| 63 |
-
# [str(text_w_references), "**REFERENCES**", references]
|
| 64 |
-
# )
|
| 65 |
|
| 66 |
if "I don't know." in answer_text:
|
| 67 |
attachments = []
|
|
|
|
|
|
|
| 1 |
import json
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
import re
|
| 3 |
+
from operator import itemgetter
|
| 4 |
+
from typing import Any, Dict
|
| 5 |
|
| 6 |
from langchain.prompts import ChatPromptTemplate
|
| 7 |
from langchain_core.messages import AIMessage
|
| 8 |
from langchain_core.runnables import (
|
| 9 |
Runnable,
|
|
|
|
|
|
|
| 10 |
RunnableConfig,
|
| 11 |
RunnableLambda,
|
| 12 |
+
RunnableParallel,
|
| 13 |
+
RunnablePassthrough,
|
| 14 |
)
|
| 15 |
from langchain_openai import ChatOpenAI
|
| 16 |
+
|
| 17 |
+
from pstuts_rag.configuration import Configuration
|
| 18 |
+
from pstuts_rag.utils import ChatAPISelector
|
| 19 |
|
| 20 |
from .datastore import Datastore
|
| 21 |
from .prompts import RAG_PROMPT_TEMPLATES
|
|
|
|
|
|
|
| 22 |
|
| 23 |
|
| 24 |
def post_process_response(
|
|
|
|
| 53 |
if configurable.eva_strip_think
|
| 54 |
else answer.content
|
| 55 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
if "I don't know." in answer_text:
|
| 58 |
attachments = []
|
pstuts_rag/pstuts_rag/state.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
-
from pydantic import BaseModel, Field
|
| 2 |
-
from langchain_core.messages import BaseMessage
|
| 3 |
-
from typing import List, Optional, Tuple, Dict, Annotated
|
| 4 |
-
|
| 5 |
import operator
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
|
| 8 |
class PsTutsTeamState(BaseModel):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import operator
|
| 2 |
+
from typing import Annotated, Dict, List, Optional, Tuple
|
| 3 |
+
|
| 4 |
+
from langchain_core.messages import BaseMessage
|
| 5 |
+
from pydantic import BaseModel, Field
|
| 6 |
|
| 7 |
|
| 8 |
class PsTutsTeamState(BaseModel):
|
pstuts_rag/pstuts_rag/utils.py
CHANGED
|
@@ -1,27 +1,16 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
from
|
| 4 |
-
from langchain_openai.embeddings import OpenAIEmbeddings
|
| 5 |
-
|
| 6 |
-
from langchain_huggingface import ChatHuggingFace
|
| 7 |
-
from langchain_huggingface import HuggingFaceEmbeddings
|
| 8 |
|
|
|
|
|
|
|
|
|
|
| 9 |
from langchain_ollama import ChatOllama
|
| 10 |
from langchain_ollama.embeddings import OllamaEmbeddings
|
|
|
|
|
|
|
| 11 |
|
| 12 |
from pstuts_rag.configuration import ModelAPI
|
| 13 |
-
import logging
|
| 14 |
-
|
| 15 |
-
from contextvars import ContextVar
|
| 16 |
-
from functools import wraps
|
| 17 |
-
from typing import Callable, Optional
|
| 18 |
-
import time
|
| 19 |
-
import traceback
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
import requests
|
| 23 |
-
import re
|
| 24 |
-
from bs4 import BeautifulSoup
|
| 25 |
|
| 26 |
# Chat model selector dictionary
|
| 27 |
ChatAPISelector: Dict[
|
|
|
|
| 1 |
+
import logging
|
| 2 |
+
import re
|
| 3 |
+
from typing import Any, Dict, Iterator, List, Type
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
+
import requests
|
| 6 |
+
from bs4 import BeautifulSoup
|
| 7 |
+
from langchain_huggingface import ChatHuggingFace, HuggingFaceEmbeddings
|
| 8 |
from langchain_ollama import ChatOllama
|
| 9 |
from langchain_ollama.embeddings import OllamaEmbeddings
|
| 10 |
+
from langchain_openai import ChatOpenAI
|
| 11 |
+
from langchain_openai.embeddings import OpenAIEmbeddings
|
| 12 |
|
| 13 |
from pstuts_rag.configuration import ModelAPI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
# Chat model selector dictionary
|
| 16 |
ChatAPISelector: Dict[
|
pyproject.toml
CHANGED
|
@@ -53,8 +53,6 @@ dependencies = [
|
|
| 53 |
"beautifulsoup4>=4.13.4",
|
| 54 |
"pathvalidate>=3.2.3",
|
| 55 |
"pydantic-settings>=2.9.1",
|
| 56 |
-
"flake8-todos>=0.3.1",
|
| 57 |
-
"ruff>=0.11.0",
|
| 58 |
]
|
| 59 |
authors = [{ name = "Marko Budisic", email = "[email protected]" }]
|
| 60 |
license = "MIT"
|
|
@@ -70,13 +68,11 @@ packages = ["pstuts_rag/pstuts_rag"]
|
|
| 70 |
dev = [
|
| 71 |
"pytest>=7.0.0",
|
| 72 |
"black>=22.0.0",
|
| 73 |
-
"flake8>=4.0.0",
|
| 74 |
-
"flake8-todos>=0.3.1",
|
| 75 |
"mypy>=0.900",
|
| 76 |
-
"isort>=6.0.1",
|
| 77 |
"pylint-venv>=3.0.4",
|
| 78 |
"ipdb>=0.13.13",
|
| 79 |
"deptry>=0.23.0",
|
|
|
|
| 80 |
]
|
| 81 |
|
| 82 |
web = [
|
|
@@ -92,13 +88,12 @@ line-length = 79
|
|
| 92 |
target-version = "py311"
|
| 93 |
|
| 94 |
[tool.ruff.lint]
|
| 95 |
-
select = ["E", "F", "I", "N", "W"]
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
|
|
|
| 99 |
|
| 100 |
-
[tool.ruff.isort]
|
| 101 |
-
known-first-party = ["src"]
|
| 102 |
|
| 103 |
[tool.black]
|
| 104 |
line-length = 79
|
|
|
|
| 53 |
"beautifulsoup4>=4.13.4",
|
| 54 |
"pathvalidate>=3.2.3",
|
| 55 |
"pydantic-settings>=2.9.1",
|
|
|
|
|
|
|
| 56 |
]
|
| 57 |
authors = [{ name = "Marko Budisic", email = "[email protected]" }]
|
| 58 |
license = "MIT"
|
|
|
|
| 68 |
dev = [
|
| 69 |
"pytest>=7.0.0",
|
| 70 |
"black>=22.0.0",
|
|
|
|
|
|
|
| 71 |
"mypy>=0.900",
|
|
|
|
| 72 |
"pylint-venv>=3.0.4",
|
| 73 |
"ipdb>=0.13.13",
|
| 74 |
"deptry>=0.23.0",
|
| 75 |
+
"ruff"
|
| 76 |
]
|
| 77 |
|
| 78 |
web = [
|
|
|
|
| 88 |
target-version = "py311"
|
| 89 |
|
| 90 |
[tool.ruff.lint]
|
| 91 |
+
select = ["E", "F", "I", "N", "W", "TD"]
|
| 92 |
+
fixable = ["I", "E", "F", "W", "B"]
|
| 93 |
+
|
| 94 |
+
[tool.ruff.lint.isort]
|
| 95 |
+
known-first-party = ["pstuts_rag"]
|
| 96 |
|
|
|
|
|
|
|
| 97 |
|
| 98 |
[tool.black]
|
| 99 |
line-length = 79
|
uv.lock
CHANGED
|
@@ -781,33 +781,6 @@ wheels = [
|
|
| 781 |
{ url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970 },
|
| 782 |
]
|
| 783 |
|
| 784 |
-
[[package]]
|
| 785 |
-
name = "flake8"
|
| 786 |
-
version = "7.2.0"
|
| 787 |
-
source = { registry = "https://pypi.org/simple" }
|
| 788 |
-
dependencies = [
|
| 789 |
-
{ name = "mccabe" },
|
| 790 |
-
{ name = "pycodestyle" },
|
| 791 |
-
{ name = "pyflakes" },
|
| 792 |
-
]
|
| 793 |
-
sdist = { url = "https://files.pythonhosted.org/packages/e7/c4/5842fc9fc94584c455543540af62fd9900faade32511fab650e9891ec225/flake8-7.2.0.tar.gz", hash = "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426", size = 48177 }
|
| 794 |
-
wheels = [
|
| 795 |
-
{ url = "https://files.pythonhosted.org/packages/83/5c/0627be4c9976d56b1217cb5187b7504e7fd7d3503f8bfd312a04077bd4f7/flake8-7.2.0-py2.py3-none-any.whl", hash = "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343", size = 57786 },
|
| 796 |
-
]
|
| 797 |
-
|
| 798 |
-
[[package]]
|
| 799 |
-
name = "flake8-todos"
|
| 800 |
-
version = "0.3.1"
|
| 801 |
-
source = { registry = "https://pypi.org/simple" }
|
| 802 |
-
dependencies = [
|
| 803 |
-
{ name = "flake8" },
|
| 804 |
-
{ name = "pycodestyle" },
|
| 805 |
-
]
|
| 806 |
-
sdist = { url = "https://files.pythonhosted.org/packages/88/69/e4ecde7f50c3c874046f03dc7bda67d7be8e7cc28380f3f44c07456b45ad/flake8_todos-0.3.1.tar.gz", hash = "sha256:942101a08f831d7d9f7d864d86169f3bcfaf8b6d56a004c0280eb51725266b16", size = 7851 }
|
| 807 |
-
wheels = [
|
| 808 |
-
{ url = "https://files.pythonhosted.org/packages/ba/8e/805907f920d171eda033ac825d23595072a1c04dd716106c8bc8ec9eec9e/flake8_todos-0.3.1-py3-none-any.whl", hash = "sha256:0b4faca80bec49be7bf8e5dd46eec12f619e09cecac8a84a87775272300222b2", size = 7358 },
|
| 809 |
-
]
|
| 810 |
-
|
| 811 |
[[package]]
|
| 812 |
name = "forbiddenfruit"
|
| 813 |
version = "0.1.4"
|
|
@@ -1307,15 +1280,6 @@ wheels = [
|
|
| 1307 |
{ url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 },
|
| 1308 |
]
|
| 1309 |
|
| 1310 |
-
[[package]]
|
| 1311 |
-
name = "isort"
|
| 1312 |
-
version = "6.0.1"
|
| 1313 |
-
source = { registry = "https://pypi.org/simple" }
|
| 1314 |
-
sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955 }
|
| 1315 |
-
wheels = [
|
| 1316 |
-
{ url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186 },
|
| 1317 |
-
]
|
| 1318 |
-
|
| 1319 |
[[package]]
|
| 1320 |
name = "jedi"
|
| 1321 |
version = "0.19.2"
|
|
@@ -2208,15 +2172,6 @@ wheels = [
|
|
| 2208 |
{ url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 },
|
| 2209 |
]
|
| 2210 |
|
| 2211 |
-
[[package]]
|
| 2212 |
-
name = "mccabe"
|
| 2213 |
-
version = "0.7.0"
|
| 2214 |
-
source = { registry = "https://pypi.org/simple" }
|
| 2215 |
-
sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658 }
|
| 2216 |
-
wheels = [
|
| 2217 |
-
{ url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350 },
|
| 2218 |
-
]
|
| 2219 |
-
|
| 2220 |
[[package]]
|
| 2221 |
name = "mcp"
|
| 2222 |
version = "1.9.2"
|
|
@@ -3756,7 +3711,6 @@ dependencies = [
|
|
| 3756 |
{ name = "bidict" },
|
| 3757 |
{ name = "chainlit" },
|
| 3758 |
{ name = "datasets" },
|
| 3759 |
-
{ name = "flake8-todos" },
|
| 3760 |
{ name = "google" },
|
| 3761 |
{ name = "ipykernel" },
|
| 3762 |
{ name = "ipywidgets" },
|
|
@@ -3785,7 +3739,6 @@ dependencies = [
|
|
| 3785 |
{ name = "qdrant-client" },
|
| 3786 |
{ name = "ragas" },
|
| 3787 |
{ name = "requests" },
|
| 3788 |
-
{ name = "ruff" },
|
| 3789 |
{ name = "scikit-learn" },
|
| 3790 |
{ name = "scipy" },
|
| 3791 |
{ name = "sentence-transformers" },
|
|
@@ -3802,13 +3755,11 @@ dependencies = [
|
|
| 3802 |
dev = [
|
| 3803 |
{ name = "black" },
|
| 3804 |
{ name = "deptry" },
|
| 3805 |
-
{ name = "flake8" },
|
| 3806 |
-
{ name = "flake8-todos" },
|
| 3807 |
{ name = "ipdb" },
|
| 3808 |
-
{ name = "isort" },
|
| 3809 |
{ name = "mypy" },
|
| 3810 |
{ name = "pylint-venv" },
|
| 3811 |
{ name = "pytest" },
|
|
|
|
| 3812 |
]
|
| 3813 |
web = [
|
| 3814 |
{ name = "fastapi" },
|
|
@@ -3828,15 +3779,11 @@ requires-dist = [
|
|
| 3828 |
{ name = "datasets", specifier = ">=3.6.0" },
|
| 3829 |
{ name = "deptry", marker = "extra == 'dev'", specifier = ">=0.23.0" },
|
| 3830 |
{ name = "fastapi", marker = "extra == 'web'", specifier = ">=0.115.3,<0.116" },
|
| 3831 |
-
{ name = "flake8", marker = "extra == 'dev'", specifier = ">=4.0.0" },
|
| 3832 |
-
{ name = "flake8-todos", specifier = ">=0.3.1" },
|
| 3833 |
-
{ name = "flake8-todos", marker = "extra == 'dev'", specifier = ">=0.3.1" },
|
| 3834 |
{ name = "google", specifier = ">=3.0.0" },
|
| 3835 |
{ name = "httpx", marker = "extra == 'web'", specifier = "==0.27.0" },
|
| 3836 |
{ name = "ipdb", marker = "extra == 'dev'", specifier = ">=0.13.13" },
|
| 3837 |
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 3838 |
{ name = "ipywidgets", specifier = ">=8.1.7" },
|
| 3839 |
-
{ name = "isort", marker = "extra == 'dev'", specifier = ">=6.0.1" },
|
| 3840 |
{ name = "jupyter", specifier = ">=1.1.1" },
|
| 3841 |
{ name = "jupyter-contrib-nbextensions", specifier = ">=0.7.0" },
|
| 3842 |
{ name = "langchain", specifier = ">=0.3.25" },
|
|
@@ -3866,7 +3813,7 @@ requires-dist = [
|
|
| 3866 |
{ name = "qdrant-client", specifier = ">=1.8.0" },
|
| 3867 |
{ name = "ragas", specifier = ">=0.2.15" },
|
| 3868 |
{ name = "requests", specifier = ">=2.31.0" },
|
| 3869 |
-
{ name = "ruff",
|
| 3870 |
{ name = "scikit-learn", specifier = ">=1.0.0" },
|
| 3871 |
{ name = "scipy", specifier = ">=1.10.0" },
|
| 3872 |
{ name = "sentence-transformers", specifier = ">=3.4.1" },
|
|
@@ -3959,15 +3906,6 @@ wheels = [
|
|
| 3959 |
{ url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982 },
|
| 3960 |
]
|
| 3961 |
|
| 3962 |
-
[[package]]
|
| 3963 |
-
name = "pycodestyle"
|
| 3964 |
-
version = "2.13.0"
|
| 3965 |
-
source = { registry = "https://pypi.org/simple" }
|
| 3966 |
-
sdist = { url = "https://files.pythonhosted.org/packages/04/6e/1f4a62078e4d95d82367f24e685aef3a672abfd27d1a868068fed4ed2254/pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae", size = 39312 }
|
| 3967 |
-
wheels = [
|
| 3968 |
-
{ url = "https://files.pythonhosted.org/packages/07/be/b00116df1bfb3e0bb5b45e29d604799f7b91dd861637e4d448b4e09e6a3e/pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", size = 31424 },
|
| 3969 |
-
]
|
| 3970 |
-
|
| 3971 |
[[package]]
|
| 3972 |
name = "pycparser"
|
| 3973 |
version = "2.22"
|
|
@@ -4058,15 +3996,6 @@ wheels = [
|
|
| 4058 |
{ url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 },
|
| 4059 |
]
|
| 4060 |
|
| 4061 |
-
[[package]]
|
| 4062 |
-
name = "pyflakes"
|
| 4063 |
-
version = "3.3.2"
|
| 4064 |
-
source = { registry = "https://pypi.org/simple" }
|
| 4065 |
-
sdist = { url = "https://files.pythonhosted.org/packages/af/cc/1df338bd7ed1fa7c317081dcf29bf2f01266603b301e6858856d346a12b3/pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b", size = 64175 }
|
| 4066 |
-
wheels = [
|
| 4067 |
-
{ url = "https://files.pythonhosted.org/packages/15/40/b293a4fa769f3b02ab9e387c707c4cbdc34f073f945de0386107d4e669e6/pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a", size = 63164 },
|
| 4068 |
-
]
|
| 4069 |
-
|
| 4070 |
[[package]]
|
| 4071 |
name = "pygments"
|
| 4072 |
version = "2.19.1"
|
|
|
|
| 781 |
{ url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970 },
|
| 782 |
]
|
| 783 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 784 |
[[package]]
|
| 785 |
name = "forbiddenfruit"
|
| 786 |
version = "0.1.4"
|
|
|
|
| 1280 |
{ url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 },
|
| 1281 |
]
|
| 1282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1283 |
[[package]]
|
| 1284 |
name = "jedi"
|
| 1285 |
version = "0.19.2"
|
|
|
|
| 2172 |
{ url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 },
|
| 2173 |
]
|
| 2174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2175 |
[[package]]
|
| 2176 |
name = "mcp"
|
| 2177 |
version = "1.9.2"
|
|
|
|
| 3711 |
{ name = "bidict" },
|
| 3712 |
{ name = "chainlit" },
|
| 3713 |
{ name = "datasets" },
|
|
|
|
| 3714 |
{ name = "google" },
|
| 3715 |
{ name = "ipykernel" },
|
| 3716 |
{ name = "ipywidgets" },
|
|
|
|
| 3739 |
{ name = "qdrant-client" },
|
| 3740 |
{ name = "ragas" },
|
| 3741 |
{ name = "requests" },
|
|
|
|
| 3742 |
{ name = "scikit-learn" },
|
| 3743 |
{ name = "scipy" },
|
| 3744 |
{ name = "sentence-transformers" },
|
|
|
|
| 3755 |
dev = [
|
| 3756 |
{ name = "black" },
|
| 3757 |
{ name = "deptry" },
|
|
|
|
|
|
|
| 3758 |
{ name = "ipdb" },
|
|
|
|
| 3759 |
{ name = "mypy" },
|
| 3760 |
{ name = "pylint-venv" },
|
| 3761 |
{ name = "pytest" },
|
| 3762 |
+
{ name = "ruff" },
|
| 3763 |
]
|
| 3764 |
web = [
|
| 3765 |
{ name = "fastapi" },
|
|
|
|
| 3779 |
{ name = "datasets", specifier = ">=3.6.0" },
|
| 3780 |
{ name = "deptry", marker = "extra == 'dev'", specifier = ">=0.23.0" },
|
| 3781 |
{ name = "fastapi", marker = "extra == 'web'", specifier = ">=0.115.3,<0.116" },
|
|
|
|
|
|
|
|
|
|
| 3782 |
{ name = "google", specifier = ">=3.0.0" },
|
| 3783 |
{ name = "httpx", marker = "extra == 'web'", specifier = "==0.27.0" },
|
| 3784 |
{ name = "ipdb", marker = "extra == 'dev'", specifier = ">=0.13.13" },
|
| 3785 |
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 3786 |
{ name = "ipywidgets", specifier = ">=8.1.7" },
|
|
|
|
| 3787 |
{ name = "jupyter", specifier = ">=1.1.1" },
|
| 3788 |
{ name = "jupyter-contrib-nbextensions", specifier = ">=0.7.0" },
|
| 3789 |
{ name = "langchain", specifier = ">=0.3.25" },
|
|
|
|
| 3813 |
{ name = "qdrant-client", specifier = ">=1.8.0" },
|
| 3814 |
{ name = "ragas", specifier = ">=0.2.15" },
|
| 3815 |
{ name = "requests", specifier = ">=2.31.0" },
|
| 3816 |
+
{ name = "ruff", marker = "extra == 'dev'" },
|
| 3817 |
{ name = "scikit-learn", specifier = ">=1.0.0" },
|
| 3818 |
{ name = "scipy", specifier = ">=1.10.0" },
|
| 3819 |
{ name = "sentence-transformers", specifier = ">=3.4.1" },
|
|
|
|
| 3906 |
{ url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982 },
|
| 3907 |
]
|
| 3908 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3909 |
[[package]]
|
| 3910 |
name = "pycparser"
|
| 3911 |
version = "2.22"
|
|
|
|
| 3996 |
{ url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 },
|
| 3997 |
]
|
| 3998 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3999 |
[[package]]
|
| 4000 |
name = "pygments"
|
| 4001 |
version = "2.19.1"
|