feat: restructure as monorepo

- Move core CrewAI to packages/crewai with git mv to preserve history
- Create workspace-level pyproject.toml with uv workspace configuration
- Rename core package to crewai-core
- Setup workspace sources for internal package dependencies
This commit is contained in:
Greyson Lalonde
2025-09-12 21:57:17 -04:00
parent 81bd81e5f5
commit ff5cbdee07
691 changed files with 211 additions and 38 deletions

View File

@@ -8,38 +8,7 @@ authors = [
{ name = "Joao Moura", email = "joao@crewai.com" }
]
dependencies = [
# Core Dependencies
"pydantic>=2.4.2",
"openai>=1.13.3",
"litellm==1.74.9",
"instructor>=1.3.3",
# Text Processing
"pdfplumber>=0.11.4",
"regex>=2024.9.11",
# Telemetry and Monitoring
"opentelemetry-api>=1.30.0",
"opentelemetry-sdk>=1.30.0",
"opentelemetry-exporter-otlp-proto-http>=1.30.0",
# Data Handling
"chromadb>=0.5.23",
"tokenizers>=0.20.3",
"onnxruntime==1.22.0",
"openpyxl>=3.1.5",
"pyvis>=0.3.2",
# Authentication and Security
"python-dotenv>=1.0.0",
"pyjwt>=2.9.0",
# Configuration and Utils
"click>=8.1.7",
"appdirs>=1.4.4",
"jsonref>=1.1.0",
"json-repair==0.25.2",
"uv>=0.4.25",
"tomli-w>=1.1.0",
"tomli>=2.0.2",
"blinker>=1.9.0",
"json5>=0.10.0",
"portalocker==2.7.0",
"crewai-core",
]
[project.urls]
@@ -48,7 +17,10 @@ Documentation = "https://docs.crewai.com"
Repository = "https://github.com/crewAIInc/crewAI"
[project.optional-dependencies]
tools = ["crewai-tools~=0.71.0"]
tools = ["crewai-tools"]
core = ["crewai-core"]
all = ["crewai-core", "crewai-tools"]
# Core framework optional dependencies
embeddings = [
"tiktoken~=0.8.0"
]
@@ -100,7 +72,8 @@ crewai = "crewai.cli.cli:crewai"
[tool.ruff]
exclude = [
"src/crewai/cli/templates",
"packages/crewai/src/crewai/cli/templates",
"packages/tools/tests",
]
fix = true
@@ -137,12 +110,16 @@ ignore = ["E501"] # ignore line too long
"tests/**/*.py" = ["S101"] # Allow assert statements in tests
[tool.mypy]
exclude = ["src/crewai/cli/templates", "tests"]
exclude = ["packages/crewai/src/crewai/cli/templates", "packages/*/tests"]
[tool.bandit]
exclude_dirs = ["src/crewai/cli/templates"]
exclude_dirs = ["packages/crewai/src/crewai/cli/templates"]
[tool.pytest.ini_options]
testpaths = [
"packages/crewai/tests",
"packages/tools/tests",
]
markers = [
"telemetry: mark test as a telemetry test (don't mock telemetry)",
]
@@ -158,7 +135,15 @@ name = "pytorch"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[tool.uv.workspace]
members = [
"packages/crewai",
"packages/tools",
]
[tool.uv.sources]
crewai-core = { workspace = true }
crewai-tools = { workspace = true }
torch = [
{ index = "pytorch-nightly", marker = "python_version >= '3.13'" },
{ index = "pytorch", marker = "python_version < '3.13'" },
@@ -169,7 +154,7 @@ torchvision = [
]
[tool.hatch.version]
path = "src/crewai/__init__.py"
path = "packages/crewai/src/crewai/__init__.py"
[build-system]
requires = ["hatchling"]
@@ -185,4 +170,4 @@ exclude = [
exclude = [
"docs/**",
"docs/",
]
]