From 10dc6b152474eb5623145670857bc62f21922aec Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 14:38:41 +0100 Subject: [PATCH 1/8] chore: Add optional dependencies Change intended optional dependencies to really be optional Chore COG-595 --- poetry.lock | 32 ++++++++++++++++---------------- pyproject.toml | 10 +++++----- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/poetry.lock b/poetry.lock index 96f9aec27..08098caad 100644 --- a/poetry.lock +++ b/poetry.lock @@ -406,7 +406,7 @@ files = [ name = "asyncpg" version = "0.30.0" description = "An asyncio PostgreSQL driver" -optional = false +optional = true python-versions = ">=3.8.0" files = [ {file = "asyncpg-0.30.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bfb4dd5ae0699bad2b233672c8fc5ccbd9ad24b89afded02341786887e37927e"}, @@ -491,7 +491,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "authlib" version = "1.3.2" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "Authlib-1.3.2-py2.py3-none-any.whl", hash = "sha256:ede026a95e9f5cdc2d4364a52103f5405e75aa156357e831ef2bfd0bc5094dfc"}, @@ -2041,7 +2041,7 @@ typing-extensions = ">=4.7,<5" name = "grpcio" version = "1.67.1" description = "HTTP/2-based RPC framework" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f"}, @@ -2108,7 +2108,7 @@ protobuf = ["grpcio-tools (>=1.67.1)"] name = "grpcio-health-checking" version = "1.67.1" description = "Standard Health Checking Service for gRPC" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "grpcio_health_checking-1.67.1-py3-none-any.whl", hash = "sha256:93753da5062152660aef2286c9b261e07dd87124a65e4dc9fbd47d1ce966b39d"}, @@ -2123,7 +2123,7 @@ protobuf = ">=5.26.1,<6.0dev" name = "grpcio-tools" version = "1.67.1" description = "Protobuf code generator for gRPC" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "grpcio_tools-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:c701aaa51fde1f2644bd94941aa94c337adb86f25cd03cf05e37387aaea25800"}, @@ -2223,7 +2223,7 @@ files = [ name = "h2" version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" -optional = false +optional = true python-versions = ">=3.6.1" files = [ {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, @@ -2254,7 +2254,7 @@ test = ["eth-utils (>=2.0.0)", "hypothesis (>=3.44.24,<=6.31.6)", "pytest (>=7.0 name = "hpack" version = "4.0.0" description = "Pure-Python HPACK header compression" -optional = false +optional = true python-versions = ">=3.6.1" files = [ {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, @@ -2369,7 +2369,7 @@ tests = ["freezegun", "pytest", "pytest-cov"] name = "hyperframe" version = "6.0.1" description = "HTTP/2 framing layer for Python" -optional = false +optional = true python-versions = ">=3.6.1" files = [ {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, @@ -4067,7 +4067,7 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "neo4j" version = "5.26.0" description = "Neo4j Bolt driver for Python" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "neo4j-5.26.0-py3-none-any.whl", hash = "sha256:511a6a9468ca89b521bf686f885a2070acc462b1d09821d43710bd477acdf11e"}, @@ -4613,7 +4613,7 @@ ptyprocess = ">=0.5" name = "pgvector" version = "0.3.6" description = "pgvector support for Python" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "pgvector-0.3.6-py3-none-any.whl", hash = "sha256:f6c269b3c110ccb7496bac87202148ed18f34b390a0189c783e351062400a75a"}, @@ -4761,7 +4761,7 @@ files = [ name = "portalocker" version = "2.10.1" description = "Wraps the portalocker recipe for easy usage" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "portalocker-2.10.1-py3-none-any.whl", hash = "sha256:53a5984ebc86a025552264b459b46a2086e269b21823cb572f8f28ee759e45bf"}, @@ -4938,7 +4938,7 @@ files = [ name = "protobuf" version = "5.28.3" description = "" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, @@ -5739,7 +5739,7 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "qdrant-client" version = "1.12.1" description = "Client library for the Qdrant vector search engine" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "qdrant_client-1.12.1-py3-none-any.whl", hash = "sha256:b2d17ce18e9e767471368380dd3bbc4a0e3a0e2061fedc9af3542084b48451e0"}, @@ -7144,7 +7144,7 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", name = "validators" version = "0.33.0" description = "Python Data Validation for Humans™" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "validators-0.33.0-py3-none-any.whl", hash = "sha256:134b586a98894f8139865953899fc2daeb3d0c35569552c5518f089ae43ed075"}, @@ -7211,7 +7211,7 @@ files = [ name = "weaviate-client" version = "4.6.7" description = "A python native Weaviate client" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "weaviate_client-4.6.7-py3-none-any.whl", hash = "sha256:8793de35264cab33a84fe8cb8c422a257fe4d8334657aaddd8ead853da3fb34a"}, @@ -7641,4 +7641,4 @@ weaviate = ["weaviate-client"] [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.12" -content-hash = "474ae44ef721bf9b2d34d1cd139cddf42542ef9167895960784b6e88214dd1e6" +content-hash = "bf097b51f6147b82c63f67c34885981c2166b50755b0f3e690ab1c1e55fa56ee" diff --git a/pyproject.toml b/pyproject.toml index 92b70db63..b6fc10815 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,13 +43,13 @@ filetype = "^1.2.0" nltk = "^3.8.1" dlt = {extras = ["sqlalchemy"], version = "^1.3.0"} aiofiles = "^23.2.1" -qdrant-client = "^1.9.0" +qdrant-client = {version = "^1.9.0", optional = true} graphistry = "^0.33.5" tenacity = "^8.4.1" -weaviate-client = "4.6.7" +weaviate-client = {version = "4.6.7", optional = true} scikit-learn = "^1.5.0" pypdf = "^4.1.0" -neo4j = "^5.20.0" +neo4j = {version = "^5.20.0", optional = true} jinja2 = "^3.1.3" matplotlib = "^3.8.3" tiktoken = "0.7.0" @@ -66,8 +66,8 @@ anthropic = "^0.26.1" sentry-sdk = {extras = ["fastapi"], version = "^2.9.0"} fastapi-users = {version = "*", extras = ["sqlalchemy"]} alembic = "^1.13.3" -asyncpg = "0.30.0" -pgvector = "^0.3.5" +asyncpg = {version = "0.30.0", optional = true} +pgvector = {version = "^0.3.5", optional = true} psycopg2 = {version = "^2.9.10", optional = true} llama-index-core = {version = "^0.11.22", optional = true} From f41228aa51b0c0a254a0fcc0465a115b6e2fe538 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 14:52:24 +0100 Subject: [PATCH 2/8] fix: Resolve import of optional package Resolve issue with forced import of optional pgvector package. Fix COG-595 --- .../databases/vector/pgvector/PGVectorAdapter.py | 4 +++- .../databases/vector/pgvector/create_db_and_tables.py | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cognee/infrastructure/databases/vector/pgvector/PGVectorAdapter.py b/cognee/infrastructure/databases/vector/pgvector/PGVectorAdapter.py index fd0fd493c..74a32511d 100644 --- a/cognee/infrastructure/databases/vector/pgvector/PGVectorAdapter.py +++ b/cognee/infrastructure/databases/vector/pgvector/PGVectorAdapter.py @@ -1,6 +1,5 @@ import asyncio from uuid import UUID -from pgvector.sqlalchemy import Vector from typing import List, Optional, get_type_hints from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy import JSON, Column, Table, select, delete @@ -68,6 +67,8 @@ async def create_collection(self, collection_name: str, payload_schema=None): vector_size = self.embedding_engine.get_vector_size() if not await self.has_collection(collection_name): + + from pgvector.sqlalchemy import Vector class PGVectorDataPoint(Base): __tablename__ = collection_name __table_args__ = {"extend_existing": True} @@ -105,6 +106,7 @@ async def create_data_points( vector_size = self.embedding_engine.get_vector_size() + from pgvector.sqlalchemy import Vector class PGVectorDataPoint(Base): __tablename__ = collection_name __table_args__ = {"extend_existing": True} diff --git a/cognee/infrastructure/databases/vector/pgvector/create_db_and_tables.py b/cognee/infrastructure/databases/vector/pgvector/create_db_and_tables.py index f40299939..1900cfe88 100644 --- a/cognee/infrastructure/databases/vector/pgvector/create_db_and_tables.py +++ b/cognee/infrastructure/databases/vector/pgvector/create_db_and_tables.py @@ -1,4 +1,3 @@ -from ...relational.ModelBase import Base from ..get_vector_engine import get_vector_engine, get_vectordb_config from sqlalchemy import text From 13b79320b62cddeef6217665883cb8757e510132 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 14:54:20 +0100 Subject: [PATCH 3/8] fix: Resolve issue with gh actions not installing optional packages Add install of optional databases packages for database gh actions Fix COG-595 --- .github/workflows/test_neo4j.yml | 2 +- .github/workflows/test_qdrant.yml | 2 +- .github/workflows/test_weaviate.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_neo4j.yml b/.github/workflows/test_neo4j.yml index 0b47a55fc..69aca2473 100644 --- a/.github/workflows/test_neo4j.yml +++ b/.github/workflows/test_neo4j.yml @@ -46,7 +46,7 @@ jobs: installer-parallel: true - name: Install dependencies - run: poetry install --no-interaction + run: poetry install -E neo4j --no-interaction - name: Run default Neo4j env: diff --git a/.github/workflows/test_qdrant.yml b/.github/workflows/test_qdrant.yml index a6347bd0d..4291801f3 100644 --- a/.github/workflows/test_qdrant.yml +++ b/.github/workflows/test_qdrant.yml @@ -47,7 +47,7 @@ jobs: installer-parallel: true - name: Install dependencies - run: poetry install --no-interaction + run: poetry install -E qdrant --no-interaction - name: Run default Qdrant env: diff --git a/.github/workflows/test_weaviate.yml b/.github/workflows/test_weaviate.yml index 490f9075a..67968e6a6 100644 --- a/.github/workflows/test_weaviate.yml +++ b/.github/workflows/test_weaviate.yml @@ -47,7 +47,7 @@ jobs: installer-parallel: true - name: Install dependencies - run: poetry install --no-interaction + run: poetry install -E weaviate --no-interaction - name: Run default Weaviate env: From 63e687978ebd0300613035dd8094a3ded8686279 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 15:30:30 +0100 Subject: [PATCH 4/8] chore: Remove falkordb and posthog non optional dependency Switched falkordb and posthog to be optional dependencies Chore COG-595 --- poetry.lock | 12 +++++++----- pyproject.toml | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 08098caad..e0848cbab 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1485,7 +1485,7 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth name = "falkordb" version = "1.0.9" description = "Python client for interacting with FalkorDB database" -optional = false +optional = true python-versions = "<4.0,>=3.8" files = [ {file = "falkordb-1.0.9.tar.gz", hash = "sha256:177008e63c7e4d9ebbdfeb8cad24b0e49175bb0f6e96cac9b4ffb641c0eff0f1"}, @@ -3783,7 +3783,7 @@ mkdocstrings = ">=0.26" name = "monotonic" version = "1.6" description = "An implementation of time.monotonic() for Python 2 & < 3.3" -optional = false +optional = true python-versions = "*" files = [ {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, @@ -4780,7 +4780,7 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "posthog" version = "3.7.0" description = "Integrate PostHog into any python application." -optional = false +optional = true python-versions = "*" files = [ {file = "posthog-3.7.0-py2.py3-none-any.whl", hash = "sha256:3555161c3a9557b5666f96d8e1f17f410ea0f07db56e399e336a1656d4e5c722"}, @@ -5763,7 +5763,7 @@ fastembed-gpu = ["fastembed-gpu (==0.3.6)"] name = "redis" version = "5.2.0" description = "Python client for Redis database and key-value store" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897"}, @@ -7630,15 +7630,17 @@ type = ["pytest-mypy"] [extras] cli = [] +falkordb = ["falkordb"] filesystem = ["botocore"] llama-index = ["llama-index-core"] neo4j = ["neo4j"] notebook = [] postgres = ["asyncpg", "pgvector", "psycopg2"] +posthog = ["posthog"] qdrant = ["qdrant-client"] weaviate = ["weaviate-client"] [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.12" -content-hash = "bf097b51f6147b82c63f67c34885981c2166b50755b0f3e690ab1c1e55fa56ee" +content-hash = "12148f1911ef4d74f01e6cfd7ee071ea8a9dfe435c55ab6124ac811669450e67" diff --git a/pyproject.toml b/pyproject.toml index b6fc10815..9bebc33b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ typing_extensions = "4.12.2" nest_asyncio = "1.6.0" numpy = "1.26.4" datasets = "3.1.0" -falkordb = "1.0.9" +falkordb = {version = "1.0.9", optional = true} boto3 = "^1.26.125" botocore="^1.35.54" gunicorn = "^20.1.0" @@ -56,7 +56,7 @@ tiktoken = "0.7.0" langchain_text_splitters = "0.3.2" langsmith = "0.1.139" langdetect = "1.0.9" -posthog = "^3.5.0" +posthog = {version = "^3.5.0", optional = true} lancedb = "0.15.0" litellm = "1.49.1" groq = "0.8.0" @@ -80,6 +80,8 @@ neo4j = ["neo4j"] postgres = ["psycopg2", "pgvector", "asyncpg"] notebook = ["ipykernel", "overrides", "ipywidgets", "jupyterlab", "jupyterlab_widgets", "jupyterlab-server", "jupyterlab-git"] llama-index = ["llama-index-core"] +posthog = ["posthog"] +falkordb = ["falkordb"] [tool.poetry.group.dev.dependencies] From 836e3d29e178e8afe3fa39c5c52335eab6f93b80 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 16:24:12 +0100 Subject: [PATCH 5/8] chore: Update README.md Update README.md with database optional dependencies Chore COG-595 --- README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README.md b/README.md index 1cec3f051..d0b7ba778 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,24 @@ pip install cognee pip install 'cognee[postgres]' ``` +### With pip with Weaviate support + +```bash +pip install 'cognee[weaviate]' +``` + +### With pip with Qdrant support + +```bash +pip install 'cognee[qdrant]' +``` + +### With pip with Neo4j support + +```bash +pip install 'cognee[neo4j]' +``` + ### With poetry ```bash @@ -44,6 +62,24 @@ poetry add cognee poetry add cognee -E postgres ``` +### With poetry with Weaviate support + +```bash +poetry add cognee -E weaviate +``` + +### With poetry with Qdrant support + +```bash +poetry add cognee -E qdrant +``` + +### With poetry with Neo4j support + +```bash +poetry add cognee -E neo4j +``` + ## 💻 Basic Usage From ad56ff9c1aac775a5e3fb6d9329bfc38c11286f9 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 16:47:26 +0100 Subject: [PATCH 6/8] chore: Add langchain as optional dependency Added langchain as optional dependency Chore COG-595 --- poetry.lock | 136 ++++++++++++++++++++++++------------------------- pyproject.toml | 10 ++-- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/poetry.lock b/poetry.lock index e0848cbab..7584a106d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -247,7 +247,7 @@ trio = ["trio (>=0.26.1)"] name = "appnope" version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, @@ -315,7 +315,7 @@ tests = ["pytest"] name = "arrow" version = "1.3.0" description = "Better dates & times for Python" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, @@ -348,7 +348,7 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -optional = false +optional = true python-versions = "*" files = [ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, @@ -381,7 +381,7 @@ wheel = ">=0.23.0,<1.0" name = "async-lru" version = "2.0.4" description = "Simple LRU cache for asyncio" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, @@ -570,7 +570,7 @@ typecheck = ["mypy"] name = "beautifulsoup4" version = "4.12.3" description = "Screen-scraping library" -optional = false +optional = true python-versions = ">=3.6.0" files = [ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, @@ -591,7 +591,7 @@ lxml = ["lxml"] name = "bleach" version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." -optional = false +optional = true python-versions = ">=3.9" files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, @@ -889,7 +889,7 @@ files = [ name = "comm" version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, @@ -1226,7 +1226,7 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" -optional = false +optional = true python-versions = ">=3.5" files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -1237,7 +1237,7 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, @@ -1471,7 +1471,7 @@ test = ["pytest (>=6)"] name = "executing" version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, @@ -1558,7 +1558,7 @@ sqlalchemy = {version = ">=2.0.0,<2.1.0", extras = ["asyncio"]} name = "fastjsonschema" version = "2.20.0" description = "Fastest Python implementation of JSON schema" -optional = false +optional = true python-versions = "*" files = [ {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, @@ -1670,7 +1670,7 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -optional = false +optional = true python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, @@ -2483,7 +2483,7 @@ vertexai = ["google-cloud-aiplatform (>=1.53.0,<2.0.0)", "jsonref (>=1.1.0,<2.0. name = "ipykernel" version = "6.29.5" description = "IPython Kernel for Jupyter" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, @@ -2516,7 +2516,7 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio name = "ipython" version = "8.18.1" description = "IPython: Productive Interactive Computing" -optional = false +optional = true python-versions = ">=3.9" files = [ {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, @@ -2553,7 +2553,7 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pa name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, @@ -2581,7 +2581,7 @@ colors = ["colorama (>=0.4.6)"] name = "jedi" version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, @@ -2719,7 +2719,7 @@ files = [ name = "json5" version = "0.9.27" description = "A Python implementation of the JSON5 data format." -optional = false +optional = true python-versions = ">=3.8.0" files = [ {file = "json5-0.9.27-py3-none-any.whl", hash = "sha256:17b43d78d3a6daeca4d7030e9bf22092dba29b1282cc2d0cfa56f6febee8dc93"}, @@ -2733,7 +2733,7 @@ dev = ["build (==1.2.1)", "coverage (==7.5.3)", "mypy (==1.10.0)", "pip (==24.1) name = "jsonpatch" version = "1.33" description = "Apply JSON-Patches (RFC 6902)" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, @@ -2760,7 +2760,7 @@ ply = "*" name = "jsonpointer" version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, @@ -2814,7 +2814,7 @@ referencing = ">=0.31.0" name = "jupyter-client" version = "8.6.3" description = "Jupyter protocol implementation and client libraries" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, @@ -2837,7 +2837,7 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, @@ -2857,7 +2857,7 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" name = "jupyter-events" version = "0.10.0" description = "Jupyter Event System library" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, @@ -2882,7 +2882,7 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p name = "jupyter-lsp" version = "2.2.5" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, @@ -2897,7 +2897,7 @@ jupyter-server = ">=1.1.2" name = "jupyter-server" version = "2.14.2" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, @@ -2933,7 +2933,7 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console name = "jupyter-server-terminals" version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, @@ -2952,7 +2952,7 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> name = "jupyterlab" version = "4.2.5" description = "JupyterLab computational environment" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, @@ -2987,7 +2987,7 @@ upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)" name = "jupyterlab-pygments" version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, @@ -2998,7 +2998,7 @@ files = [ name = "jupyterlab-server" version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, @@ -3181,7 +3181,7 @@ tests = ["aiohttp", "boto3", "duckdb", "pandas (>=1.4)", "polars (>=0.19,<=1.3.0 name = "langchain-core" version = "0.3.15" description = "Building applications with LLMs through composability" -optional = false +optional = true python-versions = "<4.0,>=3.9" files = [ {file = "langchain_core-0.3.15-py3-none-any.whl", hash = "sha256:3d4ca6dbb8ed396a6ee061063832a2451b0ce8c345570f7b086ffa7288e4fa29"}, @@ -3201,7 +3201,7 @@ typing-extensions = ">=4.7" name = "langchain-text-splitters" version = "0.3.2" description = "LangChain text splitting utilities" -optional = false +optional = true python-versions = "<4.0,>=3.9" files = [ {file = "langchain_text_splitters-0.3.2-py3-none-any.whl", hash = "sha256:0db28c53f41d1bc024cdb3b1646741f6d46d5371e90f31e7e7c9fbe75d01c726"}, @@ -3254,7 +3254,7 @@ openai = ["openai (>=0.27.8)"] name = "langsmith" version = "0.1.139" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." -optional = false +optional = true python-versions = "<4.0,>=3.8.1" files = [ {file = "langsmith-0.1.139-py3-none-any.whl", hash = "sha256:2a4a541bfbd0a9727255df28a60048c85bc8c4c6a276975923785c3fd82dc879"}, @@ -3559,7 +3559,7 @@ dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setupto name = "matplotlib-inline" version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, @@ -3606,7 +3606,7 @@ files = [ name = "mistune" version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, @@ -3986,7 +3986,7 @@ files = [ name = "nbclient" version = "0.10.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false +optional = true python-versions = ">=3.8.0" files = [ {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, @@ -4008,7 +4008,7 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= name = "nbconvert" version = "7.16.4" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, @@ -4046,7 +4046,7 @@ webpdf = ["playwright"] name = "nbformat" version = "5.10.4" description = "The Jupyter Notebook format" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, @@ -4140,7 +4140,7 @@ twitter = ["twython"] name = "notebook" version = "7.2.2" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, @@ -4163,7 +4163,7 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4 name = "notebook-shim" version = "0.2.4" description = "A shim layer for notebook traits and config" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, @@ -4447,7 +4447,7 @@ xml = ["lxml (>=4.6.3)"] name = "pandocfilters" version = "1.5.1" description = "Utilities for writing pandoc filters in python" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, @@ -4458,7 +4458,7 @@ files = [ name = "parso" version = "0.8.4" description = "A Python Parser" -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, @@ -4599,7 +4599,7 @@ test = ["time-machine (>=2.6.0)"] name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -optional = false +optional = true python-versions = "*" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, @@ -4803,7 +4803,7 @@ test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)" name = "prometheus-client" version = "0.21.0" description = "Python client for the Prometheus monitoring system." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, @@ -4817,7 +4817,7 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.48" description = "Library for building powerful interactive command lines in Python" -optional = false +optional = true python-versions = ">=3.7.0" files = [ {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, @@ -4958,7 +4958,7 @@ files = [ name = "psutil" version = "6.1.0" description = "Cross-platform lib for process and system monitoring in Python." -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, @@ -5006,7 +5006,7 @@ files = [ name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -optional = false +optional = true python-versions = "*" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, @@ -5017,7 +5017,7 @@ files = [ name = "pure-eval" version = "0.2.3" description = "Safely evaluate AST nodes without side effects" -optional = false +optional = true python-versions = "*" files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, @@ -5467,7 +5467,7 @@ cli = ["click (>=5.0)"] name = "python-json-logger" version = "2.0.7" description = "A python library adding a json log formatter" -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, @@ -5500,7 +5500,7 @@ files = [ name = "pywin32" version = "308" description = "Python for Window Extensions" -optional = false +optional = true python-versions = "*" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, @@ -5527,7 +5527,7 @@ files = [ name = "pywinpty" version = "2.0.14" description = "Pseudo terminal support for Windows from Python." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, @@ -5618,7 +5618,7 @@ pyyaml = "*" name = "pyzmq" version = "26.2.0" description = "Python bindings for 0MQ" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, @@ -5938,7 +5938,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, @@ -5967,7 +5967,7 @@ types-setuptools = ">=69.1.0" name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, @@ -5981,7 +5981,7 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, @@ -6256,7 +6256,7 @@ files = [ name = "send2trash" version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, @@ -6510,7 +6510,7 @@ files = [ name = "soupsieve" version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, @@ -6619,7 +6619,7 @@ files = [ name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false +optional = true python-versions = "*" files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, @@ -6671,7 +6671,7 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] name = "terminado" version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, @@ -6755,7 +6755,7 @@ blobfile = ["blobfile (>=2)"] name = "tinycss2" version = "1.4.0" description = "A tiny CSS parser" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, @@ -6924,7 +6924,7 @@ files = [ name = "tornado" version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, @@ -6965,7 +6965,7 @@ telegram = ["requests"] name = "traitlets" version = "5.14.3" description = "Traitlets Python configuration system" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, @@ -7020,7 +7020,7 @@ typing-extensions = ">=3.7.4.3" name = "types-python-dateutil" version = "2.9.0.20241003" description = "Typing stubs for python-dateutil" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, @@ -7079,7 +7079,7 @@ files = [ name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, @@ -7200,7 +7200,7 @@ watchmedo = ["PyYAML (>=3.10)"] name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -optional = false +optional = true python-versions = "*" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, @@ -7232,7 +7232,7 @@ validators = "0.33.0" name = "webcolors" version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." -optional = false +optional = true python-versions = ">=3.9" files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, @@ -7243,7 +7243,7 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -optional = false +optional = true python-versions = "*" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, @@ -7254,7 +7254,7 @@ files = [ name = "websocket-client" version = "1.8.0" description = "WebSocket client for Python with low level API options" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, @@ -7629,9 +7629,9 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", type = ["pytest-mypy"] [extras] -cli = [] falkordb = ["falkordb"] filesystem = ["botocore"] +langchain = ["langchain_text_splitters", "langsmith"] llama-index = ["llama-index-core"] neo4j = ["neo4j"] notebook = [] @@ -7643,4 +7643,4 @@ weaviate = ["weaviate-client"] [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.12" -content-hash = "12148f1911ef4d74f01e6cfd7ee071ea8a9dfe435c55ab6124ac811669450e67" +content-hash = "c707b7e45a49a3c8c00b71292ca42898f2c5905f1e62bc7c9bc48d7423e9d990" diff --git a/pyproject.toml b/pyproject.toml index 9bebc33b6..019415ee1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,8 +53,8 @@ neo4j = {version = "^5.20.0", optional = true} jinja2 = "^3.1.3" matplotlib = "^3.8.3" tiktoken = "0.7.0" -langchain_text_splitters = "0.3.2" -langsmith = "0.1.139" +langchain_text_splitters = {version = "0.3.2", optional = true} +langsmith = {version = "0.1.139", optional = true} langdetect = "1.0.9" posthog = {version = "^3.5.0", optional = true} lancedb = "0.15.0" @@ -73,12 +73,12 @@ llama-index-core = {version = "^0.11.22", optional = true} [tool.poetry.extras] filesystem = ["s3fs", "botocore"] -cli = ["pipdeptree", "cron-descriptor"] weaviate = ["weaviate-client"] qdrant = ["qdrant-client"] neo4j = ["neo4j"] postgres = ["psycopg2", "pgvector", "asyncpg"] -notebook = ["ipykernel", "overrides", "ipywidgets", "jupyterlab", "jupyterlab_widgets", "jupyterlab-server", "jupyterlab-git"] +notebook = ["notebook", "ipykernel", "overrides", "ipywidgets", "jupyterlab", "jupyterlab_widgets", "jupyterlab-server", "jupyterlab-git"] +langchain = ["langsmith", "langchain_text_splitters"] llama-index = ["llama-index-core"] posthog = ["posthog"] falkordb = ["falkordb"] @@ -89,7 +89,7 @@ pytest = "^7.4.0" pytest-asyncio = "^0.21.1" coverage = "^7.3.2" mypy = "^1.7.1" -notebook = "^7.1.1" +notebook = {version = "^7.1.1", optional = true} deptry = "^0.20.0" debugpy = "1.8.2" pylint = "^3.0.3" From 1a5f0fe10d966480b8b0d983ab87c7459ab78553 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 19:07:17 +0100 Subject: [PATCH 7/8] chore: Update readme with more description about extras Update readme to be a bit more descriptive about installation Chore COG-595 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d0b7ba778..2b29f1448 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,9 @@ If you have questions, join our Discord ## 📦 Installation +You can install Cognee using either **pip** or **poetry**. +Support for various databases and vector stores is available through extras. + ### With pip ```bash From dcb320da525eee644e675fa044f46ffdb335f0c1 Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Mon, 2 Dec 2024 19:35:50 +0100 Subject: [PATCH 8/8] chore: Add groq and langfuse as optional dependencies Added groq and langfuse as optional dependencies Chore COG-595 --- poetry.lock | 12 +++++++----- pyproject.toml | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7584a106d..7d09c340d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -519,7 +519,7 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] name = "backoff" version = "2.2.1" description = "Function decoration for backoff and retry" -optional = false +optional = true python-versions = ">=3.7,<4.0" files = [ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, @@ -2022,7 +2022,7 @@ colorama = ">=0.4" name = "groq" version = "0.8.0" description = "The official Python library for the groq API" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "groq-0.8.0-py3-none-any.whl", hash = "sha256:f5e4e892d45001241a930db451e633ca1f0007e3f749deaa5d7360062fcd61e3"}, @@ -3229,7 +3229,7 @@ six = "*" name = "langfuse" version = "2.53.9" description = "A client library for accessing langfuse" -optional = false +optional = true python-versions = "<4.0,>=3.8.1" files = [ {file = "langfuse-2.53.9-py3-none-any.whl", hash = "sha256:04363bc323f7513621c88a997003f7b906ae8f5d096bd54221cfcb6bf7a6f16a"}, @@ -7306,7 +7306,7 @@ files = [ name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, @@ -7631,7 +7631,9 @@ type = ["pytest-mypy"] [extras] falkordb = ["falkordb"] filesystem = ["botocore"] +groq = ["groq"] langchain = ["langchain_text_splitters", "langsmith"] +langfuse = ["langfuse"] llama-index = ["llama-index-core"] neo4j = ["neo4j"] notebook = [] @@ -7643,4 +7645,4 @@ weaviate = ["weaviate-client"] [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<3.12" -content-hash = "c707b7e45a49a3c8c00b71292ca42898f2c5905f1e62bc7c9bc48d7423e9d990" +content-hash = "6b57d44b0924bcf64397b3807c2a6ba369166e1d2102b5312c8f8ae2d5323376" diff --git a/pyproject.toml b/pyproject.toml index 019415ee1..6fac2597c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,8 +59,8 @@ langdetect = "1.0.9" posthog = {version = "^3.5.0", optional = true} lancedb = "0.15.0" litellm = "1.49.1" -groq = "0.8.0" -langfuse = "^2.32.0" +groq = {version = "0.8.0", optional = true} +langfuse = {version = "^2.32.0", optional = true} pydantic-settings = "^2.2.1" anthropic = "^0.26.1" sentry-sdk = {extras = ["fastapi"], version = "^2.9.0"} @@ -82,6 +82,8 @@ langchain = ["langsmith", "langchain_text_splitters"] llama-index = ["llama-index-core"] posthog = ["posthog"] falkordb = ["falkordb"] +groq = ["groq"] +langfuse = ["langfuse"] [tool.poetry.group.dev.dependencies]