graphiti/.serena/memories/development_commands.md

3.4 KiB

Development Commands

Package Manager

This project uses uv (https://docs.astral.sh/uv/) instead of pip or poetry.

Main Project Commands (from project root)

Installation

# Install all dependencies including dev tools
make install
# OR
uv sync --extra dev

Code Formatting

# Format code (runs ruff import sorting + code formatting)
make format
# Equivalent to:
#   uv run ruff check --select I --fix
#   uv run ruff format

Linting

# Lint code (runs ruff checks + pyright type checking)
make lint
# Equivalent to:
#   uv run ruff check
#   uv run pyright ./graphiti_core

Testing

# Run unit tests only (excludes integration tests)
make test
# Equivalent to:
#   DISABLE_FALKORDB=1 DISABLE_KUZU=1 DISABLE_NEPTUNE=1 uv run pytest -m "not integration"

# Run all tests including integration tests
uv run pytest

# Run only integration tests
uv run pytest -k "_int"

# Run specific test file
uv run pytest tests/test_specific_file.py

# Run specific test method
uv run pytest tests/test_file.py::test_method_name

# Run tests in parallel (faster)
uv run pytest -n auto

Combined Checks

# Run format, lint, and test in sequence
make check
# OR
make all

Server Commands (from server/ directory)

cd server/

# Install server dependencies
uv sync --extra dev

# Run server in development mode with auto-reload
uvicorn graph_service.main:app --reload

# Format server code
make format

# Lint server code
make lint

# Test server code
make test

MCP Server Commands (from mcp_server/ directory)

cd mcp_server/

# Install MCP server dependencies
uv sync

# Run with Docker Compose
docker-compose up

# Stop Docker Compose
docker-compose down

Environment Variables for Testing

Required for Integration Tests

export TEST_OPENAI_API_KEY=...
export TEST_OPENAI_MODEL=...
export TEST_ANTHROPIC_API_KEY=...

# For Neo4j
export TEST_URI=neo4j://...
export TEST_USER=...
export TEST_PASSWORD=...

Optional Runtime Variables

export OPENAI_API_KEY=...              # For LLM inference
export USE_PARALLEL_RUNTIME=true       # Neo4j parallel runtime (enterprise only)
export ANTHROPIC_API_KEY=...           # For Claude models
export GOOGLE_API_KEY=...              # For Gemini models
export GROQ_API_KEY=...                # For Groq models
export VOYAGE_API_KEY=...              # For VoyageAI embeddings

Git Workflow

# Create a new branch
git checkout -b feature/your-feature-name

# After making changes, run checks
make check

# Commit changes (ensure all checks pass first)
git add .
git commit -m "Your commit message"

# Push to your fork
git push origin feature/your-feature-name

Common Development Tasks

Before Submitting PR

  1. make check - Ensures code is formatted, linted, and tested
  2. Verify all tests pass including integration tests if applicable
  3. Update documentation if needed

Adding New Dependencies

Edit pyproject.toml:

  • Core dependencies → [project.dependencies]
  • Optional features → [project.optional-dependencies]
  • Dev dependencies → [project.optional-dependencies.dev]

Then run:

uv sync --extra dev

Database Setup

  • Neo4j: Version 5.26+ required, use Neo4j Desktop
  • FalkorDB: Version 1.1.2+ as alternative backend

Tool Versions

  • Python: 3.10+
  • UV: Latest stable
  • Pytest: 8.3.3+
  • Ruff: 0.7.1+
  • Pyright: 1.1.404+