diff --git a/misc/py-crewai/Makefile b/misc/py-crewai/Makefile index 2d7d76719097..3200fe9273dc 100644 --- a/misc/py-crewai/Makefile +++ b/misc/py-crewai/Makefile @@ -1,65 +1,116 @@ PORTNAME= crewai -PORTVERSION= 1.15.4 +PORTVERSION= 1.15.6 CATEGORIES= misc python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= yuri@FreeBSD.org COMMENT= Framework for orchestrating role-playing, autonomous AI agents WWW= https://crewai.com \ https://docs.crewai.com \ https://github.com/crewAIInc/crewAI LICENSE= MIT BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiofiles>=23.2.1:devel/py-aiofiles@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}aiosqlite>=0.19.0:databases/py-aiosqlite@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}appdirs>=1.4.4:devel/py-appdirs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}cel-python>=0.5.0,<0.6:devel/py-cel-python@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}chromadb>=1.1.0:databases/py-chromadb@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}click>=8.1.7,<9:devel/py-click@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}crewai-cli>=1.15.4:misc/py-crewai-cli@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}crewai-core>=1.15.4:misc/py-crewai-core@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}crewai-cli>=1.15.6:misc/py-crewai-cli@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}crewai-core>=1.15.6:misc/py-crewai-core@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}httpx>=0.28.1:www/py-httpx@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}instructor>=1.3.3:misc/py-instructor@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}json-repair>=0.25.2:textproc/py-json-repair@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}json-repair>=0.60.1:textproc/py-json-repair@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}json5>=0.10.0:devel/py-json5@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}jsonref>=1.1.0:devel/py-jsonref@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}mcp>=1.26.0:misc/py-mcp@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lancedb>=0.29.2:databases/py-lancedb@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mcp>0:misc/py-mcp@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}openai>=2.30.0,<3:misc/py-openai@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}openpyxl>=3.1.5:textproc/py-openpyxl@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}opentelemetry-api>=1.42.0:devel/py-opentelemetry-api@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}opentelemetry-exporter-otlp-proto-http>=1.42.0:devel/py-opentelemetry-exporter-otlp-proto-http@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}opentelemetry-sdk>=1.42.0:devel/py-opentelemetry-sdk@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pdfplumber>=0.11.4:graphics/py-pdfplumber@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}portalocker>=2.7.0:devel/py-portalocker@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pydantic-settings>=2.10.1,<3:devel/py-pydantic-settings@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pydantic-settings>=2.14.2:devel/py-pydantic-settings@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pydantic2>=2.11.9:devel/py-pydantic2@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyjwt>=2.13.0,<3:www/py-pyjwt@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}python-dotenv>=1.2.2,<2:www/py-python-dotenv@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyyaml>=6.0:devel/py-pyyaml@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}regex>=2026.1.15:textproc/py-regex@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tokenizers>=0.21,<1:textproc/py-tokenizers@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tomli-w>=1.1.0:textproc/py-tomli-w@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tomli>=2.0.2:textproc/py-tomli@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest-recording>=0:devel/py-pytest-recording@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}vcrpy>=0:devel/py-vcrpy@${PY_FLAVOR} USES= python USE_PYTHON= autoplist concurrent pep517 pytest NO_ARCH= yes # CLI templates ship Jinja-like placeholders in .py files and cannot be # byte-compiled during staging. PEP517_INSTALL_CMD= ${PYTHON_CMD} -m installer --no-compile-bytecode \ --destdir ${STAGEDIR} --prefix ${PREFIX} \ ${BUILD_WRKSRC}/dist/${PORTNAME:C|[-_]+|_|g}-${DISTVERSION}*.whl TEST_ENV= ${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} CREWAI_TESTING=true TEST_WRKSRC= ${WRKSRC}/tests +TEST_ARGS= -m 'not vcr' \ + --ignore=a2a \ + --ignore=agents/test_agent_a2a_wrapping.py \ + --ignore=agents/test_agent_executor.py \ + --ignore=agents/test_crew_agent_parser.py \ + --ignore=agents/test_native_tool_calling.py \ + --ignore=cli/test_plus_api.py \ + --ignore=crew/test_async_crew.py \ + --ignore=events/test_event_context.py \ + --ignore=events/test_llm_finish_reason_response_id.py \ + --ignore=llms/anthropic \ + --ignore=llms/azure \ + --ignore=llms/google \ + --ignore=llms/hooks \ + --ignore=llms/openai \ + --ignore=llms/test_multimodal.py \ + --ignore=llms/test_multimodal_integration.py \ + --ignore=llms/test_prompt_cache.py \ + --ignore=memory \ + --ignore=mcp \ + --ignore=rag/chromadb \ + --ignore=rag/qdrant/test_client.py \ + --ignore=tracing/test_tracing.py \ + --ignore=test_agent_multimodal.py \ + --ignore=test_crew.py \ + --ignore=test_crew_multimodal.py \ + --ignore=test_flow_multimodal.py \ + --ignore=test_llm.py \ + --ignore=test_llm_streaming_finish_reason.py \ + --ignore=test_project.py \ + --ignore=tools/agent_tools/test_read_file_tool.py \ + --ignore=utilities/test_converter.py \ + --ignore=utilities/test_file_store.py \ + --ignore=utilities/test_files.py \ + --deselect=tests/agents/test_agent.py::test_agent_from_repository \ + --deselect=tests/agents/test_agent.py::test_agent_from_repository_override_attributes \ + --deselect=tests/agents/test_agent.py::test_agent_from_repository_with_invalid_tools \ + --deselect=tests/agents/test_agent.py::test_agent_with_callbacks \ + --deselect=tests/agents/test_agent.py::test_crew_agent_executor_litellm_auth_error \ + --deselect=tests/agents/test_agent.py::test_litellm_anthropic_error_handling \ + --deselect=tests/agents/test_lite_agent.py::test_agent_kickoff_with_files_parameter \ + --deselect=tests/agents/test_lite_agent.py::test_prepare_kickoff_extracts_files_from_messages \ + --deselect=tests/agents/test_lite_agent.py::test_prepare_kickoff_merges_files_from_messages_and_parameter \ + --deselect=tests/agents/test_lite_agent.py::test_prepare_kickoff_param_files_override_message_files \ + --deselect=tests/llms/bedrock/test_bedrock.py::test_bedrock_raises_error_when_model_not_found \ + --deselect=tests/test_flow_conversation.py::TestDeferredFlowLifecycleEvents::test_finalize_batch_is_idempotent \ + --deselect=tests/test_flow_from_definition.py::test_crew_action_repository_fetch_does_not_block_event_loop \ + --deselect=tests/utilities/events/test_shutdown.py::test_concurrent_access_during_shutdown_flag \ + --deselect=tests/utilities/events/test_shutdown.py::test_mixed_sync_async_handler_execution \ + --deselect=tests/utilities/events/test_thread_safety.py::test_concurrent_emit_and_registration -# tests as of 1.15.4: 918 failed, 3697 passed, 89 skipped, 23 errors in 246.84s +# tests as of 1.15.5: 2477 passed, 27 skipped, 254 deselected, 1661 warnings in 40.00s .include diff --git a/misc/py-crewai/distinfo b/misc/py-crewai/distinfo index 68059d281a26..78f138b39fa0 100644 --- a/misc/py-crewai/distinfo +++ b/misc/py-crewai/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1784322027 -SHA256 (crewai-1.15.4.tar.gz) = e41fd19147ad2ac1c482fd7233e4adc4d8dae82e7b7014dd65aef1c1dd0f3e25 -SIZE (crewai-1.15.4.tar.gz) = 7794807 +TIMESTAMP = 1784952451 +SHA256 (crewai-1.15.6.tar.gz) = e149bdc15db029df453a0e93cca27bdcf1b74de4cd4aca181cc2ac276c98f148 +SIZE (crewai-1.15.6.tar.gz) = 7800480 diff --git a/misc/py-crewai/files/patch-pyproject.toml b/misc/py-crewai/files/patch-pyproject.toml index 5253e2441838..9aef5eae1b8e 100644 --- a/misc/py-crewai/files/patch-pyproject.toml +++ b/misc/py-crewai/files/patch-pyproject.toml @@ -1,169 +1,16 @@ --- pyproject.toml.orig 2026-07-17 21:30:24 UTC +++ pyproject.toml -@@ -8,43 +8,43 @@ dependencies = [ - ] - requires-python = ">=3.10, <3.14" - dependencies = [ -- "crewai-core==1.15.4", -- "crewai-cli==1.15.4", -+ "crewai-core>=1.15.2", -+ "crewai-cli>=1.15.2", - # Core Dependencies -- "pydantic>=2.11.9,<2.13", -+ "pydantic>=2.11.9", - "openai>=2.30.0,<3", - "instructor>=1.3.3", - # Text Processing -- "pdfplumber~=0.11.4", -- "regex~=2026.1.15", -+ "pdfplumber>=0.11.4", -+ "regex>=2026.1.15", - # Telemetry and Monitoring -- "opentelemetry-api~=1.42.0", -- "opentelemetry-sdk~=1.42.0", -- "opentelemetry-exporter-otlp-proto-http~=1.42.0", -+ "opentelemetry-api>=1.42.0", -+ "opentelemetry-sdk>=1.42.0", -+ "opentelemetry-exporter-otlp-proto-http>=1.42.0", - # Data Handling -- "chromadb~=1.1.0", -+ "chromadb>=1.1.0", - "tokenizers>=0.21,<1", -- "openpyxl~=3.1.5", -+ "openpyxl>=3.1.5", - # Authentication and Security - "python-dotenv>=1.2.2,<2", - "pyjwt>=2.13.0,<3", - # Configuration and Utils - "click>=8.1.7,<9", -- "appdirs~=1.4.4", -- "jsonref~=1.1.0", -- "json-repair~=0.25.2", -+ "appdirs>=1.4.4", -+ "jsonref>=1.1.0", -+ "json-repair>=0.25.2", - "cel-python>=0.5.0,<0.6", -- "tomli-w~=1.1.0", -- "tomli~=2.0.2", -- "json5~=0.10.0", -- "portalocker~=2.7.0", -+ "tomli-w>=1.1.0", -+ "tomli>=2.0.2", -+ "json5>=0.10.0", -+ "portalocker>=2.7.0", - "pydantic-settings>=2.10.1,<3", -- "httpx~=0.28.1", -- "mcp~=1.28.1", -- "aiosqlite~=0.21.0", -- "pyyaml~=6.0", -- "aiofiles~=24.1.0", +@@ -44,7 +44,7 @@ + "aiosqlite~=0.21.0", + "pyyaml~=6.0", + "aiofiles~=24.1.0", - "lancedb>=0.29.2,<0.30.1", -+ "httpx>=0.28.1", -+ "mcp>=1.26.0", -+ "aiosqlite>=0.19.0", -+ "pyyaml>=6.0", -+ "aiofiles>=23.2.1", + "lancedb>=0.29.2", ] - + [project.urls] -@@ -53,99 +53,6 @@ Repository = "https://github.com/crewAIInc/crewAI" - Repository = "https://github.com/crewAIInc/crewAI" - - --[project.optional-dependencies] --tools = [ -- "crewai-tools==1.15.4", --] --embeddings = [ -- "tiktoken>=0.8.0,<0.13" --] --pandas = [ -- "pandas~=2.2.3", --] --openpyxl = [ -- "openpyxl~=3.1.5", --] --mem0 = ["mem0ai>=2.0.0,<3"] --docling = [ -- "docling~=2.97.0", -- # docling 2.97 split into docling-slim; the chunker package (HierarchicalChunker) -- # now eagerly imports code-chunking submodules that need tree-sitter/semchunk, -- # which only the docling-core[chunking] extra provides. -- "docling-core[chunking]>=2.74.1", --] --qdrant = [ -- "qdrant-client[fastembed]~=1.14.3", --] --aws = [ -- "boto3~=1.42.90", -- "aiobotocore~=3.5.0", --] --watson = [ -- "ibm-watsonx-ai~=1.3.39", --] --voyageai = [ -- "voyageai~=0.3.5", --] --litellm = [ -- "litellm>=1.84.0,<2", --] --bedrock = [ -- "boto3~=1.42.90", -- "aiobotocore~=3.5.0", --] --google-genai = [ -- "google-genai~=1.65.0", --] --azure-ai-inference = [ -- "azure-ai-inference~=1.0.0b9", -- "azure-identity>=1.17.0,<2", --] --anthropic = [ -- "anthropic~=0.73.0", --] --a2a = [ -- "a2a-sdk~=0.3.10", -- "httpx-auth~=0.23.1", -- "httpx-sse~=0.4.0", -- "aiocache[redis,memcached]~=0.12.3", --] --file-processing = [ -- "crewai-files", --] --qdrant-edge = [ -- "qdrant-edge-py>=0.6.0", --] -- -- --[tool.uv] --exclude-newer = "3 days" -- --# 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.sources] --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'" }, --] --crewai-files = { workspace = true } -- -- +@@ -147,5 +147,2 @@ -[project.scripts] -crewai = "crewai_cli.cli:crewai" - +- [build-system] - requires = ["hatchling"]