169 lines
3.4 KiB
Markdown
169 lines
3.4 KiB
Markdown
# 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
|
|
```bash
|
|
# Install all dependencies including dev tools
|
|
make install
|
|
# OR
|
|
uv sync --extra dev
|
|
```
|
|
|
|
### Code Formatting
|
|
```bash
|
|
# Format code (runs ruff import sorting + code formatting)
|
|
make format
|
|
# Equivalent to:
|
|
# uv run ruff check --select I --fix
|
|
# uv run ruff format
|
|
```
|
|
|
|
### Linting
|
|
```bash
|
|
# Lint code (runs ruff checks + pyright type checking)
|
|
make lint
|
|
# Equivalent to:
|
|
# uv run ruff check
|
|
# uv run pyright ./graphiti_core
|
|
```
|
|
|
|
### Testing
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Run format, lint, and test in sequence
|
|
make check
|
|
# OR
|
|
make all
|
|
```
|
|
|
|
## Server Commands (from server/ directory)
|
|
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
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+
|