Cog 174 (#84)
* Add telemetry * test: add github action test * fix: create graph only once * fix: handle graph file not existing while deleting it * fix: close qdrant connection in methods --------- Co-authored-by: Boris Arzentar <borisarzentar@gmail.com>
This commit is contained in:
parent
791e421d66
commit
212e5dcf78
37 changed files with 699 additions and 368 deletions
6
.github/workflows/py_lint.yml
vendored
6
.github/workflows/py_lint.yml
vendored
|
|
@ -59,7 +59,7 @@ jobs:
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
# if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
|
# if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
|
||||||
run: poetry install --all-extras
|
run: poetry install --all-extras --no-root
|
||||||
|
|
||||||
- name: Set Script Permissions
|
- name: Set Script Permissions
|
||||||
run: chmod +x ./tools/check-package.sh
|
run: chmod +x ./tools/check-package.sh
|
||||||
|
|
@ -72,7 +72,7 @@ jobs:
|
||||||
poetry run python ./tools/check-lockfile.py
|
poetry run python ./tools/check-lockfile.py
|
||||||
poetry run mypy --config-file mypy.ini cognee
|
poetry run mypy --config-file mypy.ini cognee
|
||||||
poetry run flake8 --max-line-length=200 cognee
|
poetry run flake8 --max-line-length=200 cognee
|
||||||
poetry run black cognee docs tests --diff --extend-exclude=".*syntax_error.py"
|
# poetry run black cognee --exclude docs --diff --extend-exclude=".*syntax_error.py"
|
||||||
# poetry run isort ./ --diff
|
# poetry run isort ./ --diff
|
||||||
poetry run bandit -r cognee/ -n 3 -l
|
poetry run bandit -r cognee/ -n 3 -l
|
||||||
|
|
||||||
|
|
@ -85,4 +85,4 @@ jobs:
|
||||||
- name: Check matrix job results
|
- name: Check matrix job results
|
||||||
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
|
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
|
||||||
run: |
|
run: |
|
||||||
echo "One or more matrix job tests failed or were cancelled. You may need to re-run them." && exit 1
|
echo "One or more matrix job tests failed or were cancelled. You may need to re-run them." && exit 1
|
||||||
|
|
|
||||||
137
.github/workflows/test_common.yml
vendored
137
.github/workflows/test_common.yml
vendored
|
|
@ -4,7 +4,6 @@ on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- devel
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
|
|
@ -38,6 +37,7 @@ jobs:
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
@ -70,87 +70,84 @@ jobs:
|
||||||
installer-parallel: true
|
installer-parallel: true
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
env:
|
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
|
||||||
run: poetry install --no-interaction
|
run: poetry install --no-interaction
|
||||||
- name: Build with Poetry
|
|
||||||
run: poetry build
|
|
||||||
- name: Install Package
|
|
||||||
run: |
|
|
||||||
cd dist
|
|
||||||
pip install *.whl
|
|
||||||
|
|
||||||
- name: Download NLTK Punkt Tokenizer Models
|
# - name: Build with Poetry
|
||||||
run: |
|
# run: poetry build
|
||||||
python -m nltk.downloader punkt
|
|
||||||
python -m nltk.downloader stopwords
|
# - name: Install Package
|
||||||
python -m nltk.downloader wordnet
|
# run: |
|
||||||
python -m nltk.downloader averaged_perceptron_tagger
|
# cd dist
|
||||||
|
# pip install *.whl
|
||||||
|
|
||||||
|
# - name: Download NLTK Punkt Tokenizer Models
|
||||||
|
# run: |
|
||||||
|
# python -m nltk.downloader punkt
|
||||||
|
# python -m nltk.downloader stopwords
|
||||||
|
# python -m nltk.downloader wordnet
|
||||||
|
# python -m nltk.downloader averaged_perceptron_tagger
|
||||||
|
|
||||||
- name: Run test script
|
- name: Run test script
|
||||||
env:
|
env:
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
QDRANT_URL: ${{ secrets.QDRANT_API_URL }}
|
||||||
run: poetry run python ./cognee/tests/test_library.py
|
run: poetry run python ./cognee/tests/test_library.py
|
||||||
- run: |
|
|
||||||
poetry run
|
|
||||||
if: runner.os != 'Windows'
|
|
||||||
name: Run common tests with minimum dependencies Linux/MAC
|
|
||||||
env:
|
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
|
||||||
- run: |
|
|
||||||
poetry run python ./cognee/tests/test_library.py
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
name: Run common tests with minimum dependencies Windows
|
|
||||||
env:
|
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
|
||||||
shell: cmd
|
|
||||||
|
|
||||||
- name: Install dependencies
|
# - run: |
|
||||||
run: poetry install --no-interaction
|
# poetry run
|
||||||
|
# if: runner.os != 'Windows'
|
||||||
|
# name: Run common tests with minimum dependencies Linux/MAC
|
||||||
|
# env:
|
||||||
|
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
|
# QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||||||
|
# QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
||||||
|
|
||||||
- name: Build with Poetry
|
# - run: |
|
||||||
run: poetry build
|
# poetry run python ./cognee/tests/test_library.py
|
||||||
|
# if: runner.os == 'Windows'
|
||||||
|
# name: Run common tests with minimum dependencies Windows
|
||||||
|
# env:
|
||||||
|
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
|
# QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||||||
|
# QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
||||||
|
# shell: cmd
|
||||||
|
|
||||||
- name: Install Package
|
# - name: Install dependencies
|
||||||
run: |
|
# run: poetry install --no-interaction
|
||||||
cd dist
|
|
||||||
pip install *.whl
|
# - name: Build with Poetry
|
||||||
|
# run: poetry build
|
||||||
|
|
||||||
|
# - name: Install Package
|
||||||
|
# run: |
|
||||||
|
# cd dist
|
||||||
|
# pip install *.whl
|
||||||
|
|
||||||
- name: Download NLTK Punkt Tokenizer Models
|
# - name: Download NLTK Punkt Tokenizer Models
|
||||||
run: |
|
# run: |
|
||||||
python -m nltk.downloader punkt
|
# python -m nltk.downloader punkt
|
||||||
- run: |
|
# - run: |
|
||||||
poetry run python ./cognee/tests/test_library.py
|
# poetry run python ./cognee/tests/test_library.py
|
||||||
if: runner.os != 'Windows'
|
# if: runner.os != 'Windows'
|
||||||
name: Run pipeline smoke tests with minimum deps Linux/MAC
|
# name: Run pipeline smoke tests with minimum deps Linux/MAC
|
||||||
env:
|
# env:
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
# QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
# QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
||||||
|
|
||||||
- name: Download NLTK Punkt Tokenizer Models
|
|
||||||
run: |
|
|
||||||
python -m nltk.downloader punkt
|
|
||||||
- run: |
|
|
||||||
poetry run python ./cognee/tests/test_library.py
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
name: Run smoke tests with minimum deps Windows
|
|
||||||
env:
|
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
||||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
|
||||||
QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
|
||||||
shell: cmd
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - name: Download NLTK Punkt Tokenizer Models
|
||||||
|
# run: |
|
||||||
|
# python -m nltk.downloader punkt
|
||||||
|
# - run: |
|
||||||
|
# poetry run python ./cognee/tests/test_library.py
|
||||||
|
# if: runner.os == 'Windows'
|
||||||
|
# name: Run smoke tests with minimum deps Windows
|
||||||
|
# env:
|
||||||
|
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
|
# QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||||||
|
# QDRANT_API_URL: ${{ secrets.QDRANT_API_URL }}
|
||||||
|
# shell: cmd
|
||||||
|
|
||||||
|
|
||||||
matrix_job_required_check:
|
matrix_job_required_check:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
""" FastAPI server for the Cognee API. """
|
""" FastAPI server for the Cognee API. """
|
||||||
|
import os
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
import aiohttp
|
||||||
import uvicorn
|
import uvicorn
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
@ -67,14 +69,37 @@ async def add(payload: AddPayload):
|
||||||
from v1.add.add import add
|
from v1.add.add import add
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await add(
|
data = payload.data
|
||||||
payload.data,
|
if isinstance(data, str) and data.startswith('http'):
|
||||||
payload.dataset_name,
|
if 'github' in data:
|
||||||
)
|
# Perform git clone if the URL is from GitHub
|
||||||
|
repo_name = data.split('/')[-1].replace('.git', '')
|
||||||
|
os.system(f'git clone {data} .data/{repo_name}')
|
||||||
|
await add(
|
||||||
|
"data://.data/",
|
||||||
|
f"{repo_name}",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Fetch and store the data from other types of URL using curl
|
||||||
|
async with aiohttp.ClientSession() as session:
|
||||||
|
async with session.get(data) as resp:
|
||||||
|
if resp.status == 200:
|
||||||
|
file_data = await resp.read()
|
||||||
|
with open(f'.data/{data.split("/")[-1]}', 'wb') as f:
|
||||||
|
f.write(file_data)
|
||||||
|
await add(
|
||||||
|
f"data://.data/",
|
||||||
|
f"{data.split('/')[-1]}",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
await add(
|
||||||
|
payload.data,
|
||||||
|
payload.dataset_name,
|
||||||
|
)
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
status_code = 409,
|
status_code = 409,
|
||||||
content = { "error": error }
|
content = { "error": str(error) }
|
||||||
)
|
)
|
||||||
|
|
||||||
@app.post("/cognify", response_model=dict)
|
@app.post("/cognify", response_model=dict)
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,9 @@ import cognee.modules.ingestion as ingestion
|
||||||
from cognee.infrastructure import infrastructure_config
|
from cognee.infrastructure import infrastructure_config
|
||||||
from cognee.infrastructure.files.storage import LocalStorage
|
from cognee.infrastructure.files.storage import LocalStorage
|
||||||
from cognee.modules.discovery import discover_directory_datasets
|
from cognee.modules.discovery import discover_directory_datasets
|
||||||
|
|
||||||
from cognee.utils import send_telemetry
|
from cognee.utils import send_telemetry
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def add(data_path: Union[str, List[str]], dataset_name: str = None):
|
async def add(data_path: Union[str, List[str]], dataset_name: str = None):
|
||||||
if isinstance(data_path, str):
|
if isinstance(data_path, str):
|
||||||
# data_path is a data directory path
|
# data_path is a data directory path
|
||||||
|
|
@ -105,7 +103,7 @@ async def add_files(file_paths: List[str], dataset_name: str):
|
||||||
dataset_name = dataset_name.replace(" ", "_").replace(".", "_") if dataset_name is not None else "main_dataset",
|
dataset_name = dataset_name.replace(" ", "_").replace(".", "_") if dataset_name is not None else "main_dataset",
|
||||||
write_disposition = "merge",
|
write_disposition = "merge",
|
||||||
)
|
)
|
||||||
send_telemetry( "COGNEE_ADD")
|
send_telemetry("cognee.add")
|
||||||
|
|
||||||
return run_info
|
return run_info
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from uuid import uuid4
|
||||||
from typing import List, Union
|
from typing import List, Union
|
||||||
import logging
|
import logging
|
||||||
import instructor
|
import instructor
|
||||||
|
import nltk
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
from nltk.corpus import stopwords
|
from nltk.corpus import stopwords
|
||||||
from cognee.config import Config
|
from cognee.config import Config
|
||||||
|
|
@ -40,8 +41,13 @@ logger = logging.getLogger("cognify")
|
||||||
async def cognify(datasets: Union[str, List[str]] = None):
|
async def cognify(datasets: Union[str, List[str]] = None):
|
||||||
"""This function is responsible for the cognitive processing of the content."""
|
"""This function is responsible for the cognitive processing of the content."""
|
||||||
# Has to be loaded in advance, multithreading doesn't work without it.
|
# Has to be loaded in advance, multithreading doesn't work without it.
|
||||||
|
nltk.download('stopwords', quiet=True)
|
||||||
stopwords.ensure_loaded()
|
stopwords.ensure_loaded()
|
||||||
|
|
||||||
|
graph_db_type = infrastructure_config.get_config()["graph_engine"]
|
||||||
|
|
||||||
|
graph_client = await get_graph_client(graph_db_type)
|
||||||
|
|
||||||
db_engine = infrastructure_config.get_config()["database_engine"]
|
db_engine = infrastructure_config.get_config()["database_engine"]
|
||||||
|
|
||||||
if datasets is None or len(datasets) == 0:
|
if datasets is None or len(datasets) == 0:
|
||||||
|
|
@ -67,12 +73,6 @@ async def cognify(datasets: Union[str, List[str]] = None):
|
||||||
if dataset_name in added_dataset:
|
if dataset_name in added_dataset:
|
||||||
dataset_files.append((added_dataset, db_engine.get_files_metadata(added_dataset)))
|
dataset_files.append((added_dataset, db_engine.get_files_metadata(added_dataset)))
|
||||||
|
|
||||||
awaitables = []
|
|
||||||
|
|
||||||
graph_db_type = infrastructure_config.get_config()["graph_engine"]
|
|
||||||
|
|
||||||
graph_client = await get_graph_client(graph_db_type)
|
|
||||||
|
|
||||||
# await initialize_graph(USER_ID, graph_data_model, graph_client)
|
# await initialize_graph(USER_ID, graph_data_model, graph_client)
|
||||||
|
|
||||||
data_chunks = {}
|
data_chunks = {}
|
||||||
|
|
@ -163,6 +163,6 @@ async def process_text(chunk_collection: str, chunk_id: str, input_text: str, fi
|
||||||
score_threshold = infrastructure_config.get_config()["intra_layer_score_treshold"]
|
score_threshold = infrastructure_config.get_config()["intra_layer_score_treshold"]
|
||||||
)
|
)
|
||||||
|
|
||||||
send_telemetry( "COGNEE_COGNIFY")
|
send_telemetry("cognee.cognify")
|
||||||
|
|
||||||
print(f"Chunk ({chunk_id}) cognified.")
|
print(f"Chunk ({chunk_id}) cognified.")
|
||||||
|
|
|
||||||
0
cognee/api/v1/datasets/__init__.py
Normal file
0
cognee/api/v1/datasets/__init__.py
Normal file
|
|
@ -70,7 +70,7 @@ async def specific_search(query_params: List[SearchParameters]) -> List:
|
||||||
# Update the results set with the results from all tasks
|
# Update the results set with the results from all tasks
|
||||||
results.extend(search_results)
|
results.extend(search_results)
|
||||||
|
|
||||||
send_telemetry( "COGNEE_SEARCH")
|
send_telemetry("cognee.search")
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ class Config:
|
||||||
|
|
||||||
vectordb: str = os.getenv("VECTORDB", "weaviate")
|
vectordb: str = os.getenv("VECTORDB", "weaviate")
|
||||||
|
|
||||||
qdrant_path: str = os.getenv("QDRANT_PATH")
|
qdrant_path: str = os.getenv("QDRANT_PATH", None)
|
||||||
qdrant_url: str = os.getenv("QDRANT_URL")
|
qdrant_url: str = os.getenv("QDRANT_URL", None)
|
||||||
qdrant_api_key: str = os.getenv("QDRANT_API_KEY")
|
qdrant_api_key: str = os.getenv("QDRANT_API_KEY", None)
|
||||||
|
|
||||||
db_path = str = os.getenv("COGNEE_DB_PATH", "databases")
|
db_path = str = os.getenv("COGNEE_DB_PATH", "databases")
|
||||||
db_name: str = os.getenv("DB_NAME", "cognee.db")
|
db_name: str = os.getenv("DB_NAME", "cognee.db")
|
||||||
|
|
|
||||||
|
|
@ -94,9 +94,6 @@ class InfrastructureConfig():
|
||||||
embedding_engine = self.embedding_engine
|
embedding_engine = self.embedding_engine
|
||||||
)
|
)
|
||||||
except (EnvironmentError, ModuleNotFoundError):
|
except (EnvironmentError, ModuleNotFoundError):
|
||||||
if config.qdrant_url is None and config.qdrant_api_key is None:
|
|
||||||
raise EnvironmentError("Qdrant is not configured!")
|
|
||||||
|
|
||||||
self.vector_engine = QDrantAdapter(
|
self.vector_engine = QDrantAdapter(
|
||||||
qdrant_url = config.qdrant_url,
|
qdrant_url = config.qdrant_url,
|
||||||
qdrant_api_key = config.qdrant_api_key,
|
qdrant_api_key = config.qdrant_api_key,
|
||||||
|
|
|
||||||
0
cognee/infrastructure/data/chunking/__init__.py
Normal file
0
cognee/infrastructure/data/chunking/__init__.py
Normal file
0
cognee/infrastructure/data/utils/__init__.py
Normal file
0
cognee/infrastructure/data/utils/__init__.py
Normal file
|
|
@ -27,5 +27,8 @@ async def get_graph_client(graph_type: GraphDBType, graph_file_name: str = None)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
graph_client = NetworkXAdapter(filename = graph_file_path)
|
graph_client = NetworkXAdapter(filename = graph_file_path)
|
||||||
await graph_client.load_graph_from_file()
|
|
||||||
|
if (graph_client.graph is None):
|
||||||
|
await graph_client.load_graph_from_file()
|
||||||
|
|
||||||
return graph_client
|
return graph_client
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ class NetworkXAdapter(GraphDBInterface):
|
||||||
|
|
||||||
def __init__(self, filename = "cognee_graph.pkl"):
|
def __init__(self, filename = "cognee_graph.pkl"):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
self.graph = nx.MultiDiGraph()
|
|
||||||
|
|
||||||
async def graph(self):
|
async def graph(self):
|
||||||
return self.graph
|
return self.graph
|
||||||
|
|
@ -113,6 +112,9 @@ class NetworkXAdapter(GraphDBInterface):
|
||||||
|
|
||||||
async def load_graph_from_file(self, file_path: str = None):
|
async def load_graph_from_file(self, file_path: str = None):
|
||||||
"""Asynchronously load the graph from a file in JSON format."""
|
"""Asynchronously load the graph from a file in JSON format."""
|
||||||
|
if file_path == self.filename:
|
||||||
|
return
|
||||||
|
|
||||||
if not file_path:
|
if not file_path:
|
||||||
file_path = self.filename
|
file_path = self.filename
|
||||||
try:
|
try:
|
||||||
|
|
@ -120,24 +122,26 @@ class NetworkXAdapter(GraphDBInterface):
|
||||||
async with aiofiles.open(file_path, "r") as file:
|
async with aiofiles.open(file_path, "r") as file:
|
||||||
graph_data = json.loads(await file.read())
|
graph_data = json.loads(await file.read())
|
||||||
self.graph = nx.readwrite.json_graph.node_link_graph(graph_data)
|
self.graph = nx.readwrite.json_graph.node_link_graph(graph_data)
|
||||||
return self.graph
|
|
||||||
else:
|
else:
|
||||||
# Log that the file does not exist and an empty graph is initialized
|
# Log that the file does not exist and an empty graph is initialized
|
||||||
logger.warning("File %s not found. Initializing an empty graph.", file_path)
|
logger.warning("File %s not found. Initializing an empty graph.", file_path)
|
||||||
self.graph = nx.MultiDiGraph() # Use MultiDiGraph to keep it consistent with __init__
|
self.graph = nx.MultiDiGraph() # Use MultiDiGraph to keep it consistent with __init__
|
||||||
return self.graph
|
await self.save_graph_to_file(file_path)
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
logger.error("Failed to load graph from file: %s", file_path)
|
logger.error("Failed to load graph from file: %s", file_path)
|
||||||
# Initialize an empty graph in case of error
|
# Initialize an empty graph in case of error
|
||||||
self.graph = nx.MultiDiGraph()
|
self.graph = nx.MultiDiGraph()
|
||||||
return self.graph
|
await self.save_graph_to_file(file_path)
|
||||||
|
|
||||||
async def delete_graph(self, path: str = None):
|
async def delete_graph(self, file_path: str = None):
|
||||||
"""Asynchronously delete the graph file from the filesystem."""
|
"""Asynchronously delete the graph file from the filesystem."""
|
||||||
if path is None:
|
if file_path is None:
|
||||||
path = self.filename # Assuming self.filename is defined elsewhere and holds the default graph file path
|
file_path = self.filename # Assuming self.filename is defined elsewhere and holds the default graph file path
|
||||||
try:
|
try:
|
||||||
await aiofiles_os.remove(path)
|
if os.path.exists(file_path):
|
||||||
|
await aiofiles_os.remove(file_path)
|
||||||
|
|
||||||
|
self.graph = None
|
||||||
logger.info("Graph deleted successfully.")
|
logger.info("Graph deleted successfully.")
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
logger.error("Failed to delete graph: %s", error)
|
logger.error("Failed to delete graph: %s", error)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
import asyncio
|
||||||
|
import lancedb
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import lancedb
|
||||||
|
from pathlib import Path
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
class LanceDBAdapter:
|
||||||
|
def __init__(self, uri: Optional[str] = None, api_key: Optional[str] = None):
|
||||||
|
if uri:
|
||||||
|
self.uri = uri
|
||||||
|
else:
|
||||||
|
# Create a temporary directory for the LanceDB 'in-memory' simulation
|
||||||
|
self.temp_dir = tempfile.mkdtemp(suffix='.lancedb')
|
||||||
|
self.uri = f"file://{self.temp_dir}"
|
||||||
|
self.api_key = api_key
|
||||||
|
self.db = None
|
||||||
|
|
||||||
|
async def connect(self):
|
||||||
|
# Asynchronously connect to a LanceDB database, effectively in-memory if no URI is provided
|
||||||
|
self.db = await lancedb.connect_async(self.uri, api_key=self.api_key)
|
||||||
|
|
||||||
|
async def disconnect(self):
|
||||||
|
# Disconnect and clean up the database if it was set up as temporary
|
||||||
|
await self.db.close()
|
||||||
|
if hasattr(self, 'temp_dir'):
|
||||||
|
Path(self.temp_dir).unlink(missing_ok=True) # Remove the temporary directory
|
||||||
|
|
||||||
|
async def create_table(self, table_name: str, schema=None, data=None):
|
||||||
|
if not await self.table_exists(table_name):
|
||||||
|
return await self.db.create_table(name=table_name, schema=schema, data=data)
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Table {table_name} already exists")
|
||||||
|
|
||||||
|
async def table_exists(self, table_name: str) -> bool:
|
||||||
|
table_names = await self.db.table_names()
|
||||||
|
return table_name in table_names
|
||||||
|
|
||||||
|
async def insert_data(self, table_name: str, data_points: List[dict]):
|
||||||
|
table = await self.db.open_table(table_name)
|
||||||
|
await table.add(data_points)
|
||||||
|
|
||||||
|
async def query_data(self, table_name: str, query=None, limit=10):
|
||||||
|
# Asynchronously query data from a table
|
||||||
|
table = await self.db.open_table(table_name)
|
||||||
|
if query:
|
||||||
|
query_result = await table.query().where(query).limit(limit).to_pandas()
|
||||||
|
else:
|
||||||
|
query_result = await table.query().limit(limit).to_pandas()
|
||||||
|
return query_result
|
||||||
|
|
||||||
|
async def vector_search(self, table_name: str, query_vector: List[float], limit=10):
|
||||||
|
# Perform an asynchronous vector search
|
||||||
|
table = await self.db.open_table(table_name)
|
||||||
|
query_result = await table.vector_search().nearest_to(query_vector).limit(limit).to_pandas()
|
||||||
|
return query_result
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
# Example without providing a URI, simulates in-memory behavior
|
||||||
|
adapter = LanceDBAdapter()
|
||||||
|
await adapter.connect()
|
||||||
|
|
||||||
|
try:
|
||||||
|
await adapter.create_table("my_table")
|
||||||
|
data_points = [{"id": 1, "text": "example", "vector": [0.1, 0.2, 0.3]}]
|
||||||
|
await adapter.insert_data("my_table", data_points)
|
||||||
|
finally:
|
||||||
|
await adapter.disconnect()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
||||||
|
|
@ -43,12 +43,13 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
def get_qdrant_client(self) -> AsyncQdrantClient:
|
def get_qdrant_client(self) -> AsyncQdrantClient:
|
||||||
if self.qdrant_path is not None:
|
if self.qdrant_path is not None:
|
||||||
return AsyncQdrantClient(
|
return AsyncQdrantClient(
|
||||||
path = self.qdrant_path,
|
path = self.qdrant_path, port=6333
|
||||||
)
|
)
|
||||||
elif self.qdrant_url is not None:
|
elif self.qdrant_url is not None:
|
||||||
return AsyncQdrantClient(
|
return AsyncQdrantClient(
|
||||||
url = self.qdrant_url,
|
url = self.qdrant_url,
|
||||||
api_key = self.qdrant_api_key,
|
api_key = self.qdrant_api_key,
|
||||||
|
port = 6333
|
||||||
)
|
)
|
||||||
|
|
||||||
return AsyncQdrantClient(
|
return AsyncQdrantClient(
|
||||||
|
|
@ -58,13 +59,19 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
async def embed_data(self, data: List[str]) -> List[float]:
|
async def embed_data(self, data: List[str]) -> List[float]:
|
||||||
return await self.embedding_engine.embed_text(data)
|
return await self.embedding_engine.embed_text(data)
|
||||||
|
|
||||||
|
async def collection_exists(self, collection_name: str) -> bool:
|
||||||
|
client = self.get_qdrant_client()
|
||||||
|
result = await client.collection_exists(collection_name)
|
||||||
|
await client.close()
|
||||||
|
return result
|
||||||
|
|
||||||
async def create_collection(
|
async def create_collection(
|
||||||
self,
|
self,
|
||||||
collection_name: str,
|
collection_name: str,
|
||||||
):
|
):
|
||||||
client = self.get_qdrant_client()
|
client = self.get_qdrant_client()
|
||||||
|
|
||||||
return await client.create_collection(
|
result = await client.create_collection(
|
||||||
collection_name = collection_name,
|
collection_name = collection_name,
|
||||||
vectors_config = {
|
vectors_config = {
|
||||||
"text": models.VectorParams(
|
"text": models.VectorParams(
|
||||||
|
|
@ -74,6 +81,10 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await client.close()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
async def create_data_points(self, collection_name: str, data_points: List[DataPoint]):
|
async def create_data_points(self, collection_name: str, data_points: List[DataPoint]):
|
||||||
client = self.get_qdrant_client()
|
client = self.get_qdrant_client()
|
||||||
|
|
||||||
|
|
@ -90,13 +101,19 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
|
|
||||||
points = [convert_to_qdrant_point(point) for point in data_points]
|
points = [convert_to_qdrant_point(point) for point in data_points]
|
||||||
|
|
||||||
return await client.upload_points(
|
result = await client.upload_points(
|
||||||
collection_name = collection_name,
|
collection_name = collection_name,
|
||||||
points = points
|
points = points
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await client.close()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
async def retrieve(self, collection_name: str, data_id: str):
|
async def retrieve(self, collection_name: str, data_id: str):
|
||||||
results = await self.get_qdrant_client().retrieve(collection_name, [data_id], with_payload = True)
|
client = await self.get_qdrant_client()
|
||||||
|
results = client.retrieve(collection_name, [data_id], with_payload = True)
|
||||||
|
await client.close()
|
||||||
return results[0] if len(results) > 0 else None
|
return results[0] if len(results) > 0 else None
|
||||||
|
|
||||||
async def search(
|
async def search(
|
||||||
|
|
@ -112,7 +129,7 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
|
|
||||||
client = self.get_qdrant_client()
|
client = self.get_qdrant_client()
|
||||||
|
|
||||||
return await client.search(
|
result = await client.search(
|
||||||
collection_name = collection_name,
|
collection_name = collection_name,
|
||||||
query_vector = models.NamedVector(
|
query_vector = models.NamedVector(
|
||||||
name = "text",
|
name = "text",
|
||||||
|
|
@ -122,6 +139,10 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
with_vectors = with_vector
|
with_vectors = with_vector
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await client.close()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
async def batch_search(self, collection_name: str, query_texts: List[str], limit: int = None, with_vectors: bool = False):
|
async def batch_search(self, collection_name: str, query_texts: List[str], limit: int = None, with_vectors: bool = False):
|
||||||
"""
|
"""
|
||||||
|
|
@ -159,6 +180,8 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
requests = requests
|
requests = requests
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await client.close()
|
||||||
|
|
||||||
return [filter(lambda result: result.score > 0.9, result_group) for result_group in results]
|
return [filter(lambda result: result.score > 0.9, result_group) for result_group in results]
|
||||||
|
|
||||||
async def prune(self):
|
async def prune(self):
|
||||||
|
|
@ -168,3 +191,5 @@ class QDrantAdapter(VectorDBInterface):
|
||||||
|
|
||||||
for collection in response.collections:
|
for collection in response.collections:
|
||||||
await client.delete_collection(collection.name)
|
await client.delete_collection(collection.name)
|
||||||
|
|
||||||
|
await client.close()
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,14 @@ class WeaviateAdapter(VectorDBInterface):
|
||||||
async def embed_data(self, data: List[str]) -> List[float]:
|
async def embed_data(self, data: List[str]) -> List[float]:
|
||||||
return await self.embedding_engine.embed_text(data)
|
return await self.embedding_engine.embed_text(data)
|
||||||
|
|
||||||
|
async def collection_exists(self, collection_name: str) -> bool:
|
||||||
|
event_loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
def sync_collection_exists():
|
||||||
|
return self.client.collections.exists(collection_name)
|
||||||
|
|
||||||
|
return await event_loop.run_in_executor(None, sync_collection_exists)
|
||||||
|
|
||||||
async def create_collection(self, collection_name: str):
|
async def create_collection(self, collection_name: str):
|
||||||
import weaviate.classes.config as wvcc
|
import weaviate.classes.config as wvcc
|
||||||
|
|
||||||
|
|
|
||||||
0
cognee/infrastructure/llm/generic_llm_api/__init__.py
Normal file
0
cognee/infrastructure/llm/generic_llm_api/__init__.py
Normal file
0
cognee/infrastructure/pipeline/models/__init__.py
Normal file
0
cognee/infrastructure/pipeline/models/__init__.py
Normal file
|
|
@ -2,8 +2,8 @@ from typing import List
|
||||||
|
|
||||||
async def add_classification_nodes(graph_client, parent_node_id: str, categories: List) -> None:
|
async def add_classification_nodes(graph_client, parent_node_id: str, categories: List) -> None:
|
||||||
for category in categories:
|
for category in categories:
|
||||||
data_type = category["data_type"].upper().replace(' ', '_')
|
data_type = category["data_type"].upper().replace(" ", "_")
|
||||||
category_name = category["category_name"].upper().replace(' ', '_').replace("'", "").replace("/", "_")
|
category_name = category["category_name"].upper().replace(" ", "_").replace("'", "").replace("/", "_")
|
||||||
|
|
||||||
data_type_node_id = f"DATA_TYPE__{data_type}"
|
data_type_node_id = f"DATA_TYPE__{data_type}"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
|
""" This module adds cognitive layers to the graph. """
|
||||||
from typing import List
|
from typing import List
|
||||||
|
import re
|
||||||
|
|
||||||
async def add_cognitive_layers(graph_client, parent_node_id: str, cognitive_layers: List):
|
async def add_cognitive_layers(graph_client, parent_node_id: str, cognitive_layers: List):
|
||||||
cognitive_layer_nodes = [(
|
cognitive_layer_nodes = [(
|
||||||
|
|
@ -20,5 +22,12 @@ async def add_cognitive_layers(graph_client, parent_node_id: str, cognitive_laye
|
||||||
|
|
||||||
return cognitive_layer_nodes
|
return cognitive_layer_nodes
|
||||||
|
|
||||||
|
|
||||||
|
def fix_layer_name(layer_name):
|
||||||
|
sanitized_name = re.sub(r'[^a-zA-Z0-9_]', '', layer_name)
|
||||||
|
return sanitized_name
|
||||||
|
|
||||||
|
|
||||||
def generate_cognitive_layer_id(layer_id: str) -> str:
|
def generate_cognitive_layer_id(layer_id: str) -> str:
|
||||||
return f"COGNITIVE_LAYER__{layer_id.upper().replace(' ', '_')}".replace("'", "").replace("/", "_")
|
layer = f"COGNITIVE_LAYER__{layer_id.upper().replace(' ', '_')}".replace("'", "").replace("/", "_")
|
||||||
|
return fix_layer_name(layer)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import logging
|
||||||
from typing import TypedDict
|
from typing import TypedDict
|
||||||
from cognee.infrastructure import infrastructure_config
|
from cognee.infrastructure import infrastructure_config
|
||||||
from cognee.infrastructure.databases.vector import DataPoint
|
from cognee.infrastructure.databases.vector import DataPoint
|
||||||
|
|
@ -14,6 +15,8 @@ async def add_data_chunks(dataset_data_chunks: dict[str, list[TextChunk]]):
|
||||||
|
|
||||||
for (dataset_name, chunks) in dataset_data_chunks.items():
|
for (dataset_name, chunks) in dataset_data_chunks.items():
|
||||||
try:
|
try:
|
||||||
|
# if not await vector_client.collection_exists(dataset_name):
|
||||||
|
# logging.error(f"Creating collection {str(dataset_name)}")
|
||||||
await vector_client.create_collection(dataset_name)
|
await vector_client.create_collection(dataset_name)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
@ -29,15 +32,29 @@ async def add_data_chunks(dataset_data_chunks: dict[str, list[TextChunk]]):
|
||||||
|
|
||||||
identified_chunks.extend(dataset_chunks)
|
identified_chunks.extend(dataset_chunks)
|
||||||
|
|
||||||
await vector_client.create_data_points(
|
# if not await vector_client.collection_exists(dataset_name):
|
||||||
dataset_name,
|
try:
|
||||||
[
|
logging.error("Collection still not found. Creating collection again.")
|
||||||
DataPoint(
|
await vector_client.create_collection(dataset_name)
|
||||||
id = chunk["chunk_id"],
|
except:
|
||||||
payload = dict(text = chunk["text"]),
|
pass
|
||||||
embed_field = "text"
|
|
||||||
) for chunk in dataset_chunks
|
async def create_collection_retry(dataset_name, dataset_chunks):
|
||||||
],
|
await vector_client.create_data_points(
|
||||||
)
|
dataset_name,
|
||||||
|
[
|
||||||
|
DataPoint(
|
||||||
|
id = chunk["chunk_id"],
|
||||||
|
payload = dict(text = chunk["text"]),
|
||||||
|
embed_field = "text"
|
||||||
|
) for chunk in dataset_chunks
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
await create_collection_retry(dataset_name, dataset_chunks)
|
||||||
|
except Exception:
|
||||||
|
logging.error("Collection not found in create data points.")
|
||||||
|
await create_collection_retry(dataset_name, dataset_chunks)
|
||||||
|
|
||||||
return identified_chunks
|
return identified_chunks
|
||||||
|
|
|
||||||
0
cognee/modules/data/__init__.py
Normal file
0
cognee/modules/data/__init__.py
Normal file
0
cognee/modules/data/extraction/__init__.py
Normal file
0
cognee/modules/data/extraction/__init__.py
Normal file
|
|
@ -46,7 +46,7 @@ class ExtractKnowledgeGraph(dspy.Module):
|
||||||
self.lm = lm
|
self.lm = lm
|
||||||
dspy.settings.configure(lm=self.lm)
|
dspy.settings.configure(lm=self.lm)
|
||||||
self.generate_graph = dspy.TypedChainOfThought(GraphFromText)
|
self.generate_graph = dspy.TypedChainOfThought(GraphFromText)
|
||||||
nltk.download('stopwords')
|
nltk.download("stopwords", quiet = True)
|
||||||
|
|
||||||
def forward(self, context: str, question: str):
|
def forward(self, context: str, question: str):
|
||||||
context = remove_stop_words(context)
|
context = remove_stop_words(context)
|
||||||
|
|
|
||||||
0
cognee/tests/__init__.py
Normal file
0
cognee/tests/__init__.py
Normal file
35
cognee/tests/test_library.py
Normal file → Executable file
35
cognee/tests/test_library.py
Normal file → Executable file
|
|
@ -1,21 +1,23 @@
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
from os import path
|
from os import path
|
||||||
from cognee import config, prune
|
import pathlib
|
||||||
|
|
||||||
data_directory_path = path.abspath("../.data")
|
|
||||||
config.data_root_directory(data_directory_path)
|
|
||||||
|
|
||||||
cognee_directory_path = path.abspath("../.cognee_system")
|
|
||||||
config.system_root_directory(cognee_directory_path)
|
|
||||||
|
|
||||||
await prune.prune_system()
|
|
||||||
from os import path
|
|
||||||
import cognee
|
import cognee
|
||||||
|
|
||||||
dataset_name = "explanations"
|
print("Working dir: ", str(pathlib.Path(__file__).parent))
|
||||||
await cognee.add([path.abspath("../cognee/.test_data/Natural language processing.txt")], dataset_name)
|
data_directory_path = str(pathlib.Path(path.join(pathlib.Path(__file__).parent, "../../.data")).resolve())
|
||||||
|
print("Data dir: ", data_directory_path)
|
||||||
|
cognee.config.data_root_directory(data_directory_path)
|
||||||
|
|
||||||
|
cognee_directory_path = str(pathlib.Path(path.join(pathlib.Path(__file__).parent, "../../.cognee_system")).resolve())
|
||||||
|
print("System dir: ", cognee_directory_path)
|
||||||
|
cognee.config.system_root_directory(cognee_directory_path)
|
||||||
|
|
||||||
|
await cognee.prune.prune_system()
|
||||||
|
|
||||||
|
dataset_name = "cs_explanations"
|
||||||
|
explanation_file_path = path.join(pathlib.Path(__file__).parent, "test_data/Natural_language_processing.txt")
|
||||||
|
await cognee.add([explanation_file_path], dataset_name)
|
||||||
|
|
||||||
dataset_name = "short_stories"
|
dataset_name = "short_stories"
|
||||||
# data_directory_path is defined above
|
# data_directory_path is defined above
|
||||||
await cognee.add("data://" + data_directory_path, dataset_name)
|
await cognee.add("data://" + data_directory_path, dataset_name)
|
||||||
|
|
@ -34,7 +36,8 @@ async def main():
|
||||||
Some notable LLMs are OpenAI's GPT series of models (e.g., GPT-3.5 and GPT-4, used in ChatGPT and Microsoft Copilot), Google's PaLM and Gemini (the latter of which is currently used in the chatbot of the same name), xAI's Grok, Meta's LLaMA family of open-source models, Anthropic's Claude models, Mistral AI's open source models, and Databricks' open source DBRX.
|
Some notable LLMs are OpenAI's GPT series of models (e.g., GPT-3.5 and GPT-4, used in ChatGPT and Microsoft Copilot), Google's PaLM and Gemini (the latter of which is currently used in the chatbot of the same name), xAI's Grok, Meta's LLaMA family of open-source models, Anthropic's Claude models, Mistral AI's open source models, and Databricks' open source DBRX.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
dataset_name = "explanations"
|
|
||||||
|
dataset_name = "cs_explanations"
|
||||||
await cognee.add(
|
await cognee.add(
|
||||||
[
|
[
|
||||||
text_1,
|
text_1,
|
||||||
|
|
@ -43,11 +46,9 @@ async def main():
|
||||||
dataset_name
|
dataset_name
|
||||||
)
|
)
|
||||||
|
|
||||||
graph = await cognee.cognify(dataset_name)
|
await cognee.cognify(["short_stories", "cs_explanations"])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import asyncio
|
import asyncio
|
||||||
asyncio.run(main())
|
asyncio.run(main())
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
""" This module contains utility functions for the cognee. """
|
""" This module contains utility functions for the cognee. """
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import uuid
|
||||||
|
import datetime
|
||||||
import graphistry
|
import graphistry
|
||||||
import networkx as nx
|
import networkx as nx
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
@ -11,31 +13,35 @@ import nltk
|
||||||
from posthog import Posthog
|
from posthog import Posthog
|
||||||
|
|
||||||
from cognee.config import Config
|
from cognee.config import Config
|
||||||
import uuid
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
config = Config()
|
config = Config()
|
||||||
config.load()
|
config.load()
|
||||||
|
|
||||||
|
|
||||||
def send_telemetry( posthog, event_name="COGNEE_ADD"):
|
def send_telemetry(event_name: str):
|
||||||
if os.getenv("TELEMETRY_DISABLED"):
|
if os.getenv("TELEMETRY_DISABLED"):
|
||||||
return
|
return
|
||||||
|
|
||||||
posthog = Posthog(project_api_key='phc_bbR86N876kwub62Lr3dhQ7zIeRyMMMm0fxXqxPqzLm3',
|
env = os.getenv("ENV")
|
||||||
host='https://eu.i.posthog.com')
|
if env in ["local", "test", "dev"]:
|
||||||
|
return
|
||||||
|
|
||||||
|
posthog = Posthog(
|
||||||
|
project_api_key = "phc_bbR86N876kwub62Lr3dhQ7zIeRyMMMm0fxXqxPqzLm3",
|
||||||
|
host="https://eu.i.posthog.com"
|
||||||
|
)
|
||||||
|
|
||||||
user_id = str(uuid.uuid4())
|
user_id = str(uuid.uuid4())
|
||||||
current_time = datetime.datetime.now()
|
current_time = datetime.datetime.now()
|
||||||
properties = {
|
properties = {
|
||||||
"time": current_time.strftime('%m/%d/%Y')
|
"time": current_time.strftime("%m/%d/%Y")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
posthog.capture(user_id, event_name, properties)
|
posthog.capture(user_id, event_name, properties)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print('ERROR sending telemetric data to Posthog. See exception: %s', e)
|
print("ERROR sending telemetric data to Posthog. See exception: %s", e)
|
||||||
|
|
||||||
def get_document_names(doc_input):
|
def get_document_names(doc_input):
|
||||||
"""
|
"""
|
||||||
Get a list of document names.
|
Get a list of document names.
|
||||||
|
|
@ -214,7 +220,7 @@ def sanitize_df(df):
|
||||||
|
|
||||||
|
|
||||||
def get_entities(tagged_tokens):
|
def get_entities(tagged_tokens):
|
||||||
nltk.download("maxent_ne_chunker")
|
nltk.download("maxent_ne_chunker", quiet=True)
|
||||||
from nltk.chunk import ne_chunk
|
from nltk.chunk import ne_chunk
|
||||||
return ne_chunk(tagged_tokens)
|
return ne_chunk(tagged_tokens)
|
||||||
|
|
||||||
|
|
@ -223,9 +229,9 @@ def extract_pos_tags(sentence):
|
||||||
"""Extract Part-of-Speech (POS) tags for words in a sentence."""
|
"""Extract Part-of-Speech (POS) tags for words in a sentence."""
|
||||||
|
|
||||||
# Ensure that the necessary NLTK resources are downloaded
|
# Ensure that the necessary NLTK resources are downloaded
|
||||||
nltk.download("words")
|
nltk.download("words", quiet=True)
|
||||||
nltk.download("punkt")
|
nltk.download("punkt", quiet=True)
|
||||||
nltk.download("averaged_perceptron_tagger")
|
nltk.download("averaged_perceptron_tagger", quiet=True)
|
||||||
|
|
||||||
from nltk.tag import pos_tag
|
from nltk.tag import pos_tag
|
||||||
from nltk.tokenize import word_tokenize
|
from nltk.tokenize import word_tokenize
|
||||||
|
|
@ -262,7 +268,7 @@ def extract_sentiment_vader(text):
|
||||||
"""
|
"""
|
||||||
from nltk.sentiment import SentimentIntensityAnalyzer
|
from nltk.sentiment import SentimentIntensityAnalyzer
|
||||||
|
|
||||||
nltk.download("vader_lexicon")
|
nltk.download("vader_lexicon", quiet=True)
|
||||||
|
|
||||||
# Initialize the VADER Sentiment Intensity Analyzer
|
# Initialize the VADER Sentiment Intensity Analyzer
|
||||||
sia = SentimentIntensityAnalyzer()
|
sia = SentimentIntensityAnalyzer()
|
||||||
|
|
|
||||||
550
poetry.lock
generated
550
poetry.lock
generated
|
|
@ -508,33 +508,33 @@ lxml = ["lxml"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "black"
|
name = "black"
|
||||||
version = "24.4.0"
|
version = "24.4.1"
|
||||||
description = "The uncompromising code formatter."
|
description = "The uncompromising code formatter."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "black-24.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6ad001a9ddd9b8dfd1b434d566be39b1cd502802c8d38bbb1ba612afda2ef436"},
|
{file = "black-24.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f7749fd0d97ff9415975a1432fac7df89bf13c3833cea079e55fa004d5f28c0"},
|
||||||
{file = "black-24.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3a3a092b8b756c643fe45f4624dbd5a389f770a4ac294cf4d0fce6af86addaf"},
|
{file = "black-24.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:859f3cc5d2051adadf8fd504a01e02b0fd866d7549fff54bc9202d524d2e8bd7"},
|
||||||
{file = "black-24.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dae79397f367ac8d7adb6c779813328f6d690943f64b32983e896bcccd18cbad"},
|
{file = "black-24.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59271c9c29dfa97f7fda51f56c7809b3f78e72fd8d2205189bbd23022a0618b6"},
|
||||||
{file = "black-24.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:71d998b73c957444fb7c52096c3843875f4b6b47a54972598741fe9a7f737fcb"},
|
{file = "black-24.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:5ed9c34cba223149b5a0144951a0f33d65507cf82c5449cb3c35fe4b515fea9a"},
|
||||||
{file = "black-24.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8e5537f456a22cf5cfcb2707803431d2feeb82ab3748ade280d6ccd0b40ed2e8"},
|
{file = "black-24.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9dae3ae59d6f2dc93700fd5034a3115434686e66fd6e63d4dcaa48d19880f2b0"},
|
||||||
{file = "black-24.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64e60a7edd71fd542a10a9643bf369bfd2644de95ec71e86790b063aa02ff745"},
|
{file = "black-24.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5f8698974a81af83283eb47644f2711b5261138d6d9180c863fce673cbe04b13"},
|
||||||
{file = "black-24.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd5b4f76056cecce3e69b0d4c228326d2595f506797f40b9233424e2524c070"},
|
{file = "black-24.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f404b6e77043b23d0321fb7772522b876b6de737ad3cb97d6b156638d68ce81"},
|
||||||
{file = "black-24.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:64578cf99b6b46a6301bc28bdb89f9d6f9b592b1c5837818a177c98525dbe397"},
|
{file = "black-24.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:c94e52b766477bdcd010b872ba0714d5458536dc9d0734eff6583ba7266ffd89"},
|
||||||
{file = "black-24.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f95cece33329dc4aa3b0e1a771c41075812e46cf3d6e3f1dfe3d91ff09826ed2"},
|
{file = "black-24.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:962d9e953872cdb83b97bb737ad47244ce2938054dc946685a4cad98520dab38"},
|
||||||
{file = "black-24.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4396ca365a4310beef84d446ca5016f671b10f07abdba3e4e4304218d2c71d33"},
|
{file = "black-24.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d8e3b2486b7dd522b1ab2ba1ec4907f0aa8f5e10a33c4271fb331d1d10b70c"},
|
||||||
{file = "black-24.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d99dfdf37a2a00a6f7a8dcbd19edf361d056ee51093b2445de7ca09adac965"},
|
{file = "black-24.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed77e214b785148f57e43ca425b6e0850165144aa727d66ac604e56a70bb7825"},
|
||||||
{file = "black-24.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:21f9407063ec71c5580b8ad975653c66508d6a9f57bd008bb8691d273705adcd"},
|
{file = "black-24.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:4ef4764437d7eba8386689cd06e1fb5341ee0ae2e9e22582b21178782de7ed94"},
|
||||||
{file = "black-24.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:652e55bb722ca026299eb74e53880ee2315b181dfdd44dca98e43448620ddec1"},
|
{file = "black-24.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:92b183f8eef5baf7b20a513abcf982ad616f544f593f6688bb2850d2982911f1"},
|
||||||
{file = "black-24.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f2966b9b2b3b7104fca9d75b2ee856fe3fdd7ed9e47c753a4bb1a675f2caab8"},
|
{file = "black-24.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:945abd7b3572add997757c94295bb3e73c6ffaf3366b1f26cb2356a4bffd1dc3"},
|
||||||
{file = "black-24.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bb9ca06e556a09f7f7177bc7cb604e5ed2d2df1e9119e4f7d2f1f7071c32e5d"},
|
{file = "black-24.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db5154b9e5b478031371d8bc41ff37b33855fa223a6cfba456c9b73fb96f77d4"},
|
||||||
{file = "black-24.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4e71cdebdc8efeb6deaf5f2deb28325f8614d48426bed118ecc2dcaefb9ebf3"},
|
{file = "black-24.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:afc84c33c1a9aaf3d73140cee776b4ddf73ff429ffe6b7c56dc1c9c10725856d"},
|
||||||
{file = "black-24.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6644f97a7ef6f401a150cca551a1ff97e03c25d8519ee0bbc9b0058772882665"},
|
{file = "black-24.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0889f4eb8b3bdf8b189e41a71cf0dbb8141a98346cd1a2695dea5995d416e940"},
|
||||||
{file = "black-24.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:75a2d0b4f5eb81f7eebc31f788f9830a6ce10a68c91fbe0fade34fff7a2836e6"},
|
{file = "black-24.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5bb0143f175db45a55227eefd63e90849d96c266330ba31719e9667d0d5ec3b9"},
|
||||||
{file = "black-24.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb949f56a63c5e134dfdca12091e98ffb5fd446293ebae123d10fc1abad00b9e"},
|
{file = "black-24.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:713a04a78e78f28ef7e8df7a16fe075670ea164860fcef3885e4f3dffc0184b3"},
|
||||||
{file = "black-24.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:7852b05d02b5b9a8c893ab95863ef8986e4dda29af80bbbda94d7aee1abf8702"},
|
{file = "black-24.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:171959bc879637a8cdbc53dc3fddae2a83e151937a28cf605fd175ce61e0e94a"},
|
||||||
{file = "black-24.4.0-py3-none-any.whl", hash = "sha256:74eb9b5420e26b42c00a3ff470dc0cd144b80a766128b1771d07643165e08d0e"},
|
{file = "black-24.4.1-py3-none-any.whl", hash = "sha256:ecbab810604fe02c70b3a08afd39beb599f7cc9afd13e81f5336014133b4fe35"},
|
||||||
{file = "black-24.4.0.tar.gz", hash = "sha256:f07b69fda20578367eaebbd670ff8fc653ab181e1ff95d84497f9fa20e7d0641"},
|
{file = "black-24.4.1.tar.gz", hash = "sha256:5241612dc8cad5b6fd47432b8bd04db80e07cfbc53bb69e9ae18985063bcb8dd"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -572,17 +572,17 @@ css = ["tinycss2 (>=1.1.0,<1.3)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "boto3"
|
name = "boto3"
|
||||||
version = "1.34.88"
|
version = "1.34.91"
|
||||||
description = "The AWS SDK for Python"
|
description = "The AWS SDK for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "boto3-1.34.88-py3-none-any.whl", hash = "sha256:1bd4cef11b7c5f293cede50f3d33ca89fe3413c51f1864f40163c56a732dd6b3"},
|
{file = "boto3-1.34.91-py3-none-any.whl", hash = "sha256:97fac686c47647db4b44e4789317e4aeecd38511d71e84f8d20abe33eb630ff1"},
|
||||||
{file = "boto3-1.34.88.tar.gz", hash = "sha256:168894499578a9d69d6f7deb5811952bf4171c51b95749a9aef32cf67bc71f87"},
|
{file = "boto3-1.34.91.tar.gz", hash = "sha256:5077917041adaaae15eeca340289547ef905ca7e11516e9bd22d394fb5057d2a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
botocore = ">=1.34.88,<1.35.0"
|
botocore = ">=1.34.91,<1.35.0"
|
||||||
jmespath = ">=0.7.1,<2.0.0"
|
jmespath = ">=0.7.1,<2.0.0"
|
||||||
s3transfer = ">=0.10.0,<0.11.0"
|
s3transfer = ">=0.10.0,<0.11.0"
|
||||||
|
|
||||||
|
|
@ -591,13 +591,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "botocore"
|
name = "botocore"
|
||||||
version = "1.34.88"
|
version = "1.34.91"
|
||||||
description = "Low-level, data-driven core of boto 3."
|
description = "Low-level, data-driven core of boto 3."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "botocore-1.34.88-py3-none-any.whl", hash = "sha256:e87a660599ed3e14b2a770f4efc3df2f2f6d04f3c7bfd64ddbae186667864a7b"},
|
{file = "botocore-1.34.91-py3-none-any.whl", hash = "sha256:4d1b13f2b1c28ce1743b1e5895ae62bb7e67f892b51882164ea19c27a130852b"},
|
||||||
{file = "botocore-1.34.88.tar.gz", hash = "sha256:36f2e9e8dfa856e55dbbe703aea601f134db3fddc3615f1020a755b27fd26a5e"},
|
{file = "botocore-1.34.91.tar.gz", hash = "sha256:93ef7071292a1b2b9fc26537f8ae3a8227da1177969241939ea3fbdb1a1a1d0c"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -611,6 +611,17 @@ urllib3 = [
|
||||||
[package.extras]
|
[package.extras]
|
||||||
crt = ["awscrt (==0.20.9)"]
|
crt = ["awscrt (==0.20.9)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cachetools"
|
||||||
|
version = "5.3.3"
|
||||||
|
description = "Extensible memoizing collections and decorators"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
files = [
|
||||||
|
{file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"},
|
||||||
|
{file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cairocffi"
|
name = "cairocffi"
|
||||||
version = "1.6.1"
|
version = "1.6.1"
|
||||||
|
|
@ -967,63 +978,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "coverage"
|
name = "coverage"
|
||||||
version = "7.4.4"
|
version = "7.5.0"
|
||||||
description = "Code coverage measurement for Python"
|
description = "Code coverage measurement for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"},
|
{file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"},
|
{file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"},
|
{file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"},
|
{file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"},
|
{file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"},
|
{file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"},
|
{file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"},
|
{file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"},
|
{file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"},
|
||||||
{file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"},
|
{file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"},
|
{file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"},
|
{file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"},
|
{file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"},
|
{file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"},
|
{file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"},
|
{file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"},
|
{file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"},
|
{file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"},
|
{file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"},
|
||||||
{file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"},
|
{file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"},
|
{file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"},
|
{file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"},
|
{file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"},
|
{file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"},
|
{file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"},
|
{file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"},
|
{file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"},
|
{file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"},
|
{file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"},
|
||||||
{file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"},
|
{file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"},
|
{file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"},
|
{file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"},
|
{file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"},
|
{file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"},
|
{file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"},
|
{file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"},
|
{file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"},
|
{file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"},
|
{file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"},
|
||||||
{file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"},
|
{file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"},
|
{file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"},
|
{file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"},
|
{file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"},
|
{file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"},
|
{file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"},
|
{file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"},
|
{file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"},
|
{file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"},
|
{file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"},
|
||||||
{file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"},
|
{file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"},
|
||||||
{file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"},
|
{file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"},
|
||||||
{file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"},
|
{file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
|
@ -1223,6 +1234,20 @@ files = [
|
||||||
{file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
|
{file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "deprecation"
|
||||||
|
version = "2.1.0"
|
||||||
|
description = "A library to handle automated deprecations"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
files = [
|
||||||
|
{file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"},
|
||||||
|
{file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
packaging = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dill"
|
name = "dill"
|
||||||
version = "0.3.7"
|
version = "0.3.7"
|
||||||
|
|
@ -2824,13 +2849,13 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jupyterlab-server"
|
name = "jupyterlab-server"
|
||||||
version = "2.26.0"
|
version = "2.27.1"
|
||||||
description = "A set of server components for JupyterLab and JupyterLab like applications."
|
description = "A set of server components for JupyterLab and JupyterLab like applications."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "jupyterlab_server-2.26.0-py3-none-any.whl", hash = "sha256:54622cbd330526a385ee0c1fdccdff3a1e7219bf3e864a335284a1270a1973df"},
|
{file = "jupyterlab_server-2.27.1-py3-none-any.whl", hash = "sha256:f5e26156e5258b24d532c84e7c74cc212e203bff93eb856f81c24c16daeecc75"},
|
||||||
{file = "jupyterlab_server-2.26.0.tar.gz", hash = "sha256:9b3ba91cf2837f7f124fca36d63f3ca80ace2bed4898a63dd47e6598c1ab006f"},
|
{file = "jupyterlab_server-2.27.1.tar.gz", hash = "sha256:097b5ac709b676c7284ac9c5e373f11930a561f52cd5a86e4fc7e5a9c8a8631d"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -2990,6 +3015,42 @@ files = [
|
||||||
{file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"},
|
{file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lancedb"
|
||||||
|
version = "0.6.10"
|
||||||
|
description = "lancedb"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:c7e10eb5f5fdb22452d7678e9bf3df14e2463331868607067aba4ba19a0f4022"},
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:3a1548bf3820ff606e4efce840bd0e979206eb1815915fff9f738c1d8e337293"},
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3874f8aee55c5b4f41b953f4eac28d69c8a9bc10ad992fc7fd2b699a1f4b88ed"},
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:73c0909ac7ae95d8128d25936fc0ff670cf6d9ae1b44e06ec48f3a60081d61ca"},
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:750fb23a6eaa7daea241a124be3970447d45ace1c4f894df197e9869d677b6ba"},
|
||||||
|
{file = "lancedb-0.6.10-cp38-abi3-win_amd64.whl", hash = "sha256:06a299d91e1d9d2663fea7086efc784bf8643f51ff1532617c4910ec63cd2004"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
attrs = ">=21.3.0"
|
||||||
|
cachetools = "*"
|
||||||
|
deprecation = "*"
|
||||||
|
overrides = ">=0.7"
|
||||||
|
pydantic = ">=1.10"
|
||||||
|
pylance = "0.10.12"
|
||||||
|
ratelimiter = ">=1.0,<2.0"
|
||||||
|
requests = ">=2.31.0"
|
||||||
|
retry = ">=0.9.2"
|
||||||
|
semver = ">=3.0"
|
||||||
|
tqdm = ">=4.27.0"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
azure = ["adlfs (>=2024.2.0)"]
|
||||||
|
clip = ["open-clip", "pillow", "torch"]
|
||||||
|
dev = ["pre-commit", "ruff"]
|
||||||
|
docs = ["mkdocs", "mkdocs-jupyter", "mkdocs-material", "mkdocstrings[python]"]
|
||||||
|
embeddings = ["awscli (>=1.29.57)", "boto3 (>=1.28.57)", "botocore (>=1.31.57)", "cohere", "google-generativeai", "huggingface-hub", "instructorembedding", "open-clip-torch", "openai (>=1.6.1)", "pillow", "sentence-transformers", "torch"]
|
||||||
|
tests = ["aiohttp", "boto3", "duckdb", "pandas (>=1.4)", "polars (>=0.19)", "pytest", "pytest-asyncio", "pytest-mock", "pytz", "tantivy"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "loguru"
|
name = "loguru"
|
||||||
version = "0.7.2"
|
version = "0.7.2"
|
||||||
|
|
@ -3277,34 +3338,34 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs"
|
name = "mkdocs"
|
||||||
version = "1.5.3"
|
version = "1.6.0"
|
||||||
description = "Project documentation with Markdown."
|
description = "Project documentation with Markdown."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"},
|
{file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"},
|
||||||
{file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"},
|
{file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
click = ">=7.0"
|
click = ">=7.0"
|
||||||
colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""}
|
colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""}
|
||||||
ghp-import = ">=1.0"
|
ghp-import = ">=1.0"
|
||||||
importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""}
|
importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
|
||||||
jinja2 = ">=2.11.1"
|
jinja2 = ">=2.11.1"
|
||||||
markdown = ">=3.2.1"
|
markdown = ">=3.3.6"
|
||||||
markupsafe = ">=2.0.1"
|
markupsafe = ">=2.0.1"
|
||||||
mergedeep = ">=1.3.4"
|
mergedeep = ">=1.3.4"
|
||||||
|
mkdocs-get-deps = ">=0.2.0"
|
||||||
packaging = ">=20.5"
|
packaging = ">=20.5"
|
||||||
pathspec = ">=0.11.1"
|
pathspec = ">=0.11.1"
|
||||||
platformdirs = ">=2.2.0"
|
|
||||||
pyyaml = ">=5.1"
|
pyyaml = ">=5.1"
|
||||||
pyyaml-env-tag = ">=0.1"
|
pyyaml-env-tag = ">=0.1"
|
||||||
watchdog = ">=2.0"
|
watchdog = ">=2.0"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
i18n = ["babel (>=2.9.0)"]
|
i18n = ["babel (>=2.9.0)"]
|
||||||
min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"]
|
min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs-autorefs"
|
name = "mkdocs-autorefs"
|
||||||
|
|
@ -3322,6 +3383,23 @@ Markdown = ">=3.3"
|
||||||
markupsafe = ">=2.0.1"
|
markupsafe = ">=2.0.1"
|
||||||
mkdocs = ">=1.1"
|
mkdocs = ">=1.1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mkdocs-get-deps"
|
||||||
|
version = "0.2.0"
|
||||||
|
description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"},
|
||||||
|
{file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""}
|
||||||
|
mergedeep = ">=1.3.4"
|
||||||
|
platformdirs = ">=2.2.0"
|
||||||
|
pyyaml = ">=5.1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs-jupyter"
|
name = "mkdocs-jupyter"
|
||||||
version = "0.24.7"
|
version = "0.24.7"
|
||||||
|
|
@ -3342,13 +3420,13 @@ pygments = ">2.12.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs-material"
|
name = "mkdocs-material"
|
||||||
version = "9.5.18"
|
version = "9.5.19"
|
||||||
description = "Documentation that simply works"
|
description = "Documentation that simply works"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "mkdocs_material-9.5.18-py3-none-any.whl", hash = "sha256:1e0e27fc9fe239f9064318acf548771a4629d5fd5dfd45444fd80a953fe21eb4"},
|
{file = "mkdocs_material-9.5.19-py3-none-any.whl", hash = "sha256:ea96e150b6c95f5e4ffe47d78bb712c7bacdd91d2a0bec47f46b6fa0705a86ec"},
|
||||||
{file = "mkdocs_material-9.5.18.tar.gz", hash = "sha256:a43f470947053fa2405c33995f282d24992c752a50114f23f30da9d8d0c57e62"},
|
{file = "mkdocs_material-9.5.19.tar.gz", hash = "sha256:7473e06e17e23af608a30ef583fdde8f36389dd3ef56b1d503eed54c89c9618c"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -3357,7 +3435,7 @@ cairosvg = {version = ">=2.6,<3.0", optional = true, markers = "extra == \"imagi
|
||||||
colorama = ">=0.4,<1.0"
|
colorama = ">=0.4,<1.0"
|
||||||
jinja2 = ">=3.0,<4.0"
|
jinja2 = ">=3.0,<4.0"
|
||||||
markdown = ">=3.2,<4.0"
|
markdown = ">=3.2,<4.0"
|
||||||
mkdocs = ">=1.5.3,<1.6.0"
|
mkdocs = ">=1.6,<2.0"
|
||||||
mkdocs-material-extensions = ">=1.3,<2.0"
|
mkdocs-material-extensions = ">=1.3,<2.0"
|
||||||
paginate = ">=0.5,<1.0"
|
paginate = ">=0.5,<1.0"
|
||||||
pillow = {version = ">=10.2,<11.0", optional = true, markers = "extra == \"imaging\""}
|
pillow = {version = ">=10.2,<11.0", optional = true, markers = "extra == \"imaging\""}
|
||||||
|
|
@ -3615,38 +3693,38 @@ dill = ">=0.3.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mypy"
|
name = "mypy"
|
||||||
version = "1.9.0"
|
version = "1.10.0"
|
||||||
description = "Optional static typing for Python"
|
description = "Optional static typing for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"},
|
{file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"},
|
||||||
{file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"},
|
{file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"},
|
||||||
{file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"},
|
{file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"},
|
||||||
{file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"},
|
{file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"},
|
||||||
{file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"},
|
{file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"},
|
||||||
{file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"},
|
{file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"},
|
||||||
{file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"},
|
{file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"},
|
||||||
{file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"},
|
{file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"},
|
||||||
{file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"},
|
{file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"},
|
||||||
{file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"},
|
{file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"},
|
||||||
{file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"},
|
{file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"},
|
||||||
{file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"},
|
{file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"},
|
||||||
{file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"},
|
{file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"},
|
||||||
{file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"},
|
{file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"},
|
||||||
{file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"},
|
{file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"},
|
||||||
{file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"},
|
{file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"},
|
||||||
{file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"},
|
{file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"},
|
||||||
{file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"},
|
{file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"},
|
||||||
{file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"},
|
{file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"},
|
||||||
{file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"},
|
{file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"},
|
||||||
{file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"},
|
{file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"},
|
||||||
{file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"},
|
{file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"},
|
||||||
{file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"},
|
{file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"},
|
||||||
{file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"},
|
{file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"},
|
||||||
{file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"},
|
{file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"},
|
||||||
{file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"},
|
{file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"},
|
||||||
{file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"},
|
{file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -4475,18 +4553,19 @@ xmp = ["defusedxml"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "platformdirs"
|
name = "platformdirs"
|
||||||
version = "4.2.0"
|
version = "4.2.1"
|
||||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
|
{file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"},
|
||||||
{file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
|
{file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
|
docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
|
||||||
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
|
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
|
||||||
|
type = ["mypy (>=1.8)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pluggy"
|
name = "pluggy"
|
||||||
|
|
@ -4657,49 +4736,60 @@ files = [
|
||||||
[package.extras]
|
[package.extras]
|
||||||
tests = ["pytest"]
|
tests = ["pytest"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "py"
|
||||||
|
version = "1.11.0"
|
||||||
|
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
|
files = [
|
||||||
|
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
|
||||||
|
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyarrow"
|
name = "pyarrow"
|
||||||
version = "15.0.2"
|
version = "15.0.0"
|
||||||
description = "Python library for Apache Arrow"
|
description = "Python library for Apache Arrow"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:88b340f0a1d05b5ccc3d2d986279045655b1fe8e41aba6ca44ea28da0d1455d8"},
|
{file = "pyarrow-15.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0a524532fd6dd482edaa563b686d754c70417c2f72742a8c990b322d4c03a15d"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eaa8f96cecf32da508e6c7f69bb8401f03745c050c1dd42ec2596f2e98deecac"},
|
{file = "pyarrow-15.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a6bdb314affa9c2e0d5dddf3d9cbb9ef4a8dddaa68669975287d47ece67642"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c6753ed4f6adb8461e7c383e418391b8d8453c5d67e17f416c3a5d5709afbd"},
|
{file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66958fd1771a4d4b754cd385835e66a3ef6b12611e001d4e5edfcef5f30391e2"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f639c059035011db8c0497e541a8a45d98a58dbe34dc8fadd0ef128f2cee46e5"},
|
{file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f500956a49aadd907eaa21d4fff75f73954605eaa41f61cb94fb008cf2e00c6"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:290e36a59a0993e9a5224ed2fb3e53375770f07379a0ea03ee2fce2e6d30b423"},
|
{file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6f87d9c4f09e049c2cade559643424da84c43a35068f2a1c4653dc5b1408a929"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06c2bb2a98bc792f040bef31ad3e9be6a63d0cb39189227c08a7d955db96816e"},
|
{file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85239b9f93278e130d86c0e6bb455dcb66fc3fd891398b9d45ace8799a871a1e"},
|
||||||
{file = "pyarrow-15.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:f7a197f3670606a960ddc12adbe8075cea5f707ad7bf0dffa09637fdbb89f76c"},
|
{file = "pyarrow-15.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b8d43e31ca16aa6e12402fcb1e14352d0d809de70edd185c7650fe80e0769e3"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5f8bc839ea36b1f99984c78e06e7a06054693dc2af8920f6fb416b5bca9944e4"},
|
{file = "pyarrow-15.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:fa7cd198280dbd0c988df525e50e35b5d16873e2cdae2aaaa6363cdb64e3eec5"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5e81dfb4e519baa6b4c80410421528c214427e77ca0ea9461eb4097c328fa33"},
|
{file = "pyarrow-15.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8780b1a29d3c8b21ba6b191305a2a607de2e30dab399776ff0aa09131e266340"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4f240852b302a7af4646c8bfe9950c4691a419847001178662a98915fd7ee7"},
|
{file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0ec198ccc680f6c92723fadcb97b74f07c45ff3fdec9dd765deb04955ccf19"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e7d9cfb5a1e648e172428c7a42b744610956f3b70f524aa3a6c02a448ba853e"},
|
{file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036a7209c235588c2f07477fe75c07e6caced9b7b61bb897c8d4e52c4b5f9555"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2d4f905209de70c0eb5b2de6763104d5a9a37430f137678edfb9a675bac9cd98"},
|
{file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2bd8a0e5296797faf9a3294e9fa2dc67aa7f10ae2207920dbebb785c77e9dbe5"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90adb99e8ce5f36fbecbbc422e7dcbcbed07d985eed6062e459e23f9e71fd197"},
|
{file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e8ebed6053dbe76883a822d4e8da36860f479d55a762bd9e70d8494aed87113e"},
|
||||||
{file = "pyarrow-15.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:b116e7fd7889294cbd24eb90cd9bdd3850be3738d61297855a71ac3b8124ee38"},
|
{file = "pyarrow-15.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d53a9d1b2b5bd7d5e4cd84d018e2a45bc9baaa68f7e6e3ebed45649900ba99"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:25335e6f1f07fdaa026a61c758ee7d19ce824a866b27bba744348fa73bb5a440"},
|
{file = "pyarrow-15.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9950a9c9df24090d3d558b43b97753b8f5867fb8e521f29876aa021c52fda351"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:90f19e976d9c3d8e73c80be84ddbe2f830b6304e4c576349d9360e335cd627fc"},
|
{file = "pyarrow-15.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:003d680b5e422d0204e7287bb3fa775b332b3fce2996aa69e9adea23f5c8f970"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a22366249bf5fd40ddacc4f03cd3160f2d7c247692945afb1899bab8a140ddfb"},
|
{file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f75fce89dad10c95f4bf590b765e3ae98bcc5ba9f6ce75adb828a334e26a3d40"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2a335198f886b07e4b5ea16d08ee06557e07db54a8400cc0d03c7f6a22f785f"},
|
{file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca9cb0039923bec49b4fe23803807e4ef39576a2bec59c32b11296464623dc2"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e6d459c0c22f0b9c810a3917a1de3ee704b021a5fb8b3bacf968eece6df098f"},
|
{file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ed5a78ed29d171d0acc26a305a4b7f83c122d54ff5270810ac23c75813585e4"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:033b7cad32198754d93465dcfb71d0ba7cb7cd5c9afd7052cab7214676eec38b"},
|
{file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6eda9e117f0402dfcd3cd6ec9bfee89ac5071c48fc83a84f3075b60efa96747f"},
|
||||||
{file = "pyarrow-15.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:29850d050379d6e8b5a693098f4de7fd6a2bea4365bfd073d7c57c57b95041ee"},
|
{file = "pyarrow-15.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a3a6180c0e8f2727e6f1b1c87c72d3254cac909e609f35f22532e4115461177"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7167107d7fb6dcadb375b4b691b7e316f4368f39f6f45405a05535d7ad5e5058"},
|
{file = "pyarrow-15.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19a8918045993349b207de72d4576af0191beef03ea655d8bdb13762f0cd6eac"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e85241b44cc3d365ef950432a1b3bd44ac54626f37b2e3a0cc89c20e45dfd8bf"},
|
{file = "pyarrow-15.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0ec076b32bacb6666e8813a22e6e5a7ef1314c8069d4ff345efa6246bc38593"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:248723e4ed3255fcd73edcecc209744d58a9ca852e4cf3d2577811b6d4b59818"},
|
{file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db1769e5d0a77eb92344c7382d6543bea1164cca3704f84aa44e26c67e320fb"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff3bdfe6f1b81ca5b73b70a8d482d37a766433823e0c21e22d1d7dde76ca33f"},
|
{file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2617e3bf9df2a00020dd1c1c6dce5cc343d979efe10bc401c0632b0eef6ef5b"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:f3d77463dee7e9f284ef42d341689b459a63ff2e75cee2b9302058d0d98fe142"},
|
{file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d31c1d45060180131caf10f0f698e3a782db333a422038bf7fe01dace18b3a31"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:8c1faf2482fb89766e79745670cbca04e7018497d85be9242d5350cba21357e1"},
|
{file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:c8c287d1d479de8269398b34282e206844abb3208224dbdd7166d580804674b7"},
|
||||||
{file = "pyarrow-15.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:28f3016958a8e45a1069303a4a4f6a7d4910643fc08adb1e2e4a7ff056272ad3"},
|
{file = "pyarrow-15.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:07eb7f07dc9ecbb8dace0f58f009d3a29ee58682fcdc91337dfeb51ea618a75b"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:89722cb64286ab3d4daf168386f6968c126057b8c7ec3ef96302e81d8cdb8ae4"},
|
{file = "pyarrow-15.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:47af7036f64fce990bb8a5948c04722e4e3ea3e13b1007ef52dfe0aa8f23cf7f"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd0ba387705044b3ac77b1b317165c0498299b08261d8122c96051024f953cd5"},
|
{file = "pyarrow-15.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93768ccfff85cf044c418bfeeafce9a8bb0cee091bd8fd19011aff91e58de540"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad2459bf1f22b6a5cdcc27ebfd99307d5526b62d217b984b9f5c974651398832"},
|
{file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ee87fd6892700960d90abb7b17a72a5abb3b64ee0fe8db6c782bcc2d0dc0b4"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58922e4bfece8b02abf7159f1f53a8f4d9f8e08f2d988109126c17c3bb261f22"},
|
{file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001fca027738c5f6be0b7a3159cc7ba16a5c52486db18160909a0831b063c4e4"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:adccc81d3dc0478ea0b498807b39a8d41628fa9210729b2f718b78cb997c7c91"},
|
{file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:d1c48648f64aec09accf44140dccb92f4f94394b8d79976c426a5b79b11d4fa7"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:8bd2baa5fe531571847983f36a30ddbf65261ef23e496862ece83bdceb70420d"},
|
{file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:972a0141be402bb18e3201448c8ae62958c9c7923dfaa3b3d4530c835ac81aed"},
|
||||||
{file = "pyarrow-15.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6669799a1d4ca9da9c7e06ef48368320f5856f36f9a4dd31a11839dda3f6cc8c"},
|
{file = "pyarrow-15.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f01fc5cf49081426429127aa2d427d9d98e1cb94a32cb961d583a70b7c4504e6"},
|
||||||
{file = "pyarrow-15.0.2.tar.gz", hash = "sha256:9c9bc803cb3b7bfacc1e96ffbfd923601065d9d3f911179d81e72d99fd74a3d9"},
|
{file = "pyarrow-15.0.0.tar.gz", hash = "sha256:876858f549d540898f927eba4ef77cd549ad8d24baa3207cf1b72e5788b50e83"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -4852,6 +4942,32 @@ files = [
|
||||||
plugins = ["importlib-metadata"]
|
plugins = ["importlib-metadata"]
|
||||||
windows-terminal = ["colorama (>=0.4.6)"]
|
windows-terminal = ["colorama (>=0.4.6)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pylance"
|
||||||
|
version = "0.10.12"
|
||||||
|
description = "python wrapper for Lance columnar format"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:30cbcca078edeb37e11ae86cf9287d81ce6c0c07ba77239284b369a4b361497b"},
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:e558163ff6035d518706cc66848497219ccc755e2972b8f3b1706a3e1fd800fd"},
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75afb39f71d7f12429f9b4d380eb6cf6aed179ae5a1c5d16cc768373a1521f87"},
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:3de391dfc3a99bdb245fd1e27ef242be769a94853f802ef57f246e9a21358d32"},
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:34a5278b90f4cbcf21261353976127aa2ffbbd7d068810f0a2b0c1aa0334022a"},
|
||||||
|
{file = "pylance-0.10.12-cp38-abi3-win_amd64.whl", hash = "sha256:6cef5975d513097fd2c22692296c9a5a138928f38d02cd34ab63a7369abc1463"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
numpy = ">=1.22"
|
||||||
|
pyarrow = ">=12,<15.0.1"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
benchmarks = ["pytest-benchmark"]
|
||||||
|
dev = ["ruff (==0.2.2)"]
|
||||||
|
ray = ["ray[data]"]
|
||||||
|
tests = ["boto3", "datasets", "duckdb", "h5py (<3.11)", "ml-dtypes", "pandas", "pillow", "polars[pandas,pyarrow]", "pytest", "tensorflow", "tqdm"]
|
||||||
|
torch = ["torch"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pylint"
|
name = "pylint"
|
||||||
version = "3.1.0"
|
version = "3.1.0"
|
||||||
|
|
@ -5264,13 +5380,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""}
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "qdrant-client"
|
name = "qdrant-client"
|
||||||
version = "1.8.2"
|
version = "1.9.0"
|
||||||
description = "Client library for the Qdrant vector search engine"
|
description = "Client library for the Qdrant vector search engine"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "qdrant_client-1.8.2-py3-none-any.whl", hash = "sha256:ee5341c0486d09e4346b0f5ef7781436e6d8cdbf1d5ecddfde7adb3647d353a8"},
|
{file = "qdrant_client-1.9.0-py3-none-any.whl", hash = "sha256:ee02893eab1f642481b1ac1e38eb68ec30bab0f673bef7cc05c19fa5d2cbf43e"},
|
||||||
{file = "qdrant_client-1.8.2.tar.gz", hash = "sha256:65078d5328bc0393f42a46a31cd319a989b8285bf3958360acf1dffffdf4cc4e"},
|
{file = "qdrant_client-1.9.0.tar.gz", hash = "sha256:7b1792f616651a6f0a76312f945c13d088e9451726795b82ce0350f7df3b7981"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -5283,17 +5399,31 @@ pydantic = ">=1.10.8"
|
||||||
urllib3 = ">=1.26.14,<3"
|
urllib3 = ">=1.26.14,<3"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
fastembed = ["fastembed (==0.2.5)"]
|
fastembed = ["fastembed (==0.2.6)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ratelimiter"
|
||||||
|
version = "1.2.0.post0"
|
||||||
|
description = "Simple python rate limiting object"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
files = [
|
||||||
|
{file = "ratelimiter-1.2.0.post0-py3-none-any.whl", hash = "sha256:a52be07bc0bb0b3674b4b304550f10c769bbb00fead3072e035904474259809f"},
|
||||||
|
{file = "ratelimiter-1.2.0.post0.tar.gz", hash = "sha256:5c395dcabdbbde2e5178ef3f89b568a3066454a6ddc223b76473dac22f89b4f7"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
test = ["pytest (>=3.0)", "pytest-asyncio"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redis"
|
name = "redis"
|
||||||
version = "5.0.3"
|
version = "5.0.4"
|
||||||
description = "Python client for Redis database and key-value store"
|
description = "Python client for Redis database and key-value store"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "redis-5.0.3-py3-none-any.whl", hash = "sha256:5da9b8fe9e1254293756c16c008e8620b3d15fcc6dde6babde9541850e72a32d"},
|
{file = "redis-5.0.4-py3-none-any.whl", hash = "sha256:7adc2835c7a9b5033b7ad8f8918d09b7344188228809c98df07af226d39dec91"},
|
||||||
{file = "redis-5.0.3.tar.gz", hash = "sha256:4973bae7444c0fbed64a06b87446f79361cb7e4ec1538c022d696ed7a5015580"},
|
{file = "redis-5.0.4.tar.gz", hash = "sha256:ec31f2ed9675cc54c21ba854cfe0462e6faf1d83c8ce5944709db8a4700b9c61"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -5305,13 +5435,13 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "referencing"
|
name = "referencing"
|
||||||
version = "0.34.0"
|
version = "0.35.0"
|
||||||
description = "JSON Referencing + Python"
|
description = "JSON Referencing + Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"},
|
{file = "referencing-0.35.0-py3-none-any.whl", hash = "sha256:8080727b30e364e5783152903672df9b6b091c926a146a759080b62ca3126cd6"},
|
||||||
{file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"},
|
{file = "referencing-0.35.0.tar.gz", hash = "sha256:191e936b0c696d0af17ad7430a3dc68e88bc11be6514f4757dc890f04ab05889"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -5455,6 +5585,21 @@ files = [
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
types-setuptools = ">=69.1.0"
|
types-setuptools = ">=69.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "retry"
|
||||||
|
version = "0.9.2"
|
||||||
|
description = "Easy to use retry decorator."
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
files = [
|
||||||
|
{file = "retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606"},
|
||||||
|
{file = "retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
decorator = ">=3.4.2"
|
||||||
|
py = ">=1.4.26,<2.0.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rfc3339-validator"
|
name = "rfc3339-validator"
|
||||||
version = "0.1.4"
|
version = "0.1.4"
|
||||||
|
|
@ -6218,13 +6363,13 @@ blobfile = ["blobfile (>=2)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tinycss2"
|
name = "tinycss2"
|
||||||
version = "1.2.1"
|
version = "1.3.0"
|
||||||
description = "A tiny CSS parser"
|
description = "A tiny CSS parser"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
|
{file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"},
|
||||||
{file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
|
{file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -6232,7 +6377,7 @@ webencodings = ">=0.4"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
doc = ["sphinx", "sphinx_rtd_theme"]
|
doc = ["sphinx", "sphinx_rtd_theme"]
|
||||||
test = ["flake8", "isort", "pytest"]
|
test = ["pytest", "ruff"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokenizers"
|
name = "tokenizers"
|
||||||
|
|
@ -6479,13 +6624,13 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-setuptools"
|
name = "types-setuptools"
|
||||||
version = "69.5.0.20240415"
|
version = "69.5.0.20240423"
|
||||||
description = "Typing stubs for setuptools"
|
description = "Typing stubs for setuptools"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "types-setuptools-69.5.0.20240415.tar.gz", hash = "sha256:ea64af0a96a674f8c40ba34c09c254f3c70bc3f218c6bffa1d0912bd91584a2f"},
|
{file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"},
|
||||||
{file = "types_setuptools-69.5.0.20240415-py3-none-any.whl", hash = "sha256:637cdb24a0d48a6ab362c09cfe3b89ecaa1c10666a8ba9452924e9a0ae00fa4a"},
|
{file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -6651,26 +6796,15 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "validators"
|
name = "validators"
|
||||||
version = "0.22.0"
|
version = "0.28.0"
|
||||||
description = "Python Data Validation for Humans™"
|
description = "Python Data Validation for Humans™"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "validators-0.22.0-py3-none-any.whl", hash = "sha256:61cf7d4a62bbae559f2e54aed3b000cea9ff3e2fdbe463f51179b92c58c9585a"},
|
{file = "validators-0.28.0-py3-none-any.whl", hash = "sha256:e0184691dea3ba82b52c161ba81d3ec1d8be8da9609f0137d1430b395b366521"},
|
||||||
{file = "validators-0.22.0.tar.gz", hash = "sha256:77b2689b172eeeb600d9605ab86194641670cdb73b60afd577142a9397873370"},
|
{file = "validators-0.28.0.tar.gz", hash = "sha256:85bc82511f6ccd0800f4c15d8c0dc546c15e369640c5ea1f24349ba0b3b17815"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs-offline = ["myst-parser (>=2.0.0)", "pypandoc-binary (>=1.11)", "sphinx (>=7.1.1)"]
|
|
||||||
docs-online = ["mkdocs (>=1.5.2)", "mkdocs-git-revision-date-localized-plugin (>=1.2.0)", "mkdocs-material (>=9.2.6)", "mkdocstrings[python] (>=0.22.0)", "pyaml (>=23.7.0)"]
|
|
||||||
hooks = ["pre-commit (>=3.3.3)"]
|
|
||||||
package = ["build (>=1.0.0)", "twine (>=4.0.2)"]
|
|
||||||
runner = ["tox (>=4.11.1)"]
|
|
||||||
sast = ["bandit[toml] (>=1.7.5)"]
|
|
||||||
testing = ["pytest (>=7.4.0)"]
|
|
||||||
tooling = ["black (>=23.7.0)", "pyright (>=1.1.325)", "ruff (>=0.0.287)"]
|
|
||||||
tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "watchdog"
|
name = "watchdog"
|
||||||
version = "4.0.0"
|
version = "4.0.0"
|
||||||
|
|
@ -6725,13 +6859,13 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "weaviate-client"
|
name = "weaviate-client"
|
||||||
version = "4.5.5"
|
version = "4.5.6"
|
||||||
description = "A python native Weaviate client"
|
description = "A python native Weaviate client"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "weaviate-client-4.5.5.tar.gz", hash = "sha256:69906588e8eda0a307ad2c5b3c7c7e0ae4b9d80202a5cc97bdd2af15293977e3"},
|
{file = "weaviate_client-4.5.6-py3-none-any.whl", hash = "sha256:bdafbf94343f621ca68bc547b5c9a5272dc6ca7953ad6a228f5ad8179021de68"},
|
||||||
{file = "weaviate_client-4.5.5-py3-none-any.whl", hash = "sha256:70cbd139f8a230723eb2400b8a3fb495055ae8c0897bd837ab58994924de0413"},
|
{file = "weaviate_client-4.5.6.tar.gz", hash = "sha256:32a2b328f0a6637228c064e04aa6004c4ba733469b81754ae4598750735a9624"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
@ -6742,7 +6876,7 @@ grpcio-tools = ">=1.57.0,<2.0.0"
|
||||||
httpx = "0.27.0"
|
httpx = "0.27.0"
|
||||||
pydantic = ">=2.5.0,<3.0.0"
|
pydantic = ">=2.5.0,<3.0.0"
|
||||||
requests = ">=2.30.0,<3.0.0"
|
requests = ">=2.30.0,<3.0.0"
|
||||||
validators = "0.22.0"
|
validators = "0.28.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webcolors"
|
name = "webcolors"
|
||||||
|
|
@ -6772,17 +6906,17 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "websocket-client"
|
name = "websocket-client"
|
||||||
version = "1.7.0"
|
version = "1.8.0"
|
||||||
description = "WebSocket client for Python with low level API options"
|
description = "WebSocket client for Python with low level API options"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
|
{file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"},
|
||||||
{file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
|
{file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
|
docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"]
|
||||||
optional = ["python-socks", "wsaccel"]
|
optional = ["python-socks", "wsaccel"]
|
||||||
test = ["websockets"]
|
test = ["websockets"]
|
||||||
|
|
||||||
|
|
@ -7110,4 +7244,4 @@ weaviate = ["weaviate-client"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.9.0,<3.12"
|
python-versions = ">=3.9.0,<3.12"
|
||||||
content-hash = "d026e03ff7f204a4026f4f980876fca84a1ac48d7dbfdcfec2c5d7656ed8355d"
|
content-hash = "9609dfc41209efd1fd5e53fd1b77353cb5bce3244ffdb65f81eee686a68b6fc5"
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ dlt = "^0.4.7"
|
||||||
duckdb = {version = "^0.10.0", extras = ["dlt"]}
|
duckdb = {version = "^0.10.0", extras = ["dlt"]}
|
||||||
overrides = "^7.7.0"
|
overrides = "^7.7.0"
|
||||||
aiofiles = "^23.2.1"
|
aiofiles = "^23.2.1"
|
||||||
qdrant-client = "^1.8.0"
|
qdrant-client = "^1.9.0"
|
||||||
duckdb-engine = "^0.11.2"
|
duckdb-engine = "^0.11.2"
|
||||||
graphistry = "^0.33.5"
|
graphistry = "^0.33.5"
|
||||||
tenacity = "^8.2.3"
|
tenacity = "^8.2.3"
|
||||||
|
|
@ -62,6 +62,7 @@ structlog = "^24.1.0"
|
||||||
tiktoken = "^0.6.0"
|
tiktoken = "^0.6.0"
|
||||||
dspy-ai = "2.4.3"
|
dspy-ai = "2.4.3"
|
||||||
posthog = "^3.5.0"
|
posthog = "^3.5.0"
|
||||||
|
lancedb = "^0.6.10"
|
||||||
|
|
||||||
|
|
||||||
[tool.poetry.extras]
|
[tool.poetry.extras]
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,33 @@
|
||||||
|
##!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
#set -e
|
||||||
|
#set -u
|
||||||
|
#
|
||||||
|
#shopt -s dotglob
|
||||||
|
#shopt -s nullglob
|
||||||
|
## verifies if python packages have proper structure
|
||||||
|
## find all directories not containing __init__
|
||||||
|
#error=
|
||||||
|
#while IFS= read -r d; do
|
||||||
|
# myarray=(`find $d -maxdepth 1 -name "*.py"`)
|
||||||
|
# if [ ${#myarray[@]} -gt 0 ]; then
|
||||||
|
# if [[ $@ == *--fix* ]]; then
|
||||||
|
# echo Will create "$d/__init__.py"
|
||||||
|
# touch "$d/__init__.py"
|
||||||
|
# else
|
||||||
|
# echo Folder "$d" lacks __init__.py file
|
||||||
|
# error="yes"
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
|
#done < <(find . -mindepth 1 -not -path "./docs/website/node_modules*" -type d -regex "^./[^.^_].*" '!' -exec test -e "{}/__init__.py" ';' -print)
|
||||||
|
#
|
||||||
|
#if [ -z $error ]; then
|
||||||
|
# exit 0
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
## error in package
|
||||||
|
#exit 1
|
||||||
|
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
@ -5,25 +35,27 @@ set -u
|
||||||
|
|
||||||
shopt -s dotglob
|
shopt -s dotglob
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
# verifies if python packages have proper structure
|
# verifies if python packages have proper structure
|
||||||
# find all directories not containing __init__
|
# find all directories not containing __init__
|
||||||
error=
|
error=
|
||||||
while IFS= read -r d; do
|
while IFS= read -r d; do
|
||||||
myarray=(`find $d -maxdepth 1 -name "*.py"`)
|
myarray=(`find "$d" -maxdepth 1 -name "*.py"`)
|
||||||
if [ ${#myarray[@]} -gt 0 ]; then
|
if [ ${#myarray[@]} -gt 0 ]; then
|
||||||
if [[ $@ == *--fix* ]]; then
|
if [[ $@ == *--fix* ]]; then
|
||||||
echo Will create "$d/__init__.py"
|
echo "Will create $d/__init__.py"
|
||||||
touch "$d/__init__.py"
|
touch "$d/__init__.py"
|
||||||
else
|
else
|
||||||
echo Folder "$d" lacks __init__.py file
|
echo "Folder $d lacks __init__.py file"
|
||||||
error="yes"
|
error="yes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done < <(find . -mindepth 1 -not -path "./docs/website/node_modules*" -type d -regex "^./[^.^_].*" '!' -exec test -e "{}/__init__.py" ';' -print)
|
done < <(find . -mindepth 1 -not \( -path "./docs*" -prune \) -not -path "./docs/website/node_modules*" -not -path "./tools*" -type d -regex "^./[^.^_].*" '!' -exec test -e "{}/__init__.py" ';' -print)
|
||||||
|
|
||||||
if [ -z $error ]; then
|
if [ -z "$error" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# error in package
|
# error in package
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue