feat: Cog 2340 remove graphistry (#1080)

<!-- .github/pull_request_template.md -->

## Description
<!-- Provide a clear description of the changes in this PR -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.

---------

Co-authored-by: Igor Ilic <igorilic03@gmail.com>
This commit is contained in:
Vasilije 2025-07-21 21:06:23 +02:00 committed by GitHub
parent 3c854b384d
commit 7af7e3834f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 1362 additions and 1413 deletions

View file

@ -24,7 +24,9 @@ runs:
- name: Rebuild Poetry lock file - name: Rebuild Poetry lock file
shell: bash shell: bash
run: poetry lock run: |
rm poetry.lock
poetry lock
- name: Install dependencies - name: Install dependencies
shell: bash shell: bash

View file

@ -8,10 +8,6 @@ on:
type: string type: string
default: '3.11.x' default: '3.11.x'
secrets: secrets:
GRAPHISTRY_USERNAME:
required: true
GRAPHISTRY_PASSWORD:
required: true
LLM_PROVIDER: LLM_PROVIDER:
required: true required: true
LLM_MODEL: LLM_MODEL:
@ -125,9 +121,6 @@ jobs:
name: Run Simple Examples name: Run Simple Examples
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
env: env:
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
LLM_PROVIDER: openai LLM_PROVIDER: openai
LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_MODEL: ${{ secrets.LLM_MODEL }}
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}
@ -157,9 +150,6 @@ jobs:
name: Run Basic Graph Tests name: Run Basic Graph Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
env: env:
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
LLM_PROVIDER: openai LLM_PROVIDER: openai
LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_MODEL: ${{ secrets.LLM_MODEL }}
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}

View file

@ -26,10 +26,6 @@ on:
required: true required: true
OPENAI_API_KEY: OPENAI_API_KEY:
required: true required: true
GRAPHISTRY_USERNAME:
required: true
GRAPHISTRY_PASSWORD:
required: true
AWS_ACCESS_KEY_ID: AWS_ACCESS_KEY_ID:
required: true required: true
AWS_SECRET_ACCESS_KEY: AWS_SECRET_ACCESS_KEY:

View file

@ -20,8 +20,6 @@ jobs:
env: env:
LLM_API_KEY: ${{ secrets.OPENAI_API_KEY }} LLM_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
run: poetry run python ./examples/python/multimedia_example.py run: poetry run python ./examples/python/multimedia_example.py
test-eval-example: test-eval-example:
@ -51,8 +49,6 @@ jobs:
EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }} EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }} EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
run: poetry run python ./cognee/eval_framework/run_eval.py run: poetry run python ./cognee/eval_framework/run_eval.py
test-descriptive-metrics: test-descriptive-metrics:
@ -78,8 +74,6 @@ jobs:
EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }} EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }} EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
run: poetry run python ./cognee/tests/tasks/descriptive_metrics/networkx_metrics_test.py run: poetry run python ./cognee/tests/tasks/descriptive_metrics/networkx_metrics_test.py
@ -98,8 +92,6 @@ jobs:
- name: Run Dynamic Steps Tests - name: Run Dynamic Steps Tests
env: env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_MODEL: ${{ secrets.LLM_MODEL }}
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }}

View file

@ -8,10 +8,6 @@ on:
type: string type: string
default: '["3.10.x", "3.11.x", "3.12.x"]' default: '["3.10.x", "3.11.x", "3.12.x"]'
secrets: secrets:
GRAPHISTRY_USERNAME:
required: true
GRAPHISTRY_PASSWORD:
required: true
LLM_PROVIDER: LLM_PROVIDER:
required: true required: true
LLM_MODEL: LLM_MODEL:
@ -96,9 +92,6 @@ jobs:
shell: bash shell: bash
env: env:
PYTHONUTF8: 1 PYTHONUTF8: 1
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
LLM_PROVIDER: openai LLM_PROVIDER: openai
LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_MODEL: ${{ secrets.LLM_MODEL }}
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}

View file

@ -8,10 +8,6 @@ on:
required: true required: true
type: string type: string
secrets: secrets:
GRAPHISTRY_USERNAME:
required: true
GRAPHISTRY_PASSWORD:
required: true
#LLM_MODEL: #LLM_MODEL:
# required: true # required: true
#LLM_ENDPOINT: #LLM_ENDPOINT:
@ -67,8 +63,6 @@ jobs:
EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }} EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }} EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
run: | run: |
poetry run jupyter nbconvert \ poetry run jupyter nbconvert \
--to notebook \ --to notebook \

View file

@ -91,8 +91,6 @@ jobs:
- name: Run example test - name: Run example test
env: env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }}
GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }}
PYTHONFAULTHANDLER: 1 PYTHONFAULTHANDLER: 1
LLM_PROVIDER: "ollama" LLM_PROVIDER: "ollama"
LLM_API_KEY: "ollama" LLM_API_KEY: "ollama"

