mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
Adapt Tools CLI to uv (#1455)
* Adapt Tools CLI to UV * Fix failing test
This commit is contained in:
@@ -25,7 +25,9 @@ class PlusAPI:
|
|||||||
|
|
||||||
def _make_request(self, method: str, endpoint: str, **kwargs) -> requests.Response:
|
def _make_request(self, method: str, endpoint: str, **kwargs) -> requests.Response:
|
||||||
url = urljoin(self.base_url, endpoint)
|
url = urljoin(self.base_url, endpoint)
|
||||||
return requests.request(method, url, headers=self.headers, **kwargs)
|
session = requests.Session()
|
||||||
|
session.trust_env = False
|
||||||
|
return session.request(method, url, headers=self.headers, **kwargs)
|
||||||
|
|
||||||
def login_to_tool_repository(self):
|
def login_to_tool_repository(self):
|
||||||
return self._make_request("POST", f"{self.TOOLS_RESOURCE}/login")
|
return self._make_request("POST", f"{self.TOOLS_RESOURCE}/login")
|
||||||
|
|||||||
10
src/crewai/cli/templates/tool/.gitignore
vendored
Normal file
10
src/crewai/cli/templates/tool/.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Python-generated files
|
||||||
|
__pycache__/
|
||||||
|
*.py[oc]
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
wheels/
|
||||||
|
*.egg-info
|
||||||
|
|
||||||
|
# Virtual environments
|
||||||
|
.venv
|
||||||
@@ -1,14 +1,10 @@
|
|||||||
[tool.poetry]
|
[project]
|
||||||
name = "{{folder_name}}"
|
name = "{{folder_name}}"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Power up your crews with {{folder_name}}"
|
description = "Power up your crews with {{folder_name}}"
|
||||||
authors = ["Your Name <you@example.com>"]
|
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.10,<=3.13"
|
||||||
|
dependencies = [
|
||||||
|
"crewai[tools]>=0.70.1"
|
||||||
|
]
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = ">=3.10,<=3.13"
|
|
||||||
crewai = { extras = ["tools"], version = ">=0.70.1,<1.0.0" }
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import platform
|
|||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from netrc import netrc
|
||||||
|
import stat
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
@@ -147,7 +149,7 @@ class ToolCommand(BaseCommand, PlusAPIMixin):
|
|||||||
|
|
||||||
if login_response.status_code != 200:
|
if login_response.status_code != 200:
|
||||||
console.print(
|
console.print(
|
||||||
"Failed to authenticate to the tool repository. Make sure you have the access to tools.",
|
"Authentication failed. Verify access to the tool repository, or try `crewai login`. ",
|
||||||
style="bold red",
|
style="bold red",
|
||||||
)
|
)
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
@@ -159,23 +161,19 @@ class ToolCommand(BaseCommand, PlusAPIMixin):
|
|||||||
"Successfully authenticated to the tool repository.", style="bold green"
|
"Successfully authenticated to the tool repository.", style="bold green"
|
||||||
)
|
)
|
||||||
|
|
||||||
def _set_netrc_credentials(self, credentials):
|
def _set_netrc_credentials(self, credentials, netrc_path=None):
|
||||||
# Create .netrc or _netrc file
|
if not netrc_path:
|
||||||
netrc_filename = "_netrc" if platform.system() == "Windows" else ".netrc"
|
netrc_filename = "_netrc" if platform.system() == "Windows" else ".netrc"
|
||||||
netrc_path = Path.home() / netrc_filename
|
netrc_path = Path.home() / netrc_filename
|
||||||
|
netrc_path.touch(mode=stat.S_IRUSR | stat.S_IWUSR, exist_ok=True)
|
||||||
|
|
||||||
netrc_content = f"""machine app.crewai.com
|
netrc_instance = netrc(file=netrc_path)
|
||||||
login {credentials['username']}
|
netrc_instance.hosts["app.crewai.com"] = (credentials["username"], "", credentials["password"])
|
||||||
password {credentials['password']}
|
|
||||||
"""
|
|
||||||
|
|
||||||
with open(netrc_path, "a") as netrc_file:
|
with open(netrc_path, 'w') as file:
|
||||||
netrc_file.write(netrc_content)
|
file.write(str(netrc_instance))
|
||||||
|
|
||||||
# Set appropriate permissions for Unix-like systems
|
console.print(f"Added credentials to {netrc_path}", style="bold green")
|
||||||
if platform.system() != "Windows":
|
|
||||||
os.chmod(netrc_path, 0o600)
|
|
||||||
console.print(f"Added credentials to {netrc_filename}", style="bold green")
|
|
||||||
|
|
||||||
def _add_package(self, tool_details):
|
def _add_package(self, tool_details):
|
||||||
tool_handle = tool_details["handle"]
|
tool_handle = tool_details["handle"]
|
||||||
|
|||||||
@@ -92,16 +92,20 @@ class TestPlusAPI(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(response, mock_response)
|
self.assertEqual(response, mock_response)
|
||||||
|
|
||||||
@patch("crewai.cli.plus_api.requests.request")
|
@patch("crewai.cli.plus_api.requests.Session")
|
||||||
def test_make_request(self, mock_request):
|
def test_make_request(self, mock_session):
|
||||||
mock_response = MagicMock()
|
mock_response = MagicMock()
|
||||||
mock_request.return_value = mock_response
|
|
||||||
|
mock_session_instance = mock_session.return_value
|
||||||
|
mock_session_instance.request.return_value = mock_response
|
||||||
|
|
||||||
response = self.api._make_request("GET", "test_endpoint")
|
response = self.api._make_request("GET", "test_endpoint")
|
||||||
|
|
||||||
mock_request.assert_called_once_with(
|
mock_session.assert_called_once()
|
||||||
|
mock_session_instance.request.assert_called_once_with(
|
||||||
"GET", f"{self.api.base_url}/test_endpoint", headers=self.api.headers
|
"GET", f"{self.api.base_url}/test_endpoint", headers=self.api.headers
|
||||||
)
|
)
|
||||||
|
mock_session_instance.trust_env = False
|
||||||
self.assertEqual(response, mock_response)
|
self.assertEqual(response, mock_response)
|
||||||
|
|
||||||
@patch("crewai.cli.plus_api.PlusAPI._make_request")
|
@patch("crewai.cli.plus_api.PlusAPI._make_request")
|
||||||
|
|||||||
Reference in New Issue
Block a user