From 98b21b32735dd4d1610d6f6224ad8c123df86f4c Mon Sep 17 00:00:00 2001 From: Junaid Hossain Date: Fri, 7 Nov 2025 16:46:02 +0600 Subject: [PATCH 1/2] feature: uv support added --- .gitignore | 3 + CONTRIBUTING.md | 19 ++++- pyproject.toml | 190 ++++++++++++++++++++++++++++-------------------- 3 files changed, 133 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index 7d8be2e7..7fe9aad6 100644 --- a/.gitignore +++ b/.gitignore @@ -67,8 +67,11 @@ venv.bak/ *.sqlite3 vector_index* +# Package managers # Poetry poetry.lock +# uv +uv.lock # Logs logs/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94e7f0b4..27f7cd1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,14 +19,29 @@ 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 +# Install uv if you haven't already +curl -LsSf https://astral.sh/uv/install.sh | sh # Linux/macOS +# or: pip install uv + +# 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/ diff --git a/pyproject.toml b/pyproject.toml index 5bc60923..8d826691 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 = "GraphBit Team", email = "contact@graphbit.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 = "GraphBit Team", email = "contact@graphbit.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"] @@ -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 @@ -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 From 4185f457be2e1baddbc97d2ed3926bd0db1c66e9 Mon Sep 17 00:00:00 2001 From: Junaid Hossain Date: Thu, 13 Nov 2025 00:22:11 +0600 Subject: [PATCH 2/2] refactor: author name updated --- CONTRIBUTING.md | 6 ------ pyproject.toml | 6 +++--- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27f7cd1b..e5675d20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,8 +23,6 @@ cargo build --release **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 poetry install --with dev @@ -32,10 +30,6 @@ poetry install --with dev **Option B: Using uv (faster alternative)** ```bash -# Install uv if you haven't already -curl -LsSf https://astral.sh/uv/install.sh | sh # Linux/macOS -# or: pip install uv - # Sync all dependencies (creates .venv automatically) uv sync diff --git a/pyproject.toml b/pyproject.toml index 8d826691..2cba56bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ requires = ["maturin>=1.0,<2.0"] [project] authors = [ - {name = "GraphBit Team", email = "contact@graphbit.ai"} + {name = "InfinitiBit Team", email = "contact@infinitibit.ai"} ] classifiers = [ "Development Status :: 4 - Beta", @@ -33,7 +33,7 @@ description = "GraphBit - Advanced workflow automation and AI agent orchestratio keywords = ["ai", "agents", "workflow", "automation", "rust", "python", "llm", "orchestration"] license = {file = "LICENSE.md"} maintainers = [ - {name = "GraphBit Team", email = "contact@graphbit.ai"} + {name = "InfinitiBit Team", email = "contact@infinitibit.ai"} ] name = "graphbit" readme = "README.md" @@ -228,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"