mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
fix: resolve linting errors across codebase
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
from .reader_tool import S3ReaderTool
|
||||
from .writer_tool import S3WriterTool
|
||||
from .reader_tool import S3ReaderTool as S3ReaderTool
|
||||
from .writer_tool import S3WriterTool as S3WriterTool
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
from .patronus_eval_tool import PatronusEvalTool
|
||||
from .patronus_local_evaluator_tool import PatronusLocalEvaluatorTool
|
||||
from .patronus_predefined_criteria_eval_tool import PatronusPredefinedCriteriaEvalTool
|
||||
from .patronus_eval_tool import PatronusEvalTool as PatronusEvalTool
|
||||
from .patronus_local_evaluator_tool import (
|
||||
PatronusLocalEvaluatorTool as PatronusLocalEvaluatorTool,
|
||||
)
|
||||
from .patronus_predefined_criteria_eval_tool import (
|
||||
PatronusPredefinedCriteriaEvalTool as PatronusPredefinedCriteriaEvalTool,
|
||||
)
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import random
|
||||
|
||||
from patronus import Client, EvaluationResult # type: ignore[import-not-found]
|
||||
from patronus_local_evaluator_tool import ( # type: ignore[import-not-found]
|
||||
PatronusLocalEvaluatorTool,
|
||||
)
|
||||
|
||||
from crewai import Agent, Crew, Task
|
||||
from patronus import Client, EvaluationResult
|
||||
from patronus_local_evaluator_tool import PatronusLocalEvaluatorTool
|
||||
|
||||
|
||||
# Test the PatronusLocalEvaluatorTool where agent uses the local evaluator
|
||||
@@ -12,7 +15,7 @@ client = Client()
|
||||
# Example of an evaluator that returns a random pass/fail result
|
||||
@client.register_local_evaluator("random_evaluator")
|
||||
def random_evaluator(**kwargs):
|
||||
score = random.random()
|
||||
score = random.random() # noqa: S311
|
||||
return EvaluationResult(
|
||||
score_raw=score,
|
||||
pass_=score >= 0.5,
|
||||
|
||||
@@ -17,13 +17,17 @@ Usage:
|
||||
|
||||
import os
|
||||
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai.utilities.printer import Printer
|
||||
from dotenv import load_dotenv
|
||||
from stagehand.schemas import AvailableModel
|
||||
from stagehand.schemas import AvailableModel # type: ignore[import-untyped]
|
||||
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import StagehandTool
|
||||
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
# Load environment variables from .env file
|
||||
load_dotenv()
|
||||
|
||||
@@ -111,7 +115,7 @@ with StagehandTool(
|
||||
# Run the crew and get the result
|
||||
result = crew.kickoff()
|
||||
|
||||
print("\n==== RESULTS ====\n")
|
||||
print(result)
|
||||
_printer.print("\n==== RESULTS ====\n", color="cyan")
|
||||
_printer.print(str(result))
|
||||
|
||||
# Resources are automatically cleaned up when exiting the context manager
|
||||
|
||||
@@ -3,13 +3,16 @@ from pathlib import Path
|
||||
import click
|
||||
|
||||
from crewai.cli.utils import copy_template
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
def add_crew_to_flow(crew_name: str) -> None:
|
||||
"""Add a new crew to the current flow."""
|
||||
# Check if pyproject.toml exists in the current directory
|
||||
if not Path("pyproject.toml").exists():
|
||||
print("This command must be run from the root of a flow project.")
|
||||
_printer.print("This command must be run from the root of a flow project.", color="red")
|
||||
raise click.ClickException(
|
||||
"This command must be run from the root of a flow project."
|
||||
)
|
||||
@@ -19,7 +22,7 @@ def add_crew_to_flow(crew_name: str) -> None:
|
||||
crews_folder = flow_folder / "src" / flow_folder.name / "crews"
|
||||
|
||||
if not crews_folder.exists():
|
||||
print("Crews folder does not exist in the current flow.")
|
||||
_printer.print("Crews folder does not exist in the current flow.", color="red")
|
||||
raise click.ClickException("Crews folder does not exist in the current flow.")
|
||||
|
||||
# Create the crew within the flow's crews directory
|
||||
|
||||
@@ -27,7 +27,7 @@ class PlusAPIMixin:
|
||||
style="bold red",
|
||||
)
|
||||
console.print("Run 'crewai login' to sign up/login.", style="bold green")
|
||||
raise SystemExit
|
||||
raise SystemExit from None
|
||||
|
||||
def _validate_response(self, response: requests.Response) -> None:
|
||||
"""
|
||||
@@ -45,7 +45,7 @@ class PlusAPIMixin:
|
||||
)
|
||||
console.print(f"Status Code: {response.status_code}")
|
||||
console.print(f"Response:\n{response.content}")
|
||||
raise SystemExit
|
||||
raise SystemExit from None
|
||||
|
||||
if response.status_code == 422:
|
||||
console.print(
|
||||
|
||||
@@ -17,6 +17,9 @@ from crewai.crew import Crew
|
||||
from crewai.llm import LLM, BaseLLM
|
||||
from crewai.types.crew_chat import ChatInputField, ChatInputs
|
||||
from crewai.utilities.llm_utils import create_llm
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
MIN_REQUIRED_VERSION = "0.98.0"
|
||||
|
||||
@@ -111,9 +114,9 @@ def run_chat():
|
||||
def show_loading(event: threading.Event):
|
||||
"""Display animated loading dots while processing."""
|
||||
while not event.is_set():
|
||||
print(".", end="", flush=True)
|
||||
_printer.print(".", end="", flush=True)
|
||||
time.sleep(1)
|
||||
print()
|
||||
_printer.print()
|
||||
|
||||
|
||||
def initialize_chat_llm(crew: Crew) -> LLM | BaseLLM | None:
|
||||
|
||||
@@ -33,7 +33,7 @@ class EnterpriseConfigureCommand(BaseCommand):
|
||||
console.print(
|
||||
f"❌ Failed to configure Enterprise settings: {e!s}", style="bold red"
|
||||
)
|
||||
raise SystemExit(1)
|
||||
raise SystemExit(1) from e
|
||||
|
||||
def _fetch_oauth_config(self, enterprise_url: str) -> Dict[str, Any]:
|
||||
oauth_endpoint = f"{enterprise_url}/auth/parameters"
|
||||
@@ -50,8 +50,8 @@ class EnterpriseConfigureCommand(BaseCommand):
|
||||
|
||||
try:
|
||||
oauth_config = response.json()
|
||||
except JSONDecodeError:
|
||||
raise ValueError(f"Invalid JSON response from {oauth_endpoint}")
|
||||
except JSONDecodeError as e:
|
||||
raise ValueError(f"Invalid JSON response from {oauth_endpoint}") from e
|
||||
|
||||
required_fields = [
|
||||
"audience",
|
||||
|
||||
@@ -53,6 +53,7 @@ from crewai.task import Task
|
||||
from crewai.telemetry.telemetry import Telemetry
|
||||
from crewai.utilities import Logger
|
||||
from crewai.utilities.constants import EMITTER_COLOR
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
from .listeners.memory_listener import MemoryListener
|
||||
from .types.flow_events import (
|
||||
@@ -75,6 +76,8 @@ from .types.tool_usage_events import (
|
||||
ToolUsageStartedEvent,
|
||||
)
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
class EventListener(BaseEventListener):
|
||||
_instance = None
|
||||
@@ -383,7 +386,7 @@ class EventListener(BaseEventListener):
|
||||
|
||||
# Read from the in-memory stream
|
||||
content = self.text_stream.read()
|
||||
print(content, end="", flush=True)
|
||||
_printer.print(content, end="", flush=True)
|
||||
self.next_chunk = self.text_stream.tell()
|
||||
|
||||
# ----------- LLM GUARDRAIL EVENTS -----------
|
||||
|
||||
@@ -1086,7 +1086,7 @@ class Flow(Generic[T], metaclass=FlowMeta):
|
||||
for method_name in self._start_methods:
|
||||
# Check if this start method is triggered by the current trigger
|
||||
if method_name in self._listeners:
|
||||
condition_type, trigger_methods = self._listeners[
|
||||
_condition_type, trigger_methods = self._listeners[
|
||||
method_name
|
||||
]
|
||||
if current_trigger in trigger_methods:
|
||||
|
||||
@@ -14,6 +14,9 @@ from crewai.flow.visualization_utils import (
|
||||
add_nodes_to_network,
|
||||
compute_positions,
|
||||
)
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
class FlowPlot:
|
||||
@@ -128,7 +131,7 @@ class FlowPlot:
|
||||
try:
|
||||
with open(f"{filename}.html", "w", encoding="utf-8") as f:
|
||||
f.write(final_html_content)
|
||||
print(f"Plot saved as {filename}.html")
|
||||
_printer.print(f"Plot saved as {filename}.html", color="green")
|
||||
except IOError as e:
|
||||
raise IOError(
|
||||
f"Failed to save flow visualization to {filename}.html: {e!s}"
|
||||
@@ -204,9 +207,9 @@ class FlowPlot:
|
||||
|
||||
shutil.rmtree(lib_folder)
|
||||
except ValueError as e:
|
||||
print(f"Error validating lib folder path: {e}")
|
||||
_printer.print(f"Error validating lib folder path: {e}", color="red")
|
||||
except Exception as e:
|
||||
print(f"Error cleaning up lib folder: {e}")
|
||||
_printer.print(f"Error cleaning up lib folder: {e}", color="red")
|
||||
|
||||
|
||||
def plot_flow(flow, filename="flow_plot"):
|
||||
|
||||
@@ -19,6 +19,10 @@ import textwrap
|
||||
from collections import defaultdict, deque
|
||||
from typing import Any
|
||||
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
def get_possible_return_constants(function: Any) -> list[str] | None:
|
||||
try:
|
||||
@@ -27,7 +31,7 @@ def get_possible_return_constants(function: Any) -> list[str] | None:
|
||||
# Can't get source code
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Error retrieving source code for function {function.__name__}: {e}")
|
||||
_printer.print(f"Error retrieving source code for function {function.__name__}: {e}", color="red")
|
||||
return None
|
||||
|
||||
try:
|
||||
@@ -36,16 +40,16 @@ def get_possible_return_constants(function: Any) -> list[str] | None:
|
||||
# Parse the source code into an AST
|
||||
code_ast = ast.parse(source)
|
||||
except IndentationError as e:
|
||||
print(f"IndentationError while parsing source code of {function.__name__}: {e}")
|
||||
print(f"Source code:\n{source}")
|
||||
_printer.print(f"IndentationError while parsing source code of {function.__name__}: {e}", color="red")
|
||||
_printer.print(f"Source code:\n{source}", color="yellow")
|
||||
return None
|
||||
except SyntaxError as e:
|
||||
print(f"SyntaxError while parsing source code of {function.__name__}: {e}")
|
||||
print(f"Source code:\n{source}")
|
||||
_printer.print(f"SyntaxError while parsing source code of {function.__name__}: {e}", color="red")
|
||||
_printer.print(f"Source code:\n{source}", color="yellow")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Unexpected error while parsing source code of {function.__name__}: {e}")
|
||||
print(f"Source code:\n{source}")
|
||||
_printer.print(f"Unexpected error while parsing source code of {function.__name__}: {e}", color="red")
|
||||
_printer.print(f"Source code:\n{source}", color="yellow")
|
||||
return None
|
||||
|
||||
return_values = set()
|
||||
|
||||
@@ -19,6 +19,8 @@ import ast
|
||||
import inspect
|
||||
from typing import Any
|
||||
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
from .utils import (
|
||||
build_ancestor_dict,
|
||||
build_parent_children_dict,
|
||||
@@ -26,6 +28,8 @@ from .utils import (
|
||||
is_ancestor,
|
||||
)
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
def method_calls_crew(method: Any) -> bool:
|
||||
"""
|
||||
@@ -51,7 +55,7 @@ def method_calls_crew(method: Any) -> bool:
|
||||
source = inspect.cleandoc(source)
|
||||
tree = ast.parse(source)
|
||||
except Exception as e:
|
||||
print(f"Could not parse method {method.__name__}: {e}")
|
||||
_printer.print(f"Could not parse method {method.__name__}: {e}", color="red")
|
||||
return False
|
||||
|
||||
class CrewCallVisitor(ast.NodeVisitor):
|
||||
@@ -263,8 +267,9 @@ def add_edges(
|
||||
# If it's a known router edge and the method is known, don't warn.
|
||||
# This means the path is legitimate, just not reflected as nodes here.
|
||||
if not (is_router_edge and method_known):
|
||||
print(
|
||||
f"Warning: No node found for '{trigger}' or '{method_name}'. Skipping edge."
|
||||
_printer.print(
|
||||
f"Warning: No node found for '{trigger}' or '{method_name}'. Skipping edge.",
|
||||
color="yellow",
|
||||
)
|
||||
|
||||
# Edges for router return paths
|
||||
@@ -318,6 +323,7 @@ def add_edges(
|
||||
# Same check here: known router edge and known method?
|
||||
method_known = listener_name in flow._methods
|
||||
if not method_known:
|
||||
print(
|
||||
f"Warning: No node found for '{router_method_name}' or '{listener_name}'. Skipping edge."
|
||||
_printer.print(
|
||||
f"Warning: No node found for '{router_method_name}' or '{listener_name}'. Skipping edge.",
|
||||
color="yellow",
|
||||
)
|
||||
|
||||
@@ -36,15 +36,13 @@ def task(func):
|
||||
def agent(func):
|
||||
"""Marks a method as a crew agent."""
|
||||
func.is_agent = True
|
||||
func = memoize(func)
|
||||
return func
|
||||
return memoize(func)
|
||||
|
||||
|
||||
def llm(func):
|
||||
"""Marks a method as an LLM provider."""
|
||||
func.is_llm = True
|
||||
func = memoize(func)
|
||||
return func
|
||||
return memoize(func)
|
||||
|
||||
|
||||
def output_json(cls):
|
||||
@@ -91,7 +89,7 @@ def crew(func) -> Callable[..., Crew]:
|
||||
agents = self._original_agents.items()
|
||||
|
||||
# Instantiate tasks in order
|
||||
for task_name, task_method in tasks:
|
||||
for _task_name, task_method in tasks:
|
||||
task_instance = task_method(self)
|
||||
instantiated_tasks.append(task_instance)
|
||||
agent_instance = getattr(task_instance, "agent", None)
|
||||
@@ -100,7 +98,7 @@ def crew(func) -> Callable[..., Crew]:
|
||||
agent_roles.add(agent_instance.role)
|
||||
|
||||
# Instantiate agents not included by tasks
|
||||
for agent_name, agent_method in agents:
|
||||
for _agent_name, agent_method in agents:
|
||||
agent_instance = agent_method(self)
|
||||
if agent_instance.role not in agent_roles:
|
||||
instantiated_agents.append(agent_instance)
|
||||
@@ -117,9 +115,9 @@ def crew(func) -> Callable[..., Crew]:
|
||||
|
||||
return wrapper
|
||||
|
||||
for _, callback in self._before_kickoff.items():
|
||||
for callback in self._before_kickoff.values():
|
||||
crew.before_kickoff_callbacks.append(callback_wrapper(callback, self))
|
||||
for _, callback in self._after_kickoff.items():
|
||||
for callback in self._after_kickoff.values():
|
||||
crew.after_kickoff_callbacks.append(callback_wrapper(callback, self))
|
||||
|
||||
return crew
|
||||
|
||||
@@ -8,9 +8,11 @@ import yaml
|
||||
from dotenv import load_dotenv
|
||||
|
||||
from crewai.tools import BaseTool
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
load_dotenv()
|
||||
|
||||
_printer = Printer()
|
||||
T = TypeVar("T", bound=type)
|
||||
|
||||
"""Base decorator for creating crew classes with configuration and function management."""
|
||||
@@ -148,7 +150,7 @@ def CrewBase(cls: T) -> T: # noqa: N802
|
||||
with open(config_path, "r", encoding="utf-8") as file:
|
||||
return yaml.safe_load(file)
|
||||
except FileNotFoundError:
|
||||
print(f"File not found: {config_path}")
|
||||
_printer.print(f"File not found: {config_path}", color="red")
|
||||
raise
|
||||
|
||||
def _get_all_functions(self):
|
||||
|
||||
@@ -6,6 +6,9 @@ from chromadb.api.types import Documents, EmbeddingFunction, Embeddings
|
||||
from typing_extensions import Unpack
|
||||
|
||||
from crewai.rag.embeddings.providers.ibm.types import WatsonXProviderConfig
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
class WatsonXEmbeddingFunction(EmbeddingFunction[Documents]):
|
||||
@@ -155,5 +158,5 @@ class WatsonXEmbeddingFunction(EmbeddingFunction[Documents]):
|
||||
embeddings = embedding.embed_documents(input)
|
||||
return cast(Embeddings, embeddings)
|
||||
except Exception as e:
|
||||
print(f"Error during WatsonX embedding: {e}")
|
||||
_printer.print(f"Error during WatsonX embedding: {e}", color="red")
|
||||
raise
|
||||
|
||||
@@ -47,6 +47,8 @@ from crewai.utilities.i18n import I18N
|
||||
from crewai.utilities.printer import Printer
|
||||
from crewai.utilities.string_utils import interpolate_only
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
class Task(BaseModel):
|
||||
"""Class that represents a task to be executed.
|
||||
@@ -626,7 +628,7 @@ Follow these guidelines:
|
||||
try:
|
||||
crew_chat_messages = json.loads(crew_chat_messages_json)
|
||||
except json.JSONDecodeError as e:
|
||||
print("An error occurred while parsing crew chat messages:", e)
|
||||
_printer.print(f"An error occurred while parsing crew chat messages: {e}", color="red")
|
||||
raise
|
||||
|
||||
conversation_history = "\n".join(
|
||||
|
||||
@@ -14,6 +14,9 @@ from pydantic import (
|
||||
from pydantic import BaseModel as PydanticBaseModel
|
||||
|
||||
from crewai.tools.structured_tool import CrewStructuredTool
|
||||
from crewai.utilities.printer import Printer
|
||||
|
||||
_printer = Printer()
|
||||
|
||||
|
||||
class EnvVar(BaseModel):
|
||||
@@ -85,7 +88,7 @@ class BaseTool(BaseModel, ABC):
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> Any:
|
||||
print(f"Using Tool: {self.name}")
|
||||
_printer.print(f"Using Tool: {self.name}", color="cyan")
|
||||
result = self._run(*args, **kwargs)
|
||||
|
||||
# If _run is async, we safely run it
|
||||
|
||||
Reference in New Issue
Block a user