Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,11 @@ venv.bak/
*.sqlite3
vector_index*

# Package managers
# Poetry
poetry.lock
# uv
uv.lock

# Logs
logs/
Expand Down
17 changes: 13 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,23 @@ cd graphbit
```bash
cargo build --release
```
4. Then, install Poetry and necessary packages (make sure that you have properly created a virtual environment for Python):
4. Install Python dependencies using either Poetry or uv (both are fully supported):

**Option A: Using Poetry**
```bash
pip install poetry
poetry lock
poetry install
#If you do not want to install the Python dependencies for benchmark, use --with dev
# If you do not want to install the Python dependencies for benchmark, use --with dev
poetry install --with dev
```

**Option B: Using uv (faster alternative)**
```bash
# Sync all dependencies (creates .venv automatically)
uv sync

# Or sync without benchmark dependencies
uv sync --extra dev
```
5. Now, let's create the Python release version:
```bash
cd python/
Expand Down
192 changes: 114 additions & 78 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,99 +3,137 @@ build-backend = "maturin"
requires = ["maturin>=1.0,<2.0"]

[project]
name = "graphbit"
version = "0.5.1"
description = "GraphBit - Advanced workflow automation and AI agent orchestration library"
readme = "README.md"
license = {file = "LICENSE.md"}
authors = [
{name = "GraphBit Team", email = "contact@graphbit.ai"}
{name = "InfinitiBit Team", email = "contact@infinitibit.ai"}
]
maintainers = [
{name = "GraphBit Team", email = "contact@graphbit.ai"}
]
keywords = ["ai", "agents", "workflow", "automation", "rust", "python", "llm", "orchestration"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: InfinitiBit Approved :: Custom License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Rust",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: System :: Distributed Computing",
"Typing :: Typed"
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: InfinitiBit Approved :: Custom License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Rust",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: System :: Distributed Computing",
"Typing :: Typed"
]
requires-python = ">=3.10"
dependencies = [
"aiofiles>=23.0.0",
"aiohttp>=3.12.15",
"python-dotenv>=1.0.0",
"rich>=13.0.0",
"typer>=0.9.0"
"aiofiles>=23.0.0",
"aiohttp>=3.12.15",
"python-dotenv>=1.0.0",
"rich>=13.0.0",
"typer>=0.9.0"
]
description = "GraphBit - Advanced workflow automation and AI agent orchestration library"
keywords = ["ai", "agents", "workflow", "automation", "rust", "python", "llm", "orchestration"]
license = {file = "LICENSE.md"}
maintainers = [
{name = "InfinitiBit Team", email = "contact@infinitibit.ai"}
]
name = "graphbit"
readme = "README.md"
requires-python = ">=3.10"
version = "0.5.1"

[project.optional-dependencies]
ai = [
"anthropic>=0.24.0",
"openai>=1.30.0"
"anthropic>=0.24.0",
"openai>=1.30.0"
]
vector-db = [
"astrapy>=1.0.0",
"chromadb>=0.4.0",
"elasticsearch>=8.0.0",
"faiss-cpu>=1.7.0",
"pinecone>=4.0.0",
"pymilvus>=2.3.0",
"qdrant-client>=1.7.0",
"weaviate-client>=4.4.0"
benchmark = [
"click>=8.2.1",
"matplotlib>=3.7.0",
"numpy>=1.24.0",
"pandas>=2.0.0",
"psutil>=5.9.0",
"seaborn>=0.12.0",
"tabulate>=0.9.0",
"memory-profiler>=0.61.0",
"crewai>=0.41.0",
"langchain>=0.1.0",
"langchain-anthropic>=0.3.19",
"langchain-ollama>=0.3.7",
"langchain-openai>=0.1.0",
"langgraph>=0.1.0",
"llama-index>=0.9.0",
"llama-index-cli>=0.5.0",
"llama-index-llms-anthropic>=0.8.5",
"llama-index-llms-ollama>=0.7.1",
"pydantic-ai>=0.0.5"
]
databases = [
"boto3>=1.26.0",
"ibm-db>=3.1.0",
"mariadb>=1.1.0",
"psycopg2>=2.9.0",
"pymongo>=4.0.0"
]
benchmark = [
"click>=8.2.1",
"matplotlib>=3.7.0",
"numpy>=1.24.0",
"pandas>=2.0.0",
"psutil>=5.9.0",
"seaborn>=0.12.0",
"tabulate>=0.9.0",
"memory-profiler>=0.61.0",
"crewai>=0.41.0",
"langchain>=0.1.0",
"langchain-anthropic>=0.3.19",
"langchain-ollama>=0.3.7",
"langchain-openai>=0.1.0",
"langgraph>=0.1.0",
"llama-index>=0.9.0",
"llama-index-cli>=0.5.0",
"llama-index-llms-anthropic>=0.8.5",
"llama-index-llms-ollama>=0.7.1",
"pydantic-ai>=0.0.5"
"boto3>=1.26.0",
"ibm-db>=3.1.0",
"mariadb>=1.1.0",
"psycopg2>=2.9.0",
"pymongo>=4.0.0"
]
full = [
"graphbit[ai,vector-db,databases,benchmark]",
"requests>=2.25.0",
"types-pyyaml>=6.0.12.20250822"
# AI dependencies
"anthropic>=0.24.0",
"openai>=1.30.0",
# Vector DB dependencies
"astrapy>=1.0.0",
"chromadb>=0.4.0",
"elasticsearch>=8.0.0",
"faiss-cpu>=1.7.0",
"pinecone>=4.0.0",
"pymilvus>=2.3.0",
"qdrant-client>=1.7.0",
"weaviate-client>=4.4.0",
# Database dependencies
"boto3>=1.26.0",
"ibm-db>=3.1.0",
"mariadb>=1.1.0",
"psycopg2>=2.9.0",
"pymongo>=4.0.0",
# Benchmark dependencies
"click>=8.2.1",
"matplotlib>=3.7.0",
"numpy>=1.24.0",
"pandas>=2.0.0",
"psutil>=5.9.0",
"seaborn>=0.12.0",
"tabulate>=0.9.0",
"memory-profiler>=0.61.0",
"crewai>=0.41.0",
"langchain>=0.1.0",
"langchain-anthropic>=0.3.19",
"langchain-ollama>=0.3.7",
"langchain-openai>=0.1.0",
"langgraph>=0.1.0",
"llama-index>=0.9.0",
"llama-index-cli>=0.5.0",
"llama-index-llms-anthropic>=0.8.5",
"llama-index-llms-ollama>=0.7.1",
"pydantic-ai>=0.0.5",
# Additional dependencies
"requests>=2.25.0",
"types-pyyaml>=6.0.12.20250822"
]
vector-db = [
"astrapy>=1.0.0",
"chromadb>=0.4.0",
"elasticsearch>=8.0.0",
"faiss-cpu>=1.7.0",
"pinecone>=4.0.0",
"pymilvus>=2.3.0",
"qdrant-client>=1.7.0",
"weaviate-client>=4.4.0"
]

[project.urls]
Homepage = "https://github.com/InfinitiBit/graphbit"
Documentation = "https://docs.graphbit.ai"
Repository = "https://github.com/InfinitiBit/graphbit"
"Bug Tracker" = "https://github.com/InfinitiBit/graphbit/issues"
Changelog = "https://github.com/InfinitiBit/graphbit/blob/main/CHANGELOG.md"
Discord = "https://discord.com/invite/huVJwkyu"
Documentation = "https://docs.graphbit.ai"
Homepage = "https://github.com/InfinitiBit/graphbit"
Repository = "https://github.com/InfinitiBit/graphbit"

[tool.bandit]
exclude_dirs = ["tests", "test"]
Expand Down Expand Up @@ -162,6 +200,8 @@ use_parentheses = true
bindings = "pyo3"
# Compatibility settings for PyPI distribution
compatibility = "linux"
# Manifest path for the Rust project
manifest-path = "python/Cargo.toml"
# Module configuration
module-name = "graphbit"
# Build profile for optimized releases
Expand All @@ -170,10 +210,6 @@ profile = "release"
skip-auditwheel = false
# Build optimizations
strip = true
# Python interpreter finding
python-source = "auto"
# Manifest path for the Rust project
manifest-path = "python/Cargo.toml"

[tool.mypy]
check_untyped_defs = true
Expand All @@ -192,7 +228,7 @@ warn_unused_configs = true
warn_unused_ignores = true

[tool.poetry]
authors = ["GraphBit Team"]
authors = ["InfinitiBit Team"]
description = "GraphBit - Advanced workflow automation and AI agent orchestration library"
homepage = "https://github.com/InfinitiBit/graphbit"
name = "graphbit"
Expand Down