Files
crewAI/pyproject.toml
Greyson LaLonde c5c07331bb feat: merge latest changes from crewAI-tools main into packages/tools
- Merged upstream changes from crewAI-tools main branch
- Resolved conflicts due to monorepo structure (crewai_tools -> src/crewai_tools)
- Removed deprecated embedchain adapters
- Added new RAG loaders and crewai_rag_adapter
- Consolidated dependencies in pyproject.toml

Fixed critical linting issues:
- Added ClassVar annotations for mutable class attributes
- Added timeouts to requests calls (30s default)
- Fixed exception handling with proper 'from' clauses
- Added noqa comments for public API functions (backward compatibility)
- Updated ruff config to ignore expected patterns:
  - F401 in __init__ files (intentional re-exports)
  - S101 in test files (assertions are expected)
  - S607 for subprocess calls (uv/pip commands are safe)

Remaining issues are from upstream code and will be addressed in separate PRs.
2025-09-19 00:08:27 -04:00

143 lines
4.1 KiB
TOML

[project]
name = "crewai"
dynamic = ["version"]
description = "Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks."
readme = "README.md"
requires-python = ">=3.10,<3.14"
authors = [
{ name = "Joao Moura", email = "joao@crewai.com" }
]
dependencies = [
"crewai-core",
]
[project.urls]
Homepage = "https://crewai.com"
Documentation = "https://docs.crewai.com"
Repository = "https://github.com/crewAIInc/crewAI"
[project.optional-dependencies]
tools = ["crewai-tools"]
core = ["crewai-core"]
all = ["crewai-core", "crewai-tools"]
[dependency-groups]
dev = [
"ruff>=0.12.11",
"mypy>=1.17.1",
"pre-commit>=4.3.0",
"pytest>=8.0.0",
"python-dotenv>=1.0.0",
"pytest-asyncio>=0.25.2",
"pytest-subprocess>=1.5.2",
"pytest-recording>=0.13.3",
"pytest-randomly>=3.16.0",
"pytest-timeout>=2.3.1",
"pytest-xdist>=3.6.1",
"pytest-split>=0.9.0",
"types-requests==2.32.*",
"types-pyyaml==6.0.*",
"types-regex==2024.11.6.*",
"types-appdirs==1.4.*",
]
[tool.uv]
default-groups = ["dev"]
[tool.ruff]
exclude = [
"packages/crewai/src/crewai/cli/templates",
"packages/tools/tests",
]
fix = true
[tool.ruff.lint]
select = [
"E", # pycodestyle errors (style issues)
"F", # Pyflakes (code errors)
"B", # flake8-bugbear (bug prevention)
"S", # bandit (security issues)
"RUF", # ruff-specific rules
"N", # pep8-naming (naming conventions)
"W", # pycodestyle warnings
"PERF", # performance issues
"PIE", # flake8-pie (unnecessary code)
"ASYNC", # async/await best practices
"RET", # flake8-return (return improvements)
"UP006", # use collections.abc
"UP007", # use X | Y for unions
"UP035", # use dict/list instead of typing.Dict/List
"UP037", # remove quotes from type annotations
"UP045", # use X | None instead of Optional[X]
"UP004", # use isinstance instead of type
"UP008", # use super() instead of super(Class, self)
"UP010", # use isinstance for type checks
"UP018", # use str() instead of "string"
"UP031", # use f-strings for .format()
"UP032", # use f-strings for .format() with positional
"I001", # sort imports
"I002", # remove unused imports
]
ignore = [
"E501", # ignore line too long
"S607", # Starting a process with a partial executable path - OK for uv/pip commands
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101"] # Allow assert statements in tests
"packages/*/tests/**/*.py" = ["S101"] # Allow assert statements in tests
"**/*_test.py" = ["S101"] # Allow assert statements in test files
"**/test_*.py" = ["S101"] # Allow assert statements in test files
"**/__init__.py" = ["F401"] # Allow unused imports in __init__ files (re-exports)
[tool.pytest.ini_options]
testpaths = [
"packages/crewai/tests",
"packages/tools/tests",
]
markers = [
"telemetry: mark test as a telemetry test (don't mock telemetry)",
]
[tool.mypy]
exclude = ["packages/crewai/src/crewai/cli/templates", "packages/*/tests"]
# PyTorch index configuration, since torch 2.5.0 is not compatible with python 3.13
[[tool.uv.index]]
name = "pytorch-nightly"
url = "https://download.pytorch.org/whl/nightly/cpu"
explicit = true
[[tool.uv.index]]
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'" },
]
torchvision = [
{ index = "pytorch-nightly", marker = "python_version >= '3.13'" },
{ index = "pytorch", marker = "python_version < '3.13'" },
]
[tool.hatch.version]
path = "packages/crewai/src/crewai/__init__.py"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["packages/crewai/src/crewai"]