View file

@ -80,15 +80,6 @@ cognee provides a visualize_graph function that will render the graph for you.
) )
await visualize_graph(graph_file_path) await visualize_graph(graph_file_path)
``` ```
If you want to use tools like Graphistry for graph visualization:
- create an account and API key from https://www.graphistry.com
- add the following environment variables to `.env` file:
```
GRAPHISTRY_USERNAME=""
GRAPHISTRY_PASSWORD=""
```
Note: `GRAPHISTRY_PASSWORD` is API key.
# What will you build with cognee? # What will you build with cognee?

View file

@ -70,7 +70,9 @@ app = FastAPI(debug=app_environment != "prod", lifespan=lifespan)
# Read allowed origins from environment variable (comma-separated) # Read allowed origins from environment variable (comma-separated)
CORS_ALLOWED_ORIGINS = os.getenv("CORS_ALLOWED_ORIGINS") CORS_ALLOWED_ORIGINS = os.getenv("CORS_ALLOWED_ORIGINS")
if CORS_ALLOWED_ORIGINS: if CORS_ALLOWED_ORIGINS:
allowed_origins = [origin.strip() for origin in CORS_ALLOWED_ORIGINS.split(",") if origin.strip()] allowed_origins = [
origin.strip() for origin in CORS_ALLOWED_ORIGINS.split(",") if origin.strip()
]
else: else:
allowed_origins = [] # Block all except explicitly set origins allowed_origins = [] # Block all except explicitly set origins

View file

@ -182,15 +182,3 @@ class config:
def set_vector_db_url(db_url: str): def set_vector_db_url(db_url: str):
vector_db_config = get_vectordb_config() vector_db_config = get_vectordb_config()
vector_db_config.vector_db_url = db_url vector_db_config.vector_db_url = db_url
@staticmethod
def set_graphistry_config(graphistry_config: dict[str, str]):
base_config = get_base_config()
if "username" not in graphistry_config or "password" not in graphistry_config:
raise InvalidValueError(
message="graphistry_config dictionary must contain 'username' and 'password' keys."
)
base_config.graphistry_username = graphistry_config.get("username")
base_config.graphistry_password = graphistry_config.get("password")

View file

@ -10,8 +10,6 @@ class BaseConfig(BaseSettings):
data_root_directory: str = get_absolute_path(".data_storage") data_root_directory: str = get_absolute_path(".data_storage")
system_root_directory: str = get_absolute_path(".cognee_system") system_root_directory: str = get_absolute_path(".cognee_system")
monitoring_tool: object = Observer.LANGFUSE monitoring_tool: object = Observer.LANGFUSE
graphistry_username: Optional[str] = os.getenv("GRAPHISTRY_USERNAME")
graphistry_password: Optional[str] = os.getenv("GRAPHISTRY_PASSWORD")
langfuse_public_key: Optional[str] = os.getenv("LANGFUSE_PUBLIC_KEY") langfuse_public_key: Optional[str] = os.getenv("LANGFUSE_PUBLIC_KEY")
langfuse_secret_key: Optional[str] = os.getenv("LANGFUSE_SECRET_KEY") langfuse_secret_key: Optional[str] = os.getenv("LANGFUSE_SECRET_KEY")
langfuse_host: Optional[str] = os.getenv("LANGFUSE_HOST") langfuse_host: Optional[str] = os.getenv("LANGFUSE_HOST")

View file

@ -3,9 +3,7 @@
import os import os
import requests import requests
from datetime import datetime, timezone from datetime import datetime, timezone
import graphistry
import networkx as nx import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import http.server import http.server
import socketserver import socketserver

View file

@ -1,8 +1,6 @@
import os import os
import tempfile import tempfile
import pytest import pytest
import networkx as nx
import pandas as pd
from unittest.mock import patch, mock_open from unittest.mock import patch, mock_open
from io import BytesIO from io import BytesIO
from uuid import uuid4 from uuid import uuid4

1614
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -40,7 +40,6 @@ dependencies = [
"aiohttp>=3.11.14,<4.0.0", "aiohttp>=3.11.14,<4.0.0",
"aiofiles>=23.2.1,<24.0.0", "aiofiles>=23.2.1,<24.0.0",
"rdflib>=7.1.4,<7.2.0", "rdflib>=7.1.4,<7.2.0",
"graphistry>=0.33.5,<0.34",
"pypdf>=4.1.0,<6.0.0", "pypdf>=4.1.0,<6.0.0",
"jinja2>=3.1.3,<4", "jinja2>=3.1.3,<4",
"matplotlib>=3.8.3,<4", "matplotlib>=3.8.3,<4",

1084
uv.lock generated

File diff suppressed because it is too large Load diff