diff --git a/docs/concepts/memory.mdx b/docs/concepts/memory.mdx index ae65db290..298e8814c 100644 --- a/docs/concepts/memory.mdx +++ b/docs/concepts/memory.mdx @@ -506,7 +506,7 @@ my_crew = Crew( ) ``` -### Resetting Memory +### Resetting Memory via cli ```shell crewai reset-memories [OPTIONS] @@ -520,8 +520,46 @@ crewai reset-memories [OPTIONS] | `-s`, `--short` | Reset SHORT TERM memory. | Flag (boolean) | False | | `-e`, `--entities` | Reset ENTITIES memory. | Flag (boolean) | False | | `-k`, `--kickoff-outputs` | Reset LATEST KICKOFF TASK OUTPUTS. | Flag (boolean) | False | +| `-kn`, `--knowledge` | Reset KNOWLEDEGE storage | Flag (boolean) | False | | `-a`, `--all` | Reset ALL memories. | Flag (boolean) | False | +Note: To use the cli command you need to have your crew in a file called crew.py in the same directory. + + + + +### Resetting Memory via crew object + +```python + +my_crew = Crew( + agents=[...], + tasks=[...], + process=Process.sequential, + memory=True, + verbose=True, + embedder={ + "provider": "custom", + "config": { + "embedder": CustomEmbedder() + } + } +) + +my_crew.reset_memories(command_type = 'all') # Resets all the memory +``` + +#### Resetting Memory Options + +| Command Type | Description | +| :----------------- | :------------------------------- | +| `long` | Reset LONG TERM memory. | +| `short` | Reset SHORT TERM memory. | +| `entities` | Reset ENTITIES memory. | +| `kickoff_outputs` | Reset LATEST KICKOFF TASK OUTPUTS. | +| `knowledge` | Reset KNOWLEDGE memory. | +| `all` | Reset ALL memories. | + ## Benefits of Using CrewAI's Memory System diff --git a/docs/how-to/kickoff-async.mdx b/docs/how-to/kickoff-async.mdx index 099c7ebc6..81300b19b 100644 --- a/docs/how-to/kickoff-async.mdx +++ b/docs/how-to/kickoff-async.mdx @@ -54,7 +54,8 @@ coding_agent = Agent( # Create a task that requires code execution data_analysis_task = Task( description="Analyze the given dataset and calculate the average age of participants. Ages: {ages}", - agent=coding_agent + agent=coding_agent, + expected_output="The average age of the participants." ) # Create a crew and add the task @@ -116,4 +117,4 @@ async def async_multiple_crews(): # Run the async function asyncio.run(async_multiple_crews()) -``` \ No newline at end of file +``` diff --git a/src/crewai/cli/utils.py b/src/crewai/cli/utils.py index 60eb2488a..8912036db 100644 --- a/src/crewai/cli/utils.py +++ b/src/crewai/cli/utils.py @@ -257,11 +257,11 @@ def get_crew(crew_path: str = "crew.py", require: bool = False) -> Crew | None: import os for root, _, files in os.walk("."): - if "crew.py" in files: - crew_path = os.path.join(root, "crew.py") + if crew_path in files: + crew_os_path = os.path.join(root, crew_path) try: spec = importlib.util.spec_from_file_location( - "crew_module", crew_path + "crew_module", crew_os_path ) if not spec or not spec.loader: continue @@ -273,9 +273,11 @@ def get_crew(crew_path: str = "crew.py", require: bool = False) -> Crew | None: for attr_name in dir(module): attr = getattr(module, attr_name) try: - if callable(attr) and hasattr(attr, "crew"): - crew_instance = attr().crew() - return crew_instance + if isinstance(attr, Crew) and hasattr(attr, "kickoff"): + print( + f"Found valid crew object in attribute '{attr_name}' at {crew_os_path}." + ) + return attr except Exception as e: print(f"Error processing attribute {attr_name}: {e}") diff --git a/src/crewai/crew.py b/src/crewai/crew.py index 31678ae88..cf627700e 100644 --- a/src/crewai/crew.py +++ b/src/crewai/crew.py @@ -35,10 +35,8 @@ from crewai.process import Process from crewai.task import Task from crewai.tasks.conditional_task import ConditionalTask from crewai.tasks.task_output import TaskOutput -from crewai.telemetry import Telemetry from crewai.tools.agent_tools.agent_tools import AgentTools from crewai.tools.base_tool import Tool -from crewai.traces.unified_trace_controller import init_crew_main_trace from crewai.types.usage_metrics import UsageMetrics from crewai.utilities import I18N, FileHandler, Logger, RPMController from crewai.utilities.constants import TRAINING_DATA_FILE @@ -258,8 +256,6 @@ class Crew(BaseModel): if self.function_calling_llm and not isinstance(self.function_calling_llm, LLM): self.function_calling_llm = create_llm(self.function_calling_llm) - self._telemetry = Telemetry() - self._telemetry.set_tracer() return self @model_validator(mode="after") @@ -574,7 +570,6 @@ class Crew(BaseModel): CrewTrainingHandler(filename).clear() raise - @init_crew_main_trace def kickoff( self, inputs: Optional[Dict[str, Any]] = None, @@ -1115,7 +1110,6 @@ class Crew(BaseModel): "_short_term_memory", "_long_term_memory", "_entity_memory", - "_telemetry", "agents", "tasks", "knowledge_sources", @@ -1278,11 +1272,11 @@ class Crew(BaseModel): def _reset_all_memories(self) -> None: """Reset all available memory systems.""" memory_systems = [ - ("short term", self._short_term_memory), - ("entity", self._entity_memory), - ("long term", self._long_term_memory), - ("task output", self._task_output_handler), - ("knowledge", self.knowledge), + ("short term", getattr(self, "_short_term_memory", None)), + ("entity", getattr(self, "_entity_memory", None)), + ("long term", getattr(self, "_long_term_memory", None)), + ("task output", getattr(self, "_task_output_handler", None)), + ("knowledge", getattr(self, "knowledge", None)), ] for name, system in memory_systems: diff --git a/src/crewai/flow/flow.py b/src/crewai/flow/flow.py index 2babbe57c..7a8b88ba0 100644 --- a/src/crewai/flow/flow.py +++ b/src/crewai/flow/flow.py @@ -22,10 +22,6 @@ from pydantic import BaseModel, Field, ValidationError from crewai.flow.flow_visualizer import plot_flow from crewai.flow.persistence.base import FlowPersistence from crewai.flow.utils import get_possible_return_constants -from crewai.traces.unified_trace_controller import ( - init_flow_main_trace, - trace_flow_step, -) from crewai.utilities.events.crewai_event_bus import crewai_event_bus from crewai.utilities.events.flow_events import ( FlowCreatedEvent, @@ -713,16 +709,34 @@ class Flow(Generic[T], metaclass=FlowMeta): raise TypeError(f"State must be dict or BaseModel, got {type(self._state)}") def kickoff(self, inputs: Optional[Dict[str, Any]] = None) -> Any: - """Start the flow execution. + """ + Start the flow execution in a synchronous context. + + This method wraps kickoff_async so that all state initialization and event + emission is handled in the asynchronous method. + """ + + async def run_flow(): + return await self.kickoff_async(inputs) + + return asyncio.run(run_flow()) + + async def kickoff_async(self, inputs: Optional[Dict[str, Any]] = None) -> Any: + """ + Start the flow execution asynchronously. + + This method performs state restoration (if an 'id' is provided and persistence is available) + and updates the flow state with any additional inputs. It then emits the FlowStartedEvent, + logs the flow startup, and executes all start methods. Once completed, it emits the + FlowFinishedEvent and returns the final output. Args: - inputs: Optional dictionary containing input values and potentially a state ID to restore - """ - # Handle state restoration if ID is provided in inputs - if inputs and "id" in inputs and self._persistence is not None: - restore_uuid = inputs["id"] - stored_state = self._persistence.load_state(restore_uuid) + inputs: Optional dictionary containing input values and/or a state ID for restoration. + Returns: + The final output from the flow, which is the result of the last executed method. + """ + if inputs: # Override the id in the state if it exists in inputs if "id" in inputs: if isinstance(self._state, dict): @@ -730,24 +744,27 @@ class Flow(Generic[T], metaclass=FlowMeta): elif isinstance(self._state, BaseModel): setattr(self._state, "id", inputs["id"]) - if stored_state: - self._log_flow_event( - f"Loading flow state from memory for UUID: {restore_uuid}", - color="yellow", - ) - # Restore the state - self._restore_state(stored_state) - else: - self._log_flow_event( - f"No flow state found for UUID: {restore_uuid}", color="red" - ) + # If persistence is enabled, attempt to restore the stored state using the provided id. + if "id" in inputs and self._persistence is not None: + restore_uuid = inputs["id"] + stored_state = self._persistence.load_state(restore_uuid) + if stored_state: + self._log_flow_event( + f"Loading flow state from memory for UUID: {restore_uuid}", + color="yellow", + ) + self._restore_state(stored_state) + else: + self._log_flow_event( + f"No flow state found for UUID: {restore_uuid}", color="red" + ) - # Apply any additional inputs after restoration + # Update state with any additional inputs (ignoring the 'id' key) filtered_inputs = {k: v for k, v in inputs.items() if k != "id"} if filtered_inputs: self._initialize_state(filtered_inputs) - # Start flow execution + # Emit FlowStartedEvent and log the start of the flow. crewai_event_bus.emit( self, FlowStartedEvent( @@ -763,16 +780,6 @@ class Flow(Generic[T], metaclass=FlowMeta): if inputs is not None and "id" not in inputs: self._initialize_state(inputs) - async def run_flow(): - return await self.kickoff_async() - - return asyncio.run(run_flow()) - - @init_flow_main_trace - async def kickoff_async(self, inputs: Optional[Dict[str, Any]] = None) -> Any: - if not self._start_methods: - raise ValueError("No start method defined") - tasks = [ self._execute_start_method(start_method) for start_method in self._start_methods @@ -789,6 +796,7 @@ class Flow(Generic[T], metaclass=FlowMeta): result=final_output, ), ) + return final_output async def _execute_start_method(self, start_method_name: str) -> None: @@ -814,7 +822,6 @@ class Flow(Generic[T], metaclass=FlowMeta): ) await self._execute_listeners(start_method_name, result) - @trace_flow_step async def _execute_method( self, method_name: str, method: Callable, *args: Any, **kwargs: Any ) -> Any: diff --git a/src/crewai/flow/utils.py b/src/crewai/flow/utils.py index c0686222f..81f3c1041 100644 --- a/src/crewai/flow/utils.py +++ b/src/crewai/flow/utils.py @@ -16,7 +16,8 @@ Example import ast import inspect import textwrap -from typing import Any, Dict, List, Optional, Set, Union +from collections import defaultdict, deque +from typing import Any, Deque, Dict, List, Optional, Set, Union def get_possible_return_constants(function: Any) -> Optional[List[str]]: @@ -118,7 +119,7 @@ def calculate_node_levels(flow: Any) -> Dict[str, int]: - Processes router paths separately """ levels: Dict[str, int] = {} - queue: List[str] = [] + queue: Deque[str] = deque() visited: Set[str] = set() pending_and_listeners: Dict[str, Set[str]] = {} @@ -128,28 +129,35 @@ def calculate_node_levels(flow: Any) -> Dict[str, int]: levels[method_name] = 0 queue.append(method_name) + # Precompute listener dependencies + or_listeners = defaultdict(list) + and_listeners = defaultdict(set) + for listener_name, (condition_type, trigger_methods) in flow._listeners.items(): + if condition_type == "OR": + for method in trigger_methods: + or_listeners[method].append(listener_name) + elif condition_type == "AND": + and_listeners[listener_name] = set(trigger_methods) + # Breadth-first traversal to assign levels while queue: - current = queue.pop(0) + current = queue.popleft() current_level = levels[current] visited.add(current) - for listener_name, (condition_type, trigger_methods) in flow._listeners.items(): - if condition_type == "OR": - if current in trigger_methods: - if ( - listener_name not in levels - or levels[listener_name] > current_level + 1 - ): - levels[listener_name] = current_level + 1 - if listener_name not in visited: - queue.append(listener_name) - elif condition_type == "AND": + for listener_name in or_listeners[current]: + if listener_name not in levels or levels[listener_name] > current_level + 1: + levels[listener_name] = current_level + 1 + if listener_name not in visited: + queue.append(listener_name) + + for listener_name, required_methods in and_listeners.items(): + if current in required_methods: if listener_name not in pending_and_listeners: pending_and_listeners[listener_name] = set() - if current in trigger_methods: - pending_and_listeners[listener_name].add(current) - if set(trigger_methods) == pending_and_listeners[listener_name]: + pending_and_listeners[listener_name].add(current) + + if required_methods == pending_and_listeners[listener_name]: if ( listener_name not in levels or levels[listener_name] > current_level + 1 @@ -159,22 +167,7 @@ def calculate_node_levels(flow: Any) -> Dict[str, int]: queue.append(listener_name) # Handle router connections - if current in flow._routers: - router_method_name = current - paths = flow._router_paths.get(router_method_name, []) - for path in paths: - for listener_name, ( - condition_type, - trigger_methods, - ) in flow._listeners.items(): - if path in trigger_methods: - if ( - listener_name not in levels - or levels[listener_name] > current_level + 1 - ): - levels[listener_name] = current_level + 1 - if listener_name not in visited: - queue.append(listener_name) + process_router_paths(flow, current, current_level, levels, queue) return levels @@ -227,10 +220,7 @@ def build_ancestor_dict(flow: Any) -> Dict[str, Set[str]]: def dfs_ancestors( - node: str, - ancestors: Dict[str, Set[str]], - visited: Set[str], - flow: Any + node: str, ancestors: Dict[str, Set[str]], visited: Set[str], flow: Any ) -> None: """ Perform depth-first search to build ancestor relationships. @@ -274,7 +264,9 @@ def dfs_ancestors( dfs_ancestors(listener_name, ancestors, visited, flow) -def is_ancestor(node: str, ancestor_candidate: str, ancestors: Dict[str, Set[str]]) -> bool: +def is_ancestor( + node: str, ancestor_candidate: str, ancestors: Dict[str, Set[str]] +) -> bool: """ Check if one node is an ancestor of another. @@ -339,7 +331,9 @@ def build_parent_children_dict(flow: Any) -> Dict[str, List[str]]: return parent_children -def get_child_index(parent: str, child: str, parent_children: Dict[str, List[str]]) -> int: +def get_child_index( + parent: str, child: str, parent_children: Dict[str, List[str]] +) -> int: """ Get the index of a child node in its parent's sorted children list. @@ -360,3 +354,23 @@ def get_child_index(parent: str, child: str, parent_children: Dict[str, List[str children = parent_children.get(parent, []) children.sort() return children.index(child) + + +def process_router_paths(flow, current, current_level, levels, queue): + """ + Handle the router connections for the current node. + """ + if current in flow._routers: + paths = flow._router_paths.get(current, []) + for path in paths: + for listener_name, ( + condition_type, + trigger_methods, + ) in flow._listeners.items(): + if path in trigger_methods: + if ( + listener_name not in levels + or levels[listener_name] > current_level + 1 + ): + levels[listener_name] = current_level + 1 + queue.append(listener_name) diff --git a/src/crewai/llm.py b/src/crewai/llm.py index 56741c5e9..0c8a46214 100644 --- a/src/crewai/llm.py +++ b/src/crewai/llm.py @@ -1,4 +1,3 @@ -import inspect import json import logging import os @@ -6,21 +5,17 @@ import sys import threading import warnings from contextlib import contextmanager -from typing import ( - Any, - Dict, - List, - Literal, - Optional, - Tuple, - Type, - Union, - cast, -) +from typing import Any, Dict, List, Literal, Optional, Type, Union, cast from dotenv import load_dotenv from pydantic import BaseModel +from crewai.utilities.events.llm_events import ( + LLMCallCompletedEvent, + LLMCallFailedEvent, + LLMCallStartedEvent, + LLMCallType, +) from crewai.utilities.events.tool_usage_events import ToolExecutionErrorEvent with warnings.catch_warnings(): @@ -31,12 +26,10 @@ with warnings.catch_warnings(): from litellm.utils import get_supported_openai_params, supports_response_schema -from crewai.traces.unified_trace_controller import trace_llm_call from crewai.utilities.events import crewai_event_bus from crewai.utilities.exceptions.context_window_exceeding_exception import ( LLMContextLengthExceededException, ) -from crewai.utilities.protocols import AgentExecutorProtocol load_dotenv() @@ -181,7 +174,6 @@ class LLM: self.context_window_size = 0 self.reasoning_effort = reasoning_effort self.additional_params = kwargs - self._message_history: List[Dict[str, str]] = [] self.is_anthropic = self._is_anthropic_model(model) litellm.drop_params = True @@ -197,12 +189,6 @@ class LLM: self.set_callbacks(callbacks) self.set_env_callbacks() - @trace_llm_call - def _call_llm(self, params: Dict[str, Any]) -> Any: - with suppress_warnings(): - response = litellm.completion(**params) - return response - def _is_anthropic_model(self, model: str) -> bool: """Determine if the model is from Anthropic provider. @@ -260,6 +246,15 @@ class LLM: >>> print(response) "The capital of France is Paris." """ + crewai_event_bus.emit( + self, + event=LLMCallStartedEvent( + messages=messages, + tools=tools, + callbacks=callbacks, + available_functions=available_functions, + ), + ) # Validate parameters before proceeding with the call. self._validate_call_params() @@ -312,7 +307,7 @@ class LLM: params = {k: v for k, v in params.items() if v is not None} # --- 2) Make the completion call - response = self._call_llm(params) + response = litellm.completion(**params) response_message = cast(Choices, cast(ModelResponse, response).choices)[ 0 ].message @@ -334,12 +329,13 @@ class LLM: # --- 4) If no tool calls, return the text response if not tool_calls or not available_functions: + self._handle_emit_call_events(text_response, LLMCallType.LLM_CALL) return text_response # --- 5) Handle the tool call tool_call = tool_calls[0] function_name = tool_call.function.name - print("function_name", function_name) + if function_name in available_functions: try: function_args = json.loads(tool_call.function.arguments) @@ -351,6 +347,7 @@ class LLM: try: # Call the actual tool function result = fn(**function_args) + self._handle_emit_call_events(result, LLMCallType.TOOL_CALL) return result except Exception as e: @@ -366,6 +363,12 @@ class LLM: error=str(e), ), ) + crewai_event_bus.emit( + self, + event=LLMCallFailedEvent( + error=f"Tool execution error: {str(e)}" + ), + ) return text_response else: @@ -375,12 +378,28 @@ class LLM: return text_response except Exception as e: + crewai_event_bus.emit( + self, + event=LLMCallFailedEvent(error=str(e)), + ) if not LLMContextLengthExceededException( str(e) )._is_context_limit_error(str(e)): logging.error(f"LiteLLM call failed: {str(e)}") raise + def _handle_emit_call_events(self, response: Any, call_type: LLMCallType): + """Handle the events for the LLM call. + + Args: + response (str): The response from the LLM call. + call_type (str): The type of call, either "tool_call" or "llm_call". + """ + crewai_event_bus.emit( + self, + event=LLMCallCompletedEvent(response=response, call_type=call_type), + ) + def _format_messages_for_provider( self, messages: List[Dict[str, str]] ) -> List[Dict[str, str]]: @@ -545,95 +564,3 @@ class LLM: litellm.success_callback = success_callbacks litellm.failure_callback = failure_callbacks - - def _get_execution_context(self) -> Tuple[Optional[Any], Optional[Any]]: - """Get the agent and task from the execution context. - - Returns: - tuple: (agent, task) from any AgentExecutor context, or (None, None) if not found - """ - frame = inspect.currentframe() - caller_frame = frame.f_back if frame else None - agent = None - task = None - - # Add a maximum depth to prevent infinite loops - max_depth = 100 # Reasonable limit for call stack depth - current_depth = 0 - - while caller_frame and current_depth < max_depth: - if "self" in caller_frame.f_locals: - caller_self = caller_frame.f_locals["self"] - if isinstance(caller_self, AgentExecutorProtocol): - agent = caller_self.agent - task = caller_self.task - break - caller_frame = caller_frame.f_back - current_depth += 1 - - return agent, task - - def _get_new_messages(self, messages: List[Dict[str, str]]) -> List[Dict[str, str]]: - """Get only the new messages that haven't been processed before.""" - if not hasattr(self, "_message_history"): - self._message_history = [] - - new_messages = [] - for message in messages: - message_key = (message["role"], message["content"]) - if message_key not in [ - (m["role"], m["content"]) for m in self._message_history - ]: - new_messages.append(message) - self._message_history.append(message) - return new_messages - - def _get_new_tool_results(self, agent) -> List[Dict]: - """Get only the new tool results that haven't been processed before.""" - if not agent or not agent.tools_results: - return [] - - if not hasattr(self, "_tool_results_history"): - self._tool_results_history: List[Dict] = [] - - new_tool_results = [] - - for result in agent.tools_results: - # Process tool arguments to extract actual values - processed_args = {} - if isinstance(result["tool_args"], dict): - for key, value in result["tool_args"].items(): - if isinstance(value, dict) and "type" in value: - # Skip metadata and just store the actual value - continue - processed_args[key] = value - - # Create a clean result with processed arguments - clean_result = { - "tool_name": result["tool_name"], - "tool_args": processed_args, - "result": result["result"], - "content": result.get("content", ""), - "start_time": result.get("start_time", ""), - } - - # Check if this exact tool execution exists in history - is_duplicate = False - for history_result in self._tool_results_history: - if ( - clean_result["tool_name"] == history_result["tool_name"] - and str(clean_result["tool_args"]) - == str(history_result["tool_args"]) - and str(clean_result["result"]) == str(history_result["result"]) - and clean_result["content"] == history_result.get("content", "") - and clean_result["start_time"] - == history_result.get("start_time", "") - ): - is_duplicate = True - break - - if not is_duplicate: - new_tool_results.append(clean_result) - self._tool_results_history.append(clean_result) - - return new_tool_results diff --git a/src/crewai/tools/tool_usage.py b/src/crewai/tools/tool_usage.py index 5c9333557..25e4b126a 100644 --- a/src/crewai/tools/tool_usage.py +++ b/src/crewai/tools/tool_usage.py @@ -2,7 +2,6 @@ import ast import datetime import json import time -from datetime import UTC from difflib import SequenceMatcher from json import JSONDecodeError from textwrap import dedent @@ -118,10 +117,7 @@ class ToolUsage: self._printer.print(content=f"\n\n{error}\n", color="red") return error - if ( - isinstance(tool, CrewStructuredTool) - and tool.name == self._i18n.tools("add_image")["name"] # type: ignore - ): + if isinstance(tool, CrewStructuredTool) and tool.name == self._i18n.tools("add_image")["name"]: # type: ignore try: result = self._use(tool_string=tool_string, tool=tool, calling=calling) return result @@ -158,7 +154,6 @@ class ToolUsage: self.task.increment_tools_errors() started_at = time.time() - started_at_trace = datetime.datetime.now(UTC) from_cache = False result = None # type: ignore # Incompatible types in assignment (expression has type "None", variable has type "str") @@ -186,9 +181,7 @@ class ToolUsage: if calling.arguments: try: - acceptable_args = tool.args_schema.model_json_schema()[ - "properties" - ].keys() # type: ignore + acceptable_args = tool.args_schema.model_json_schema()["properties"].keys() # type: ignore arguments = { k: v for k, v in calling.arguments.items() @@ -209,7 +202,7 @@ class ToolUsage: error=e, tool=tool.name, tool_inputs=tool.description ) error = ToolUsageErrorException( - f"\n{error_message}.\nMoving on then. {self._i18n.slice('format').format(tool_names=self.tools_names)}" + f'\n{error_message}.\nMoving on then. {self._i18n.slice("format").format(tool_names=self.tools_names)}' ).message self.task.increment_tools_errors() if self.agent.verbose: @@ -244,7 +237,6 @@ class ToolUsage: "result": result, "tool_name": tool.name, "tool_args": calling.arguments, - "start_time": started_at_trace, } self.on_tool_use_finished( @@ -388,7 +380,7 @@ class ToolUsage: raise else: return ToolUsageErrorException( - f"{self._i18n.errors('tool_arguments_error')}" + f'{self._i18n.errors("tool_arguments_error")}' ) if not isinstance(arguments, dict): @@ -396,7 +388,7 @@ class ToolUsage: raise else: return ToolUsageErrorException( - f"{self._i18n.errors('tool_arguments_error')}" + f'{self._i18n.errors("tool_arguments_error")}' ) return ToolCalling( @@ -424,7 +416,7 @@ class ToolUsage: if self.agent.verbose: self._printer.print(content=f"\n\n{e}\n", color="red") return ToolUsageErrorException( # type: ignore # Incompatible return value type (got "ToolUsageErrorException", expected "ToolCalling | InstructorToolCalling") - f"{self._i18n.errors('tool_usage_error').format(error=e)}\nMoving on then. {self._i18n.slice('format').format(tool_names=self.tools_names)}" + f'{self._i18n.errors("tool_usage_error").format(error=e)}\nMoving on then. {self._i18n.slice("format").format(tool_names=self.tools_names)}' ) return self._tool_calling(tool_string) diff --git a/src/crewai/traces/__init__.py b/src/crewai/traces/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/crewai/traces/context.py b/src/crewai/traces/context.py deleted file mode 100644 index dd1cf144e..000000000 --- a/src/crewai/traces/context.py +++ /dev/null @@ -1,39 +0,0 @@ -from contextlib import contextmanager -from contextvars import ContextVar -from typing import Generator - - -class TraceContext: - """Maintains the current trace context throughout the execution stack. - - This class provides a context manager for tracking trace execution across - async and sync code paths using ContextVars. - """ - - _context: ContextVar = ContextVar("trace_context", default=None) - - @classmethod - def get_current(cls): - """Get the current trace context. - - Returns: - Optional[UnifiedTraceController]: The current trace controller or None if not set. - """ - return cls._context.get() - - @classmethod - @contextmanager - def set_current(cls, trace): - """Set the current trace context within a context manager. - - Args: - trace: The trace controller to set as current. - - Yields: - UnifiedTraceController: The current trace controller. - """ - token = cls._context.set(trace) - try: - yield trace - finally: - cls._context.reset(token) diff --git a/src/crewai/traces/enums.py b/src/crewai/traces/enums.py deleted file mode 100644 index 392f46ea4..000000000 --- a/src/crewai/traces/enums.py +++ /dev/null @@ -1,19 +0,0 @@ -from enum import Enum - - -class TraceType(Enum): - LLM_CALL = "llm_call" - TOOL_CALL = "tool_call" - FLOW_STEP = "flow_step" - START_CALL = "start_call" - - -class RunType(Enum): - KICKOFF = "kickoff" - TRAIN = "train" - TEST = "test" - - -class CrewType(Enum): - CREW = "crew" - FLOW = "flow" diff --git a/src/crewai/traces/models.py b/src/crewai/traces/models.py deleted file mode 100644 index 254da957e..000000000 --- a/src/crewai/traces/models.py +++ /dev/null @@ -1,89 +0,0 @@ -from datetime import datetime -from typing import Any, Dict, List, Optional - -from pydantic import BaseModel, Field - - -class ToolCall(BaseModel): - """Model representing a tool call during execution""" - - name: str - arguments: Dict[str, Any] - output: str - start_time: datetime - end_time: Optional[datetime] = None - latency_ms: Optional[int] = None - error: Optional[str] = None - - -class LLMRequest(BaseModel): - """Model representing the LLM request details""" - - model: str - messages: List[Dict[str, str]] - temperature: Optional[float] = None - max_tokens: Optional[int] = None - stop_sequences: Optional[List[str]] = None - additional_params: Dict[str, Any] = Field(default_factory=dict) - - -class LLMResponse(BaseModel): - """Model representing the LLM response details""" - - content: str - finish_reason: Optional[str] = None - - -class FlowStepIO(BaseModel): - """Model representing flow step input/output details""" - - function_name: str - inputs: Dict[str, Any] = Field(default_factory=dict) - outputs: Any - metadata: Dict[str, Any] = Field(default_factory=dict) - - -class CrewTrace(BaseModel): - """Model for tracking detailed information about LLM interactions and Flow steps""" - - deployment_instance_id: Optional[str] = Field( - description="ID of the deployment instance" - ) - trace_id: str = Field(description="Unique identifier for this trace") - run_id: str = Field(description="Identifier for the execution run") - agent_role: Optional[str] = Field(description="Role of the agent") - task_id: Optional[str] = Field(description="ID of the current task being executed") - task_name: Optional[str] = Field(description="Name of the current task") - task_description: Optional[str] = Field( - description="Description of the current task" - ) - trace_type: str = Field(description="Type of the trace") - crew_type: str = Field(description="Type of the crew") - run_type: str = Field(description="Type of the run") - - # Timing information - start_time: Optional[datetime] = None - end_time: Optional[datetime] = None - latency_ms: Optional[int] = None - - # Request/Response for LLM calls - request: Optional[LLMRequest] = None - response: Optional[LLMResponse] = None - - # Input/Output for Flow steps - flow_step: Optional[FlowStepIO] = None - - # Tool usage - tool_calls: List[ToolCall] = Field(default_factory=list) - - # Metrics - tokens_used: Optional[int] = None - prompt_tokens: Optional[int] = None - completion_tokens: Optional[int] = None - cost: Optional[float] = None - - # Additional metadata - status: str = "running" # running, completed, error - error: Optional[str] = None - metadata: Dict[str, Any] = Field(default_factory=dict) - tags: List[str] = Field(default_factory=list) diff --git a/src/crewai/traces/unified_trace_controller.py b/src/crewai/traces/unified_trace_controller.py deleted file mode 100644 index 986a0a174..000000000 --- a/src/crewai/traces/unified_trace_controller.py +++ /dev/null @@ -1,543 +0,0 @@ -import inspect -import os -from datetime import UTC, datetime -from functools import wraps -from typing import Any, Awaitable, Callable, Dict, List, Optional -from uuid import uuid4 - -from crewai.traces.context import TraceContext -from crewai.traces.enums import CrewType, RunType, TraceType -from crewai.traces.models import ( - CrewTrace, - FlowStepIO, - LLMRequest, - LLMResponse, - ToolCall, -) - - -class UnifiedTraceController: - """Controls and manages trace execution and recording. - - This class handles the lifecycle of traces including creation, execution tracking, - and recording of results for various types of operations (LLM calls, tool calls, flow steps). - """ - - _task_traces: Dict[str, List["UnifiedTraceController"]] = {} - - def __init__( - self, - trace_type: TraceType, - run_type: RunType, - crew_type: CrewType, - run_id: str, - deployment_instance_id: str = os.environ.get( - "CREWAI_DEPLOYMENT_INSTANCE_ID", "" - ), - parent_trace_id: Optional[str] = None, - agent_role: Optional[str] = "unknown", - task_name: Optional[str] = None, - task_description: Optional[str] = None, - task_id: Optional[str] = None, - flow_step: Dict[str, Any] = {}, - tool_calls: List[ToolCall] = [], - **context: Any, - ) -> None: - """Initialize a new trace controller. - - Args: - trace_type: Type of trace being recorded. - run_type: Type of run being executed. - crew_type: Type of crew executing the trace. - run_id: Unique identifier for the run. - deployment_instance_id: Optional deployment instance identifier. - parent_trace_id: Optional parent trace identifier for nested traces. - agent_role: Role of the agent executing the trace. - task_name: Optional name of the task being executed. - task_description: Optional description of the task. - task_id: Optional unique identifier for the task. - flow_step: Optional flow step information. - tool_calls: Optional list of tool calls made during execution. - **context: Additional context parameters. - """ - self.trace_id = str(uuid4()) - self.run_id = run_id - self.parent_trace_id = parent_trace_id - self.trace_type = trace_type - self.run_type = run_type - self.crew_type = crew_type - self.context = context - self.agent_role = agent_role - self.task_name = task_name - self.task_description = task_description - self.task_id = task_id - self.deployment_instance_id = deployment_instance_id - self.children: List[Dict[str, Any]] = [] - self.start_time: Optional[datetime] = None - self.end_time: Optional[datetime] = None - self.error: Optional[str] = None - self.tool_calls = tool_calls - self.flow_step = flow_step - self.status: str = "running" - - # Add trace to task's trace collection if task_id is present - if task_id: - self._add_to_task_traces() - - def _add_to_task_traces(self) -> None: - """Add this trace to the task's trace collection.""" - if not hasattr(UnifiedTraceController, "_task_traces"): - UnifiedTraceController._task_traces = {} - - if self.task_id is None: - return - - if self.task_id not in UnifiedTraceController._task_traces: - UnifiedTraceController._task_traces[self.task_id] = [] - - UnifiedTraceController._task_traces[self.task_id].append(self) - - @classmethod - def get_task_traces(cls, task_id: str) -> List["UnifiedTraceController"]: - """Get all traces for a specific task. - - Args: - task_id: The ID of the task to get traces for - - Returns: - List of traces associated with the task - """ - return cls._task_traces.get(task_id, []) - - @classmethod - def clear_task_traces(cls, task_id: str) -> None: - """Clear traces for a specific task. - - Args: - task_id: The ID of the task to clear traces for - """ - if hasattr(cls, "_task_traces") and task_id in cls._task_traces: - del cls._task_traces[task_id] - - def _get_current_trace(self) -> "UnifiedTraceController": - return TraceContext.get_current() - - def start_trace(self) -> "UnifiedTraceController": - """Start the trace execution. - - Returns: - UnifiedTraceController: Self for method chaining. - """ - self.start_time = datetime.now(UTC) - return self - - def end_trace(self, result: Any = None, error: Optional[str] = None) -> None: - """End the trace execution and record results. - - Args: - result: Optional result from the trace execution. - error: Optional error message if the trace failed. - """ - self.end_time = datetime.now(UTC) - self.status = "error" if error else "completed" - self.error = error - self._record_trace(result) - - def add_child_trace(self, child_trace: Dict[str, Any]) -> None: - """Add a child trace to this trace's execution history. - - Args: - child_trace: The child trace information to add. - """ - self.children.append(child_trace) - - def to_crew_trace(self) -> CrewTrace: - """Convert to CrewTrace format for storage. - - Returns: - CrewTrace: The trace data in CrewTrace format. - """ - latency_ms = None - - if self.tool_calls and hasattr(self.tool_calls[0], "start_time"): - self.start_time = self.tool_calls[0].start_time - - if self.start_time and self.end_time: - latency_ms = int((self.end_time - self.start_time).total_seconds() * 1000) - - request = None - response = None - flow_step_obj = None - - if self.trace_type in [TraceType.LLM_CALL, TraceType.TOOL_CALL]: - request = LLMRequest( - model=self.context.get("model", "unknown"), - messages=self.context.get("messages", []), - temperature=self.context.get("temperature"), - max_tokens=self.context.get("max_tokens"), - stop_sequences=self.context.get("stop_sequences"), - ) - if "response" in self.context: - response = LLMResponse( - content=self.context["response"].get("content", ""), - finish_reason=self.context["response"].get("finish_reason"), - ) - - elif self.trace_type == TraceType.FLOW_STEP: - flow_step_obj = FlowStepIO( - function_name=self.flow_step.get("function_name", "unknown"), - inputs=self.flow_step.get("inputs", {}), - outputs={"result": self.context.get("response")}, - metadata=self.flow_step.get("metadata", {}), - ) - - return CrewTrace( - deployment_instance_id=self.deployment_instance_id, - trace_id=self.trace_id, - task_id=self.task_id, - run_id=self.run_id, - agent_role=self.agent_role, - task_name=self.task_name, - task_description=self.task_description, - trace_type=self.trace_type.value, - crew_type=self.crew_type.value, - run_type=self.run_type.value, - start_time=self.start_time, - end_time=self.end_time, - latency_ms=latency_ms, - request=request, - response=response, - flow_step=flow_step_obj, - tool_calls=self.tool_calls, - tokens_used=self.context.get("tokens_used"), - prompt_tokens=self.context.get("prompt_tokens"), - completion_tokens=self.context.get("completion_tokens"), - status=self.status, - error=self.error, - ) - - def _record_trace(self, result: Any = None) -> None: - """Record the trace. - - This method is called when a trace is completed. It ensures the trace - is properly recorded and associated with its task if applicable. - - Args: - result: Optional result to include in the trace - """ - if result: - self.context["response"] = result - - # Add to task traces if this trace belongs to a task - if self.task_id: - self._add_to_task_traces() - - -def should_trace() -> bool: - """Check if tracing is enabled via environment variable.""" - return os.getenv("CREWAI_ENABLE_TRACING", "false").lower() == "true" - - -# Crew main trace -def init_crew_main_trace(func: Callable[..., Any]) -> Callable[..., Any]: - """Decorator to initialize and track the main crew execution trace. - - This decorator sets up the trace context for the main crew execution, - handling both synchronous and asynchronous crew operations. - - Args: - func: The crew function to be traced. - - Returns: - Wrapped function that creates and manages the main crew trace context. - """ - - @wraps(func) - def wrapper(self: Any, *args: Any, **kwargs: Any) -> Any: - if not should_trace(): - return func(self, *args, **kwargs) - - trace = build_crew_main_trace(self) - with TraceContext.set_current(trace): - try: - return func(self, *args, **kwargs) - except Exception as e: - trace.end_trace(error=str(e)) - raise - - return wrapper - - -def build_crew_main_trace(self: Any) -> "UnifiedTraceController": - """Build the main trace controller for a crew execution. - - This function creates a trace controller configured for the main crew execution, - handling different run types (kickoff, test, train) and maintaining context. - - Args: - self: The crew instance. - - Returns: - UnifiedTraceController: The configured trace controller for the crew. - """ - run_type = RunType.KICKOFF - if hasattr(self, "_test") and self._test: - run_type = RunType.TEST - elif hasattr(self, "_train") and self._train: - run_type = RunType.TRAIN - - current_trace = TraceContext.get_current() - - trace = UnifiedTraceController( - trace_type=TraceType.LLM_CALL, - run_type=run_type, - crew_type=current_trace.crew_type if current_trace else CrewType.CREW, - run_id=current_trace.run_id if current_trace else str(self.id), - parent_trace_id=current_trace.trace_id if current_trace else None, - ) - return trace - - -# Flow main trace -def init_flow_main_trace( - func: Callable[..., Awaitable[Any]], -) -> Callable[..., Awaitable[Any]]: - """Decorator to initialize and track the main flow execution trace. - - Args: - func: The async flow function to be traced. - - Returns: - Wrapped async function that creates and manages the main flow trace context. - """ - - @wraps(func) - async def wrapper(self: Any, *args: Any, **kwargs: Any) -> Any: - if not should_trace(): - return await func(self, *args, **kwargs) - - trace = build_flow_main_trace(self, *args, **kwargs) - with TraceContext.set_current(trace): - try: - return await func(self, *args, **kwargs) - except Exception: - raise - - return wrapper - - -def build_flow_main_trace( - self: Any, *args: Any, **kwargs: Any -) -> "UnifiedTraceController": - """Build the main trace controller for a flow execution. - - Args: - self: The flow instance. - *args: Variable positional arguments. - **kwargs: Variable keyword arguments. - - Returns: - UnifiedTraceController: The configured trace controller for the flow. - """ - current_trace = TraceContext.get_current() - trace = UnifiedTraceController( - trace_type=TraceType.FLOW_STEP, - run_id=current_trace.run_id if current_trace else str(self.flow_id), - parent_trace_id=current_trace.trace_id if current_trace else None, - crew_type=CrewType.FLOW, - run_type=RunType.KICKOFF, - context={ - "crew_name": self.__class__.__name__, - "inputs": kwargs.get("inputs", {}), - "agents": [], - "tasks": [], - }, - ) - return trace - - -# Flow step trace -def trace_flow_step( - func: Callable[..., Awaitable[Any]], -) -> Callable[..., Awaitable[Any]]: - """Decorator to trace individual flow step executions. - - Args: - func: The async flow step function to be traced. - - Returns: - Wrapped async function that creates and manages the flow step trace context. - """ - - @wraps(func) - async def wrapper( - self: Any, - method_name: str, - method: Callable[..., Any], - *args: Any, - **kwargs: Any, - ) -> Any: - if not should_trace(): - return await func(self, method_name, method, *args, **kwargs) - - trace = build_flow_step_trace(self, method_name, method, *args, **kwargs) - with TraceContext.set_current(trace): - trace.start_trace() - try: - result = await func(self, method_name, method, *args, **kwargs) - trace.end_trace(result=result) - return result - except Exception as e: - trace.end_trace(error=str(e)) - raise - - return wrapper - - -def build_flow_step_trace( - self: Any, method_name: str, method: Callable[..., Any], *args: Any, **kwargs: Any -) -> "UnifiedTraceController": - """Build a trace controller for an individual flow step. - - Args: - self: The flow instance. - method_name: Name of the method being executed. - method: The actual method being executed. - *args: Variable positional arguments. - **kwargs: Variable keyword arguments. - - Returns: - UnifiedTraceController: The configured trace controller for the flow step. - """ - current_trace = TraceContext.get_current() - - # Get method signature - sig = inspect.signature(method) - params = list(sig.parameters.values()) - - # Create inputs dictionary mapping parameter names to values - method_params = [p for p in params if p.name != "self"] - inputs: Dict[str, Any] = {} - - # Map positional args to their parameter names - for i, param in enumerate(method_params): - if i < len(args): - inputs[param.name] = args[i] - - # Add keyword arguments - inputs.update(kwargs) - - trace = UnifiedTraceController( - trace_type=TraceType.FLOW_STEP, - run_type=current_trace.run_type if current_trace else RunType.KICKOFF, - crew_type=current_trace.crew_type if current_trace else CrewType.FLOW, - run_id=current_trace.run_id if current_trace else str(self.flow_id), - parent_trace_id=current_trace.trace_id if current_trace else None, - flow_step={ - "function_name": method_name, - "inputs": inputs, - "metadata": { - "crew_name": self.__class__.__name__, - }, - }, - ) - return trace - - -# LLM trace -def trace_llm_call(func: Callable[..., Any]) -> Callable[..., Any]: - """Decorator to trace LLM calls. - - Args: - func: The function to trace. - - Returns: - Wrapped function that creates and manages the LLM call trace context. - """ - - @wraps(func) - def wrapper(self: Any, *args: Any, **kwargs: Any) -> Any: - if not should_trace(): - return func(self, *args, **kwargs) - - trace = build_llm_trace(self, *args, **kwargs) - with TraceContext.set_current(trace): - trace.start_trace() - try: - response = func(self, *args, **kwargs) - # Extract relevant data from response - trace_response = { - "content": response["choices"][0]["message"]["content"], - "finish_reason": response["choices"][0].get("finish_reason"), - } - - # Add usage metrics to context - if "usage" in response: - trace.context["tokens_used"] = response["usage"].get( - "total_tokens", 0 - ) - trace.context["prompt_tokens"] = response["usage"].get( - "prompt_tokens", 0 - ) - trace.context["completion_tokens"] = response["usage"].get( - "completion_tokens", 0 - ) - - trace.end_trace(trace_response) - return response - except Exception as e: - trace.end_trace(error=str(e)) - raise - - return wrapper - - -def build_llm_trace( - self: Any, params: Dict[str, Any], *args: Any, **kwargs: Any -) -> Any: - """Build a trace controller for an LLM call. - - Args: - self: The LLM instance. - params: The parameters for the LLM call. - *args: Variable positional arguments. - **kwargs: Variable keyword arguments. - - Returns: - UnifiedTraceController: The configured trace controller for the LLM call. - """ - current_trace = TraceContext.get_current() - agent, task = self._get_execution_context() - - # Get new messages and tool results - new_messages = self._get_new_messages(params.get("messages", [])) - new_tool_results = self._get_new_tool_results(agent) - - # Create trace context - trace = UnifiedTraceController( - trace_type=TraceType.TOOL_CALL if new_tool_results else TraceType.LLM_CALL, - crew_type=current_trace.crew_type if current_trace else CrewType.CREW, - run_type=current_trace.run_type if current_trace else RunType.KICKOFF, - run_id=current_trace.run_id if current_trace else str(uuid4()), - parent_trace_id=current_trace.trace_id if current_trace else None, - agent_role=agent.role if agent else "unknown", - task_id=str(task.id) if task else None, - task_name=task.name if task else None, - task_description=task.description if task else None, - model=self.model, - messages=new_messages, - temperature=self.temperature, - max_tokens=self.max_tokens, - stop_sequences=self.stop, - tool_calls=[ - ToolCall( - name=result["tool_name"], - arguments=result["tool_args"], - output=str(result["result"]), - start_time=result.get("start_time", ""), - end_time=datetime.now(UTC), - ) - for result in new_tool_results - ], - ) - return trace diff --git a/src/crewai/translations/en.json b/src/crewai/translations/en.json index 4c28fc5d5..8a9dc6800 100644 --- a/src/crewai/translations/en.json +++ b/src/crewai/translations/en.json @@ -39,8 +39,8 @@ "validation_error": "### Previous attempt failed validation: {guardrail_result_error}\n\n\n### Previous result:\n{task_output}\n\n\nTry again, making sure to address the validation error." }, "tools": { - "delegate_work": "Delegate a specific task to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the task you want them to do, and ALL necessary context to execute the task, they know nothing about the task, so share absolute everything you know, don't reference things but instead explain them.", - "ask_question": "Ask a specific question to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the question you have for them, and ALL necessary context to ask the question properly, they know nothing about the question, so share absolute everything you know, don't reference things but instead explain them.", + "delegate_work": "Delegate a specific task to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the task you want them to do, and ALL necessary context to execute the task, they know nothing about the task, so share absolutely everything you know, don't reference things but instead explain them.", + "ask_question": "Ask a specific question to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the question you have for them, and ALL necessary context to ask the question properly, they know nothing about the question, so share absolutely everything you know, don't reference things but instead explain them.", "add_image": { "name": "Add image to content", "description": "See image to understand its content, you can optionally ask a question about the image", diff --git a/src/crewai/utilities/events/__init__.py b/src/crewai/utilities/events/__init__.py index 7f3442360..aa4a24ac5 100644 --- a/src/crewai/utilities/events/__init__.py +++ b/src/crewai/utilities/events/__init__.py @@ -34,6 +34,7 @@ from .tool_usage_events import ( ToolUsageEvent, ToolValidateInputErrorEvent, ) +from .llm_events import LLMCallCompletedEvent, LLMCallFailedEvent, LLMCallStartedEvent # events from .event_listener import EventListener diff --git a/src/crewai/utilities/events/event_listener.py b/src/crewai/utilities/events/event_listener.py index 0dcefcd3d..d853a5f7c 100644 --- a/src/crewai/utilities/events/event_listener.py +++ b/src/crewai/utilities/events/event_listener.py @@ -1,9 +1,17 @@ -from pydantic import PrivateAttr +from typing import Any, Dict +from pydantic import Field, PrivateAttr + +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.events.base_event_listener import BaseEventListener +from crewai.utilities.events.llm_events import ( + LLMCallCompletedEvent, + LLMCallFailedEvent, + LLMCallStartedEvent, +) from .agent_events import AgentExecutionCompletedEvent, AgentExecutionStartedEvent from .crew_events import ( @@ -37,6 +45,7 @@ class EventListener(BaseEventListener): _instance = None _telemetry: Telemetry = PrivateAttr(default_factory=lambda: Telemetry()) logger = Logger(verbose=True, default_color=EMITTER_COLOR) + execution_spans: Dict[Task, Any] = Field(default_factory=dict) def __new__(cls): if cls._instance is None: @@ -49,6 +58,7 @@ class EventListener(BaseEventListener): super().__init__() self._telemetry = Telemetry() self._telemetry.set_tracer() + self.execution_spans = {} self._initialized = True # ----------- CREW EVENTS ----------- @@ -57,7 +67,7 @@ class EventListener(BaseEventListener): @crewai_event_bus.on(CrewKickoffStartedEvent) def on_crew_started(source, event: CrewKickoffStartedEvent): self.logger.log( - f"🚀 Crew '{event.crew_name}' started", + f"🚀 Crew '{event.crew_name}' started, {source.id}", event.timestamp, ) self._telemetry.crew_execution_span(source, event.inputs) @@ -67,28 +77,28 @@ class EventListener(BaseEventListener): final_string_output = event.output.raw self._telemetry.end_crew(source, final_string_output) self.logger.log( - f"✅ Crew '{event.crew_name}' completed", + f"✅ Crew '{event.crew_name}' completed, {source.id}", event.timestamp, ) @crewai_event_bus.on(CrewKickoffFailedEvent) def on_crew_failed(source, event: CrewKickoffFailedEvent): self.logger.log( - f"❌ Crew '{event.crew_name}' failed", + f"❌ Crew '{event.crew_name}' failed, {source.id}", event.timestamp, ) @crewai_event_bus.on(CrewTestStartedEvent) def on_crew_test_started(source, event: CrewTestStartedEvent): cloned_crew = source.copy() - cloned_crew._telemetry.test_execution_span( + self._telemetry.test_execution_span( cloned_crew, event.n_iterations, event.inputs, - event.eval_llm, + event.eval_llm or "", ) self.logger.log( - f"🚀 Crew '{event.crew_name}' started test", + f"🚀 Crew '{event.crew_name}' started test, {source.id}", event.timestamp, ) @@ -131,9 +141,9 @@ class EventListener(BaseEventListener): @crewai_event_bus.on(TaskStartedEvent) def on_task_started(source, event: TaskStartedEvent): - source._execution_span = self._telemetry.task_started( - crew=source.agent.crew, task=source - ) + span = self._telemetry.task_started(crew=source.agent.crew, task=source) + self.execution_spans[source] = span + self.logger.log( f"📋 Task started: {source.description}", event.timestamp, @@ -141,24 +151,22 @@ class EventListener(BaseEventListener): @crewai_event_bus.on(TaskCompletedEvent) def on_task_completed(source, event: TaskCompletedEvent): - if source._execution_span: - self._telemetry.task_ended( - source._execution_span, source, source.agent.crew - ) + span = self.execution_spans.get(source) + if span: + self._telemetry.task_ended(span, source, source.agent.crew) self.logger.log( f"✅ Task completed: {source.description}", event.timestamp, ) - source._execution_span = None + self.execution_spans[source] = None @crewai_event_bus.on(TaskFailedEvent) def on_task_failed(source, event: TaskFailedEvent): - if source._execution_span: + span = self.execution_spans.get(source) + if span: if source.agent and source.agent.crew: - self._telemetry.task_ended( - source._execution_span, source, source.agent.crew - ) - source._execution_span = None + self._telemetry.task_ended(span, source, source.agent.crew) + self.execution_spans[source] = None self.logger.log( f"❌ Task failed: {source.description}", event.timestamp, @@ -184,7 +192,7 @@ class EventListener(BaseEventListener): @crewai_event_bus.on(FlowCreatedEvent) def on_flow_created(source, event: FlowCreatedEvent): - self._telemetry.flow_creation_span(self.__class__.__name__) + self._telemetry.flow_creation_span(event.flow_name) self.logger.log( f"🌊 Flow Created: '{event.flow_name}'", event.timestamp, @@ -193,17 +201,17 @@ class EventListener(BaseEventListener): @crewai_event_bus.on(FlowStartedEvent) def on_flow_started(source, event: FlowStartedEvent): self._telemetry.flow_execution_span( - source.__class__.__name__, list(source._methods.keys()) + event.flow_name, list(source._methods.keys()) ) self.logger.log( - f"🤖 Flow Started: '{event.flow_name}'", + f"🤖 Flow Started: '{event.flow_name}', {source.flow_id}", event.timestamp, ) @crewai_event_bus.on(FlowFinishedEvent) def on_flow_finished(source, event: FlowFinishedEvent): self.logger.log( - f"👍 Flow Finished: '{event.flow_name}'", + f"👍 Flow Finished: '{event.flow_name}', {source.flow_id}", event.timestamp, ) @@ -253,5 +261,28 @@ class EventListener(BaseEventListener): # ) + # ----------- LLM EVENTS ----------- + + @crewai_event_bus.on(LLMCallStartedEvent) + def on_llm_call_started(source, event: LLMCallStartedEvent): + self.logger.log( + f"🤖 LLM Call Started", + event.timestamp, + ) + + @crewai_event_bus.on(LLMCallCompletedEvent) + def on_llm_call_completed(source, event: LLMCallCompletedEvent): + self.logger.log( + f"✅ LLM Call Completed", + event.timestamp, + ) + + @crewai_event_bus.on(LLMCallFailedEvent) + def on_llm_call_failed(source, event: LLMCallFailedEvent): + self.logger.log( + f"❌ LLM Call Failed: '{event.error}'", + event.timestamp, + ) + event_listener = EventListener() diff --git a/src/crewai/utilities/events/llm_events.py b/src/crewai/utilities/events/llm_events.py new file mode 100644 index 000000000..8c2554a21 --- /dev/null +++ b/src/crewai/utilities/events/llm_events.py @@ -0,0 +1,36 @@ +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from crewai.utilities.events.base_events import CrewEvent + + +class LLMCallType(Enum): + """Type of LLM call being made""" + + TOOL_CALL = "tool_call" + LLM_CALL = "llm_call" + + +class LLMCallStartedEvent(CrewEvent): + """Event emitted when a LLM call starts""" + + type: str = "llm_call_started" + messages: Union[str, List[Dict[str, str]]] + tools: Optional[List[dict]] = None + callbacks: Optional[List[Any]] = None + available_functions: Optional[Dict[str, Any]] = None + + +class LLMCallCompletedEvent(CrewEvent): + """Event emitted when a LLM call completes""" + + type: str = "llm_call_completed" + response: Any + call_type: LLMCallType + + +class LLMCallFailedEvent(CrewEvent): + """Event emitted when a LLM call fails""" + + error: str + type: str = "llm_call_failed" diff --git a/src/crewai/utilities/events/task_events.py b/src/crewai/utilities/events/task_events.py index f69e77d6a..d81b7ce2d 100644 --- a/src/crewai/utilities/events/task_events.py +++ b/src/crewai/utilities/events/task_events.py @@ -1,4 +1,4 @@ -from typing import Any, Optional +from typing import Optional from crewai.tasks.task_output import TaskOutput from crewai.utilities.events.base_events import CrewEvent diff --git a/src/crewai/utilities/llm_utils.py b/src/crewai/utilities/llm_utils.py index c774a71fb..4d34d789c 100644 --- a/src/crewai/utilities/llm_utils.py +++ b/src/crewai/utilities/llm_utils.py @@ -44,6 +44,7 @@ def create_llm( # Extract attributes with explicit types model = ( getattr(llm_value, "model_name", None) + or getattr(llm_value, "model", None) or getattr(llm_value, "deployment_name", None) or str(llm_value) ) diff --git a/src/crewai/utilities/protocols.py b/src/crewai/utilities/protocols.py deleted file mode 100644 index 83ebf58e9..000000000 --- a/src/crewai/utilities/protocols.py +++ /dev/null @@ -1,12 +0,0 @@ -from typing import Any, Protocol, runtime_checkable - - -@runtime_checkable -class AgentExecutorProtocol(Protocol): - """Protocol defining the expected interface for an agent executor.""" - - @property - def agent(self) -> Any: ... - - @property - def task(self) -> Any: ... diff --git a/tests/agent_test.py b/tests/agent_test.py index 1d07da23e..5e1083c4b 100644 --- a/tests/agent_test.py +++ b/tests/agent_test.py @@ -915,8 +915,6 @@ def test_tool_result_as_answer_is_the_final_answer_for_the_agent(): @pytest.mark.vcr(filter_headers=["authorization"]) def test_tool_usage_information_is_appended_to_agent(): - from datetime import UTC, datetime - from crewai.tools import BaseTool class MyCustomTool(BaseTool): @@ -926,36 +924,30 @@ def test_tool_usage_information_is_appended_to_agent(): def _run(self) -> str: return "Howdy!" - fixed_datetime = datetime(2025, 2, 10, 12, 0, 0, tzinfo=UTC) - with patch("datetime.datetime") as mock_datetime: - mock_datetime.now.return_value = fixed_datetime - mock_datetime.side_effect = lambda *args, **kw: datetime(*args, **kw) + agent1 = Agent( + role="Friendly Neighbor", + goal="Make everyone feel welcome", + backstory="You are the friendly neighbor", + tools=[MyCustomTool(result_as_answer=True)], + ) - agent1 = Agent( - role="Friendly Neighbor", - goal="Make everyone feel welcome", - backstory="You are the friendly neighbor", - tools=[MyCustomTool(result_as_answer=True)], - ) + greeting = Task( + description="Say an appropriate greeting.", + expected_output="The greeting.", + agent=agent1, + ) + tasks = [greeting] + crew = Crew(agents=[agent1], tasks=tasks) - greeting = Task( - description="Say an appropriate greeting.", - expected_output="The greeting.", - agent=agent1, - ) - tasks = [greeting] - crew = Crew(agents=[agent1], tasks=tasks) - - crew.kickoff() - assert agent1.tools_results == [ - { - "result": "Howdy!", - "tool_name": "Decide Greetings", - "tool_args": {}, - "result_as_answer": True, - "start_time": fixed_datetime, - } - ] + crew.kickoff() + assert agent1.tools_results == [ + { + "result": "Howdy!", + "tool_name": "Decide Greetings", + "tool_args": {}, + "result_as_answer": True, + } + ] def test_agent_definition_based_on_dict(): diff --git a/tests/crew_test.py b/tests/crew_test.py index 6cd0370ae..8f9f69deb 100644 --- a/tests/crew_test.py +++ b/tests/crew_test.py @@ -833,6 +833,12 @@ def test_crew_verbose_output(capsys): crew.kickoff() captured = capsys.readouterr() + + # Filter out event listener logs (lines starting with '[') + filtered_output = "\n".join( + line for line in captured.out.split("\n") if not line.startswith("[") + ) + expected_strings = [ "\x1b[1m\x1b[95m# Agent:\x1b[00m \x1b[1m\x1b[92mResearcher", "\x1b[00m\n\x1b[95m## Task:\x1b[00m \x1b[92mResearch AI advancements.", @@ -845,27 +851,19 @@ def test_crew_verbose_output(capsys): ] for expected_string in expected_strings: - assert expected_string in captured.out + assert expected_string in filtered_output # Now test with verbose set to False crew.verbose = False crew._logger = Logger(verbose=False) crew.kickoff() - expected_listener_logs = [ - "[🚀 CREW 'CREW' STARTED]", - "[📋 TASK STARTED: RESEARCH AI ADVANCEMENTS.]", - "[🤖 AGENT 'RESEARCHER' STARTED TASK]", - "[✅ AGENT 'RESEARCHER' COMPLETED TASK]", - "[✅ TASK COMPLETED: RESEARCH AI ADVANCEMENTS.]", - "[📋 TASK STARTED: WRITE ABOUT AI IN HEALTHCARE.]", - "[🤖 AGENT 'SENIOR WRITER' STARTED TASK]", - "[✅ AGENT 'SENIOR WRITER' COMPLETED TASK]", - "[✅ TASK COMPLETED: WRITE ABOUT AI IN HEALTHCARE.]", - "[✅ CREW 'CREW' COMPLETED]", - ] captured = capsys.readouterr() - for log in expected_listener_logs: - assert log in captured.out + filtered_output = "\n".join( + line + for line in captured.out.split("\n") + if not line.startswith("[") and line.strip() and not line.startswith("\x1b") + ) + assert filtered_output == "" @pytest.mark.vcr(filter_headers=["authorization"]) diff --git a/tests/traces/test_unified_trace_controller.py b/tests/traces/test_unified_trace_controller.py deleted file mode 100644 index b14fb5d2d..000000000 --- a/tests/traces/test_unified_trace_controller.py +++ /dev/null @@ -1,360 +0,0 @@ -import os -from datetime import UTC, datetime -from unittest.mock import MagicMock, patch -from uuid import UUID - -import pytest - -from crewai.traces.context import TraceContext -from crewai.traces.enums import CrewType, RunType, TraceType -from crewai.traces.models import ( - CrewTrace, - FlowStepIO, - LLMRequest, - LLMResponse, -) -from crewai.traces.unified_trace_controller import ( - UnifiedTraceController, - init_crew_main_trace, - init_flow_main_trace, - should_trace, - trace_flow_step, - trace_llm_call, -) - - -class TestUnifiedTraceController: - @pytest.fixture - def basic_trace_controller(self): - return UnifiedTraceController( - trace_type=TraceType.LLM_CALL, - run_type=RunType.KICKOFF, - crew_type=CrewType.CREW, - run_id="test-run-id", - agent_role="test-agent", - task_name="test-task", - task_description="test description", - task_id="test-task-id", - ) - - def test_initialization(self, basic_trace_controller): - """Test basic initialization of UnifiedTraceController""" - assert basic_trace_controller.trace_type == TraceType.LLM_CALL - assert basic_trace_controller.run_type == RunType.KICKOFF - assert basic_trace_controller.crew_type == CrewType.CREW - assert basic_trace_controller.run_id == "test-run-id" - assert basic_trace_controller.agent_role == "test-agent" - assert basic_trace_controller.task_name == "test-task" - assert basic_trace_controller.task_description == "test description" - assert basic_trace_controller.task_id == "test-task-id" - assert basic_trace_controller.status == "running" - assert isinstance(UUID(basic_trace_controller.trace_id), UUID) - - def test_start_trace(self, basic_trace_controller): - """Test starting a trace""" - result = basic_trace_controller.start_trace() - assert result == basic_trace_controller - assert basic_trace_controller.start_time is not None - assert isinstance(basic_trace_controller.start_time, datetime) - - def test_end_trace_success(self, basic_trace_controller): - """Test ending a trace successfully""" - basic_trace_controller.start_trace() - basic_trace_controller.end_trace(result={"test": "result"}) - - assert basic_trace_controller.end_time is not None - assert basic_trace_controller.status == "completed" - assert basic_trace_controller.error is None - assert basic_trace_controller.context.get("response") == {"test": "result"} - - def test_end_trace_with_error(self, basic_trace_controller): - """Test ending a trace with an error""" - basic_trace_controller.start_trace() - basic_trace_controller.end_trace(error="Test error occurred") - - assert basic_trace_controller.end_time is not None - assert basic_trace_controller.status == "error" - assert basic_trace_controller.error == "Test error occurred" - - def test_add_child_trace(self, basic_trace_controller): - """Test adding a child trace""" - child_trace = {"id": "child-1", "type": "test"} - basic_trace_controller.add_child_trace(child_trace) - assert len(basic_trace_controller.children) == 1 - assert basic_trace_controller.children[0] == child_trace - - def test_to_crew_trace_llm_call(self): - """Test converting to CrewTrace for LLM call""" - test_messages = [{"role": "user", "content": "test"}] - test_response = { - "content": "test response", - "finish_reason": "stop", - } - - controller = UnifiedTraceController( - trace_type=TraceType.LLM_CALL, - run_type=RunType.KICKOFF, - crew_type=CrewType.CREW, - run_id="test-run-id", - context={ - "messages": test_messages, - "temperature": 0.7, - "max_tokens": 100, - }, - ) - - # Set model and messages in the context - controller.context["model"] = "gpt-4" - controller.context["messages"] = test_messages - - controller.start_trace() - controller.end_trace(result=test_response) - - crew_trace = controller.to_crew_trace() - assert isinstance(crew_trace, CrewTrace) - assert isinstance(crew_trace.request, LLMRequest) - assert isinstance(crew_trace.response, LLMResponse) - assert crew_trace.request.model == "gpt-4" - assert crew_trace.request.messages == test_messages - assert crew_trace.response.content == test_response["content"] - assert crew_trace.response.finish_reason == test_response["finish_reason"] - - def test_to_crew_trace_flow_step(self): - """Test converting to CrewTrace for flow step""" - flow_step_data = { - "function_name": "test_function", - "inputs": {"param1": "value1"}, - "metadata": {"meta": "data"}, - } - - controller = UnifiedTraceController( - trace_type=TraceType.FLOW_STEP, - run_type=RunType.KICKOFF, - crew_type=CrewType.FLOW, - run_id="test-run-id", - flow_step=flow_step_data, - ) - - controller.start_trace() - controller.end_trace(result="test result") - - crew_trace = controller.to_crew_trace() - assert isinstance(crew_trace, CrewTrace) - assert isinstance(crew_trace.flow_step, FlowStepIO) - assert crew_trace.flow_step.function_name == "test_function" - assert crew_trace.flow_step.inputs == {"param1": "value1"} - assert crew_trace.flow_step.outputs == {"result": "test result"} - - def test_should_trace(self): - """Test should_trace function""" - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - assert should_trace() is True - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "false"}): - assert should_trace() is False - - with patch.dict(os.environ, clear=True): - assert should_trace() is False - - @pytest.mark.asyncio - async def test_trace_flow_step_decorator(self): - """Test trace_flow_step decorator""" - - class TestFlow: - flow_id = "test-flow-id" - - @trace_flow_step - async def test_method(self, method_name, method, *args, **kwargs): - return "test result" - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - flow = TestFlow() - result = await flow.test_method("test_method", lambda x: x, arg1="value1") - assert result == "test result" - - def test_trace_llm_call_decorator(self): - """Test trace_llm_call decorator""" - - class TestLLM: - model = "gpt-4" - temperature = 0.7 - max_tokens = 100 - stop = None - - def _get_execution_context(self): - return MagicMock(), MagicMock() - - def _get_new_messages(self, messages): - return messages - - def _get_new_tool_results(self, agent): - return [] - - @trace_llm_call - def test_method(self, params): - return { - "choices": [ - { - "message": {"content": "test response"}, - "finish_reason": "stop", - } - ], - "usage": { - "total_tokens": 50, - "prompt_tokens": 20, - "completion_tokens": 30, - }, - } - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - llm = TestLLM() - result = llm.test_method({"messages": []}) - assert result["choices"][0]["message"]["content"] == "test response" - - def test_init_crew_main_trace_kickoff(self): - """Test init_crew_main_trace in kickoff mode""" - trace_context = None - - class TestCrew: - id = "test-crew-id" - _test = False - _train = False - - @init_crew_main_trace - def test_method(self): - nonlocal trace_context - trace_context = TraceContext.get_current() - return "test result" - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - crew = TestCrew() - result = test_method(crew) - assert result == "test result" - assert trace_context is not None - assert trace_context.trace_type == TraceType.LLM_CALL - assert trace_context.run_type == RunType.KICKOFF - assert trace_context.crew_type == CrewType.CREW - assert trace_context.run_id == str(crew.id) - - def test_init_crew_main_trace_test_mode(self): - """Test init_crew_main_trace in test mode""" - trace_context = None - - class TestCrew: - id = "test-crew-id" - _test = True - _train = False - - @init_crew_main_trace - def test_method(self): - nonlocal trace_context - trace_context = TraceContext.get_current() - return "test result" - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - crew = TestCrew() - result = test_method(crew) - assert result == "test result" - assert trace_context is not None - assert trace_context.run_type == RunType.TEST - - def test_init_crew_main_trace_train_mode(self): - """Test init_crew_main_trace in train mode""" - trace_context = None - - class TestCrew: - id = "test-crew-id" - _test = False - _train = True - - @init_crew_main_trace - def test_method(self): - nonlocal trace_context - trace_context = TraceContext.get_current() - return "test result" - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - crew = TestCrew() - result = test_method(crew) - assert result == "test result" - assert trace_context is not None - assert trace_context.run_type == RunType.TRAIN - - @pytest.mark.asyncio - async def test_init_flow_main_trace(self): - """Test init_flow_main_trace decorator""" - trace_context = None - test_inputs = {"test": "input"} - - class TestFlow: - flow_id = "test-flow-id" - - @init_flow_main_trace - async def test_method(self, **kwargs): - nonlocal trace_context - trace_context = TraceContext.get_current() - # Verify the context is set during execution - assert trace_context.context["context"]["inputs"] == test_inputs - return "test result" - - with patch.dict(os.environ, {"CREWAI_ENABLE_TRACING": "true"}): - flow = TestFlow() - result = await flow.test_method(inputs=test_inputs) - assert result == "test result" - assert trace_context is not None - assert trace_context.trace_type == TraceType.FLOW_STEP - assert trace_context.crew_type == CrewType.FLOW - assert trace_context.run_type == RunType.KICKOFF - assert trace_context.run_id == str(flow.flow_id) - assert trace_context.context["context"]["inputs"] == test_inputs - - def test_trace_context_management(self): - """Test TraceContext management""" - trace1 = UnifiedTraceController( - trace_type=TraceType.LLM_CALL, - run_type=RunType.KICKOFF, - crew_type=CrewType.CREW, - run_id="test-run-1", - ) - - trace2 = UnifiedTraceController( - trace_type=TraceType.FLOW_STEP, - run_type=RunType.TEST, - crew_type=CrewType.FLOW, - run_id="test-run-2", - ) - - # Test that context is initially empty - assert TraceContext.get_current() is None - - # Test setting and getting context - with TraceContext.set_current(trace1): - assert TraceContext.get_current() == trace1 - - # Test nested context - with TraceContext.set_current(trace2): - assert TraceContext.get_current() == trace2 - - # Test context restoration after nested block - assert TraceContext.get_current() == trace1 - - # Test context cleanup after with block - assert TraceContext.get_current() is None - - def test_trace_context_error_handling(self): - """Test TraceContext error handling""" - trace = UnifiedTraceController( - trace_type=TraceType.LLM_CALL, - run_type=RunType.KICKOFF, - crew_type=CrewType.CREW, - run_id="test-run", - ) - - # Test that context is properly cleaned up even if an error occurs - try: - with TraceContext.set_current(trace): - raise ValueError("Test error") - except ValueError: - pass - - assert TraceContext.get_current() is None diff --git a/tests/utilities/cassettes/test_crew_emits_end_task_event.yaml b/tests/utilities/cassettes/test_crew_emits_end_task_event.yaml index 09cb318d2..2ebd93ac7 100644 --- a/tests/utilities/cassettes/test_crew_emits_end_task_event.yaml +++ b/tests/utilities/cassettes/test_crew_emits_end_task_event.yaml @@ -1,201 +1,602 @@ interactions: - request: - body: '{"messages": [{"role": "system", "content": "You are base_agent. You are - a helpful assistant that just says hi\nYour personal goal is: Just say hi\nTo - give my best complete final answer to the task respond using the exact following - format:\n\nThought: I now can give a great answer\nFinal Answer: Your final - answer must be the great and the most complete as possible, it must be outcome - described.\n\nI MUST use these formats, my job depends on it!"}, {"role": "user", - "content": "\nCurrent Task: Just say hi\n\nThis is the expect criteria for your - final answer: hi\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nBegin! This is VERY important to you, use the tools available - and give your best Final Answer, your job depends on it!\n\nThought:"}], "model": - "gpt-4o-mini", "stop": ["\nObservation:"]}' + body: null headers: - accept: - - application/json - accept-encoding: + Accept: + - '*/*' + Accept-Encoding: - gzip, deflate - connection: - - keep-alive - content-length: - - '836' - content-type: - - application/json - cookie: - - __cf_bm=nedOdWE1YnKQYt1kSbrcA.zhwa3bZDzmZqTOjZYER0c-1738700521-1.0.1.1-xQk9iXOvqvyXNhkIOgc8Ws2WYcT1mJFkDCvCC8xA5joFD8QfNrBIAr_Qs6sIxt2EzXyeFwBA6gA8ZgWApCHx0Q; - _cfuvid=Cl48aI8.jSRja0Pqr6Jrh3mAnigd4rDn6lhGicyjMPY-1738698987673-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.61.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.61.0 - x-stainless-raw-response: - - 'true' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.8 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AxJlK2np8dMxYgsDIuyz2TSKKELWh\",\n \"object\": - \"chat.completion\",\n \"created\": 1738700682,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"I now can give a great answer \\nFinal - Answer: hi\",\n \"refusal\": null\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 161,\n \"completion_tokens\": 12,\n \"total_tokens\": 173,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_72ed7ab54c\"\n}\n" - headers: - CF-RAY: - - 90cd62c1fdb0fa6a-SJC Connection: - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json + User-Agent: + - python-requests/2.32.3 + method: GET + uri: https://pypi.org/pypi/agentops/json + response: + body: + string: "{\"info\":{\"author\":null,\"author_email\":\"Alex Reibman , + Shawn Qiu , Braelyn Boynton , Howard + Gil , Constantin Teodorescu , Pratyush + Shukla \",\"bugtrack_url\":null,\"classifiers\":[\"License + :: OSI Approved :: MIT License\",\"Operating System :: OS Independent\",\"Programming + Language :: Python :: 3\",\"Programming Language :: Python :: 3.10\",\"Programming + Language :: Python :: 3.11\",\"Programming Language :: Python :: 3.12\",\"Programming + Language :: Python :: 3.13\",\"Programming Language :: Python :: 3.9\"],\"description\":\"\\n\\n
\\n Observability and + DevTool platform for AI Agents\\n
\\n\\n
\\n\\n
\\n + \ \\n \\\"Downloads\\\"\\n \\n \\n + \ \\\"git\\n \\n \\\"PyPI\\n \\n + \ \\\"License:\\n \\n
\\n\\n

\\n + \ \\n \\\"Twitter\\\"\\n \\n \\n + \ \\\"Discord\\\"\\n \\n \\n + \ \\\"Dashboard\\\"\\n \\n \\n + \ \\\"Documentation\\\"\\n \\n \\n + \ \\\"Chat\\n \\n

\\n\\n\\n\\n
\\n \\\"Dashboard\\n
\\n\\n
\\n\\n\\nAgentOps helps developers + build, evaluate, and monitor AI agents. From prototype to production.\\n\\n| + \ | |\\n| + ------------------------------------- | ------------------------------------------------------------- + |\\n| \U0001F4CA **Replay Analytics and Debugging** | Step-by-step agent execution + graphs |\\n| \U0001F4B8 **LLM Cost Management** + \ | Track spend with LLM foundation model providers |\\n| + \U0001F9EA **Agent Benchmarking** | Test your agents against 1,000+ + evals |\\n| \U0001F510 **Compliance and Security** + \ | Detect common prompt injection and data exfiltration exploits |\\n| + \U0001F91D **Framework Integrations** | Native Integrations with CrewAI, + AG2(AutoGen), Camel AI, & LangChain |\\n\\n## Quick Start \u2328\uFE0F\\n\\n```bash\\npip + install agentops\\n```\\n\\n\\n#### Session replays in 2 lines of code\\n\\nInitialize + the AgentOps client and automatically get analytics on all your LLM calls.\\n\\n[Get + an API key](https://app.agentops.ai/settings/projects)\\n\\n```python\\nimport + agentops\\n\\n# Beginning of your program (i.e. main.py, __init__.py)\\nagentops.init( + < INSERT YOUR API KEY HERE >)\\n\\n...\\n\\n# End of program\\nagentops.end_session('Success')\\n```\\n\\nAll + your sessions can be viewed on the [AgentOps dashboard](https://app.agentops.ai?ref=gh)\\n
\\n\\n
\\n + \ Agent Debugging\\n \\n + \ \\\"Agent\\n \\n \\n + \ \\\"Chat\\n \\n \\n + \ \\\"Event\\n \\n
\\n\\n
\\n + \ Session Replays\\n \\n + \ \\\"Session\\n \\n
\\n\\n
\\n Summary Analytics\\n \\n + \ \\\"Summary\\n \\n \\n + \ \\\"Summary\\n \\n
\\n\\n\\n### + First class Developer Experience\\nAdd powerful observability to your agents, + tools, and functions with as little code as possible: one line at a time.\\n
\\nRefer + to our [documentation](http://docs.agentops.ai)\\n\\n```python\\n# Automatically + associate all Events with the agent that originated them\\nfrom agentops import + track_agent\\n\\n@track_agent(name='SomeCustomName')\\nclass MyAgent:\\n ...\\n```\\n\\n```python\\n# + Automatically create ToolEvents for tools that agents will use\\nfrom agentops + import record_tool\\n\\n@record_tool('SampleToolName')\\ndef sample_tool(...):\\n + \ ...\\n```\\n\\n```python\\n# Automatically create ActionEvents for other + functions.\\nfrom agentops import record_action\\n\\n@agentops.record_action('sample + function being record')\\ndef sample_function(...):\\n ...\\n```\\n\\n```python\\n# + Manually record any other Events\\nfrom agentops import record, ActionEvent\\n\\nrecord(ActionEvent(\\\"received_user_input\\\"))\\n```\\n\\n## + Integrations \U0001F9BE\\n\\n### CrewAI \U0001F6F6\\n\\nBuild Crew agents + with observability with only 2 lines of code. Simply set an `AGENTOPS_API_KEY` + in your environment, and your crews will get automatic monitoring on the AgentOps + dashboard.\\n\\n```bash\\npip install 'crewai[agentops]'\\n```\\n\\n- [AgentOps + integration example](https://docs.agentops.ai/v1/integrations/crewai)\\n- + [Official CrewAI documentation](https://docs.crewai.com/how-to/AgentOps-Observability)\\n\\n### + AG2 \U0001F916\\nWith only two lines of code, add full observability and monitoring + to AG2 (formerly AutoGen) agents. Set an `AGENTOPS_API_KEY` in your environment + and call `agentops.init()`\\n\\n- [AG2 Observability Example](https://docs.ag2.ai/notebooks/agentchat_agentops)\\n- + [AG2 - AgentOps Documentation](https://docs.ag2.ai/docs/ecosystem/agentops)\\n\\n### + Camel AI \U0001F42A\\n\\nTrack and analyze CAMEL agents with full observability. + Set an `AGENTOPS_API_KEY` in your environment and initialize AgentOps to get + started.\\n\\n- [Camel AI](https://www.camel-ai.org/) - Advanced agent communication + framework\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/camel)\\n- + [Official Camel AI documentation](https://docs.camel-ai.org/cookbooks/agents_tracking.html)\\n\\n
\\n + \ Installation\\n\\n```bash\\npip install \\\"camel-ai[all]==0.2.11\\\"\\npip + install agentops\\n```\\n\\n```python\\nimport os\\nimport agentops\\nfrom + camel.agents import ChatAgent\\nfrom camel.messages import BaseMessage\\nfrom + camel.models import ModelFactory\\nfrom camel.types import ModelPlatformType, + ModelType\\n\\n# Initialize AgentOps\\nagentops.init(os.getenv(\\\"AGENTOPS_API_KEY\\\"), + default_tags=[\\\"CAMEL Example\\\"])\\n\\n# Import toolkits after AgentOps + init for tracking\\nfrom camel.toolkits import SearchToolkit\\n\\n# Set up + the agent with search tools\\nsys_msg = BaseMessage.make_assistant_message(\\n + \ role_name='Tools calling operator',\\n content='You are a helpful assistant'\\n)\\n\\n# + Configure tools and model\\ntools = [*SearchToolkit().get_tools()]\\nmodel + = ModelFactory.create(\\n model_platform=ModelPlatformType.OPENAI,\\n model_type=ModelType.GPT_4O_MINI,\\n)\\n\\n# + Create and run the agent\\ncamel_agent = ChatAgent(\\n system_message=sys_msg,\\n + \ model=model,\\n tools=tools,\\n)\\n\\nresponse = camel_agent.step(\\\"What + is AgentOps?\\\")\\nprint(response)\\n\\nagentops.end_session(\\\"Success\\\")\\n```\\n\\nCheck + out our [Camel integration guide](https://docs.agentops.ai/v1/integrations/camel) + for more examples including multi-agent scenarios.\\n
\\n\\n### Langchain + \U0001F99C\U0001F517\\n\\nAgentOps works seamlessly with applications built + using Langchain. To use the handler, install Langchain as an optional dependency:\\n\\n
\\n + \ Installation\\n \\n```shell\\npip install agentops[langchain]\\n```\\n\\nTo + use the handler, import and set\\n\\n```python\\nimport os\\nfrom langchain.chat_models + import ChatOpenAI\\nfrom langchain.agents import initialize_agent, AgentType\\nfrom + agentops.partners.langchain_callback_handler import LangchainCallbackHandler\\n\\nAGENTOPS_API_KEY + = os.environ['AGENTOPS_API_KEY']\\nhandler = LangchainCallbackHandler(api_key=AGENTOPS_API_KEY, + tags=['Langchain Example'])\\n\\nllm = ChatOpenAI(openai_api_key=OPENAI_API_KEY,\\n + \ callbacks=[handler],\\n model='gpt-3.5-turbo')\\n\\nagent + = initialize_agent(tools,\\n llm,\\n agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,\\n + \ verbose=True,\\n callbacks=[handler], + # You must pass in a callback handler to record your agent\\n handle_parsing_errors=True)\\n```\\n\\nCheck + out the [Langchain Examples Notebook](./examples/langchain_examples.ipynb) + for more details including Async handlers.\\n\\n
\\n\\n### Cohere + \u2328\uFE0F\\n\\nFirst class support for Cohere(>=5.4.0). This is a living + integration, should you need any added functionality please message us on + Discord!\\n\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/cohere)\\n- + [Official Cohere documentation](https://docs.cohere.com/reference/about)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install cohere\\n```\\n\\n```python + python\\nimport cohere\\nimport agentops\\n\\n# Beginning of program's code + (i.e. main.py, __init__.py)\\nagentops.init()\\nco + = cohere.Client()\\n\\nchat = co.chat(\\n message=\\\"Is it pronounced + ceaux-hear or co-hehray?\\\"\\n)\\n\\nprint(chat)\\n\\nagentops.end_session('Success')\\n```\\n\\n```python + python\\nimport cohere\\nimport agentops\\n\\n# Beginning of program's code + (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nco + = cohere.Client()\\n\\nstream = co.chat_stream(\\n message=\\\"Write me + a haiku about the synergies between Cohere and AgentOps\\\"\\n)\\n\\nfor event + in stream:\\n if event.event_type == \\\"text-generation\\\":\\n print(event.text, + end='')\\n\\nagentops.end_session('Success')\\n```\\n
\\n\\n\\n### + Anthropic \uFE68\\n\\nTrack agents built with the Anthropic Python SDK (>=0.32.0).\\n\\n- + [AgentOps integration guide](https://docs.agentops.ai/v1/integrations/anthropic)\\n- + [Official Anthropic documentation](https://docs.anthropic.com/en/docs/welcome)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install anthropic\\n```\\n\\n```python + python\\nimport anthropic\\nimport agentops\\n\\n# Beginning of program's + code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient + = anthropic.Anthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\nmessage + = client.messages.create(\\n max_tokens=1024,\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me a cool fact about AgentOps\\\",\\n }\\n ],\\n + \ model=\\\"claude-3-opus-20240229\\\",\\n )\\nprint(message.content)\\n\\nagentops.end_session('Success')\\n```\\n\\nStreaming\\n```python + python\\nimport anthropic\\nimport agentops\\n\\n# Beginning of program's + code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient + = anthropic.Anthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\nstream + = client.messages.create(\\n max_tokens=1024,\\n model=\\\"claude-3-opus-20240229\\\",\\n + \ messages=[\\n {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something cool about streaming agents\\\",\\n }\\n ],\\n + \ stream=True,\\n)\\n\\nresponse = \\\"\\\"\\nfor event in stream:\\n if + event.type == \\\"content_block_delta\\\":\\n response += event.delta.text\\n + \ elif event.type == \\\"message_stop\\\":\\n print(\\\"\\\\n\\\")\\n + \ print(response)\\n print(\\\"\\\\n\\\")\\n```\\n\\nAsync\\n\\n```python + python\\nimport asyncio\\nfrom anthropic import AsyncAnthropic\\n\\nclient + = AsyncAnthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.messages.create(\\n max_tokens=1024,\\n + \ messages=[\\n {\\n \\\"role\\\": \\\"user\\\",\\n + \ \\\"content\\\": \\\"Tell me something interesting about async + agents\\\",\\n }\\n ],\\n model=\\\"claude-3-opus-20240229\\\",\\n + \ )\\n print(message.content)\\n\\n\\nawait main()\\n```\\n
\\n\\n### + Mistral \u303D\uFE0F\\n\\nTrack agents built with the Anthropic Python SDK + (>=0.32.0).\\n\\n- [AgentOps integration example](./examples/mistral//mistral_example.ipynb)\\n- + [Official Mistral documentation](https://docs.mistral.ai)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install mistralai\\n```\\n\\nSync\\n\\n```python + python\\nfrom mistralai import Mistral\\nimport agentops\\n\\n# Beginning + of program's code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient = Mistral(\\n # This is the default and can + be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\nmessage + = client.chat.complete(\\n messages=[\\n {\\n \\\"role\\\": + \\\"user\\\",\\n \\\"content\\\": \\\"Tell me a cool fact about + AgentOps\\\",\\n }\\n ],\\n model=\\\"open-mistral-nemo\\\",\\n + \ )\\nprint(message.choices[0].message.content)\\n\\nagentops.end_session('Success')\\n```\\n\\nStreaming\\n\\n```python + python\\nfrom mistralai import Mistral\\nimport agentops\\n\\n# Beginning + of program's code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient = Mistral(\\n # This is the default and can + be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\nmessage + = client.chat.stream(\\n messages=[\\n {\\n \\\"role\\\": + \\\"user\\\",\\n \\\"content\\\": \\\"Tell me something cool + about streaming agents\\\",\\n }\\n ],\\n model=\\\"open-mistral-nemo\\\",\\n + \ )\\n\\nresponse = \\\"\\\"\\nfor event in message:\\n if event.data.choices[0].finish_reason + == \\\"stop\\\":\\n print(\\\"\\\\n\\\")\\n print(response)\\n + \ print(\\\"\\\\n\\\")\\n else:\\n response += event.text\\n\\nagentops.end_session('Success')\\n```\\n\\nAsync\\n\\n```python + python\\nimport asyncio\\nfrom mistralai import Mistral\\n\\nclient = Mistral(\\n + \ # This is the default and can be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.chat.complete_async(\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something interesting about async agents\\\",\\n }\\n + \ ],\\n model=\\\"open-mistral-nemo\\\",\\n )\\n print(message.choices[0].message.content)\\n\\n\\nawait + main()\\n```\\n\\nAsync Streaming\\n\\n```python python\\nimport asyncio\\nfrom + mistralai import Mistral\\n\\nclient = Mistral(\\n # This is the default + and can be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.chat.stream_async(\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something interesting about async streaming agents\\\",\\n }\\n + \ ],\\n model=\\\"open-mistral-nemo\\\",\\n )\\n\\n response + = \\\"\\\"\\n async for event in message:\\n if event.data.choices[0].finish_reason + == \\\"stop\\\":\\n print(\\\"\\\\n\\\")\\n print(response)\\n + \ print(\\\"\\\\n\\\")\\n else:\\n response += + event.text\\n\\n\\nawait main()\\n```\\n
\\n\\n\\n\\n### CamelAI + \uFE68\\n\\nTrack agents built with the CamelAI Python SDK (>=0.32.0).\\n\\n- + [CamelAI integration guide](https://docs.camel-ai.org/cookbooks/agents_tracking.html#)\\n- + [Official CamelAI documentation](https://docs.camel-ai.org/index.html)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install camel-ai[all]\\npip + install agentops\\n```\\n\\n```python python\\n#Import Dependencies\\nimport + agentops\\nimport os\\nfrom getpass import getpass\\nfrom dotenv import load_dotenv\\n\\n#Set + Keys\\nload_dotenv()\\nopenai_api_key = os.getenv(\\\"OPENAI_API_KEY\\\") + or \\\"\\\"\\nagentops_api_key = os.getenv(\\\"AGENTOPS_API_KEY\\\") + or \\\"\\\"\\n\\n\\n\\n```\\n
\\n\\n[You + can find usage examples here!](examples/camelai_examples/README.md).\\n\\n\\n\\n### + LiteLLM \U0001F685\\n\\nAgentOps provides support for LiteLLM(>=1.3.1), allowing + you to call 100+ LLMs using the same Input/Output Format. \\n\\n- [AgentOps + integration example](https://docs.agentops.ai/v1/integrations/litellm)\\n- + [Official LiteLLM documentation](https://docs.litellm.ai/docs/providers)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install litellm\\n```\\n\\n```python + python\\n# Do not use LiteLLM like this\\n# from litellm import completion\\n# + ...\\n# response = completion(model=\\\"claude-3\\\", messages=messages)\\n\\n# + Use LiteLLM like this\\nimport litellm\\n...\\nresponse = litellm.completion(model=\\\"claude-3\\\", + messages=messages)\\n# or\\nresponse = await litellm.acompletion(model=\\\"claude-3\\\", + messages=messages)\\n```\\n
\\n\\n### LlamaIndex \U0001F999\\n\\n\\nAgentOps + works seamlessly with applications built using LlamaIndex, a framework for + building context-augmented generative AI applications with LLMs.\\n\\n
\\n + \ Installation\\n \\n```shell\\npip install llama-index-instrumentation-agentops\\n```\\n\\nTo + use the handler, import and set\\n\\n```python\\nfrom llama_index.core import + set_global_handler\\n\\n# NOTE: Feel free to set your AgentOps environment + variables (e.g., 'AGENTOPS_API_KEY')\\n# as outlined in the AgentOps documentation, + or pass the equivalent keyword arguments\\n# anticipated by AgentOps' AOClient + as **eval_params in set_global_handler.\\n\\nset_global_handler(\\\"agentops\\\")\\n```\\n\\nCheck + out the [LlamaIndex docs](https://docs.llamaindex.ai/en/stable/module_guides/observability/?h=agentops#agentops) + for more details.\\n\\n
\\n\\n### Llama Stack \U0001F999\U0001F95E\\n\\nAgentOps + provides support for Llama Stack Python Client(>=0.0.53), allowing you to + monitor your Agentic applications. \\n\\n- [AgentOps integration example 1](https://github.com/AgentOps-AI/agentops/pull/530/files/65a5ab4fdcf310326f191d4b870d4f553591e3ea#diff-fdddf65549f3714f8f007ce7dfd1cde720329fe54155d54389dd50fbd81813cb)\\n- + [AgentOps integration example 2](https://github.com/AgentOps-AI/agentops/pull/530/files/65a5ab4fdcf310326f191d4b870d4f553591e3ea#diff-6688ff4fb7ab1ce7b1cc9b8362ca27264a3060c16737fb1d850305787a6e3699)\\n- + [Official Llama Stack Python Client](https://github.com/meta-llama/llama-stack-client-python)\\n\\n### + SwarmZero AI \U0001F41D\\n\\nTrack and analyze SwarmZero agents with full + observability. Set an `AGENTOPS_API_KEY` in your environment and initialize + AgentOps to get started.\\n\\n- [SwarmZero](https://swarmzero.ai) - Advanced + multi-agent framework\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/swarmzero)\\n- + [SwarmZero AI integration example](https://docs.swarmzero.ai/examples/ai-agents/build-and-monitor-a-web-search-agent)\\n- + [SwarmZero AI - AgentOps documentation](https://docs.swarmzero.ai/sdk/observability/agentops)\\n- + [Official SwarmZero Python SDK](https://github.com/swarmzero/swarmzero)\\n\\n
\\n + \ Installation\\n\\n```bash\\npip install swarmzero\\npip + install agentops\\n```\\n\\n```python\\nfrom dotenv import load_dotenv\\nload_dotenv()\\n\\nimport + agentops\\nagentops.init()\\n\\nfrom swarmzero import + Agent, Swarm\\n# ...\\n```\\n
\\n\\n## Time travel debugging \U0001F52E\\n\\n
\\n \\\"Time\\n
\\n\\n
\\n\\n[Try it out!](https://app.agentops.ai/timetravel)\\n\\n## + Agent Arena \U0001F94A\\n\\n(coming soon!)\\n\\n## Evaluations Roadmap \U0001F9ED\\n\\n| + Platform | + Dashboard | Evals |\\n| + ---------------------------------------------------------------------------- + | ------------------------------------------ | -------------------------------------- + |\\n| \u2705 Python SDK | + \u2705 Multi-session and Cross-session metrics | \u2705 Custom eval metrics + \ |\\n| \U0001F6A7 Evaluation builder API | + \u2705 Custom event tag tracking\_ | \U0001F51C Agent scorecards + \ |\\n| \u2705 [Javascript/Typescript SDK](https://github.com/AgentOps-AI/agentops-node) + | \u2705 Session replays | \U0001F51C Evaluation playground + + leaderboard |\\n\\n## Debugging Roadmap \U0001F9ED\\n\\n| Performance testing + \ | Environments | + LLM Testing | Reasoning and execution testing + \ |\\n| ----------------------------------------- | ----------------------------------------------------------------------------------- + | ------------------------------------------- | ------------------------------------------------- + |\\n| \u2705 Event latency analysis | \U0001F51C Non-stationary + environment testing | \U0001F51C + LLM non-deterministic function detection | \U0001F6A7 Infinite loops and recursive + thought detection |\\n| \u2705 Agent workflow execution pricing | \U0001F51C + Multi-modal environments | + \U0001F6A7 Token limit overflow flags | \U0001F51C Faulty reasoning + detection |\\n| \U0001F6A7 Success validators (external) + \ | \U0001F51C Execution containers | + \U0001F51C Context limit overflow flags | \U0001F51C Generative + code validators |\\n| \U0001F51C Agent controllers/skill + tests | \u2705 Honeypot and prompt injection detection ([PromptArmor](https://promptarmor.com)) + | \U0001F51C API bill tracking | \U0001F51C Error breakpoint + analysis |\\n| \U0001F51C Information context constraint + testing | \U0001F51C Anti-agent roadblocks (i.e. Captchas) | + \U0001F51C CI/CD integration checks | |\\n| + \U0001F51C Regression testing | \U0001F51C Multi-agent + framework visualization | | + \ |\\n\\n### Why AgentOps? + \U0001F914\\n\\nWithout the right tools, AI agents are slow, expensive, and + unreliable. Our mission is to bring your agent from prototype to production. + Here's why AgentOps stands out:\\n\\n- **Comprehensive Observability**: Track + your AI agents' performance, user interactions, and API usage.\\n- **Real-Time + Monitoring**: Get instant insights with session replays, metrics, and live + monitoring tools.\\n- **Cost Control**: Monitor and manage your spend on LLM + and API calls.\\n- **Failure Detection**: Quickly identify and respond to + agent failures and multi-agent interaction issues.\\n- **Tool Usage Statistics**: + Understand how your agents utilize external tools with detailed analytics.\\n- + **Session-Wide Metrics**: Gain a holistic view of your agents' sessions with + comprehensive statistics.\\n\\nAgentOps is designed to make agent observability, + testing, and monitoring easy.\\n\\n\\n## Star History\\n\\nCheck out our growth + in the community:\\n\\n\\\"Logo\\\"\\n\\n## + Popular projects using AgentOps\\n\\n\\n| Repository | Stars |\\n| :-------- + \ | -----: |\\n|\\\"\\\"   [geekan](https://github.com/geekan) + / [MetaGPT](https://github.com/geekan/MetaGPT) | 42787 |\\n|\\\"\\\"   [run-llama](https://github.com/run-llama) + / [llama_index](https://github.com/run-llama/llama_index) | 34446 |\\n|\\\"\\\"   [crewAIInc](https://github.com/crewAIInc) + / [crewAI](https://github.com/crewAIInc/crewAI) | 18287 |\\n|\\\"\\\"   [camel-ai](https://github.com/camel-ai) + / [camel](https://github.com/camel-ai/camel) | 5166 |\\n|\\\"\\\"   [superagent-ai](https://github.com/superagent-ai) + / [superagent](https://github.com/superagent-ai/superagent) | 5050 |\\n|\\\"\\\"   [iyaja](https://github.com/iyaja) + / [llama-fs](https://github.com/iyaja/llama-fs) | 4713 |\\n|\\\"\\\"   [BasedHardware](https://github.com/BasedHardware) + / [Omi](https://github.com/BasedHardware/Omi) | 2723 |\\n|\\\"\\\"   [MervinPraison](https://github.com/MervinPraison) + / [PraisonAI](https://github.com/MervinPraison/PraisonAI) | 2007 |\\n|\\\"\\\"   [AgentOps-AI](https://github.com/AgentOps-AI) + / [Jaiqu](https://github.com/AgentOps-AI/Jaiqu) | 272 |\\n|\\\"\\\"   [swarmzero](https://github.com/swarmzero) + / [swarmzero](https://github.com/swarmzero/swarmzero) | 195 |\\n|\\\"\\\"   [strnad](https://github.com/strnad) + / [CrewAI-Studio](https://github.com/strnad/CrewAI-Studio) | 134 |\\n|\\\"\\\"   [alejandro-ao](https://github.com/alejandro-ao) + / [exa-crewai](https://github.com/alejandro-ao/exa-crewai) | 55 |\\n|\\\"\\\"   [tonykipkemboi](https://github.com/tonykipkemboi) + / [youtube_yapper_trapper](https://github.com/tonykipkemboi/youtube_yapper_trapper) + | 47 |\\n|\\\"\\\"   [sethcoast](https://github.com/sethcoast) + / [cover-letter-builder](https://github.com/sethcoast/cover-letter-builder) + | 27 |\\n|\\\"\\\"   [bhancockio](https://github.com/bhancockio) + / [chatgpt4o-analysis](https://github.com/bhancockio/chatgpt4o-analysis) | + 19 |\\n|\\\"\\\"   [breakstring](https://github.com/breakstring) + / [Agentic_Story_Book_Workflow](https://github.com/breakstring/Agentic_Story_Book_Workflow) + | 14 |\\n|\\\"\\\"   [MULTI-ON](https://github.com/MULTI-ON) + / [multion-python](https://github.com/MULTI-ON/multion-python) | 13 |\\n\\n\\n_Generated + using [github-dependents-info](https://github.com/nvuillam/github-dependents-info), + by [Nicolas Vuillamy](https://github.com/nvuillam)_\\n\",\"description_content_type\":\"text/markdown\",\"docs_url\":null,\"download_url\":null,\"downloads\":{\"last_day\":-1,\"last_month\":-1,\"last_week\":-1},\"dynamic\":null,\"home_page\":null,\"keywords\":null,\"license\":null,\"license_expression\":null,\"license_files\":[\"LICENSE\"],\"maintainer\":null,\"maintainer_email\":null,\"name\":\"agentops\",\"package_url\":\"https://pypi.org/project/agentops/\",\"platform\":null,\"project_url\":\"https://pypi.org/project/agentops/\",\"project_urls\":{\"Homepage\":\"https://github.com/AgentOps-AI/agentops\",\"Issues\":\"https://github.com/AgentOps-AI/agentops/issues\"},\"provides_extra\":null,\"release_url\":\"https://pypi.org/project/agentops/0.3.26/\",\"requires_dist\":[\"opentelemetry-api==1.22.0; + python_version < \\\"3.10\\\"\",\"opentelemetry-api>=1.27.0; python_version + >= \\\"3.10\\\"\",\"opentelemetry-exporter-otlp-proto-http==1.22.0; python_version + < \\\"3.10\\\"\",\"opentelemetry-exporter-otlp-proto-http>=1.27.0; python_version + >= \\\"3.10\\\"\",\"opentelemetry-sdk==1.22.0; python_version < \\\"3.10\\\"\",\"opentelemetry-sdk>=1.27.0; + python_version >= \\\"3.10\\\"\",\"packaging<25.0,>=21.0\",\"psutil<6.1.0,>=5.9.8\",\"pyyaml<7.0,>=5.3\",\"requests<3.0.0,>=2.0.0\",\"termcolor<2.5.0,>=2.3.0\"],\"requires_python\":\"<3.14,>=3.9\",\"summary\":\"Observability + and DevTool Platform for AI Agents\",\"version\":\"0.3.26\",\"yanked\":false,\"yanked_reason\":null},\"last_serial\":27123795,\"releases\":{\"0.0.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9b4641d084346e88671acc02e3a0049d3e0925fe99edd88c8b82700dc3c04d01\",\"md5\":\"2b491f3b3dd01edd4ee37c361087bb46\",\"sha256\":\"f2cb9d59a0413e7977a44a23dbd6a9d89cda5309b63ed08f5c346c7488acf645\"},\"downloads\":-1,\"filename\":\"agentops-0.0.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2b491f3b3dd01edd4ee37c361087bb46\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":10328,\"upload_time\":\"2023-08-21T18:33:47\",\"upload_time_iso_8601\":\"2023-08-21T18:33:47.827866Z\",\"url\":\"https://files.pythonhosted.org/packages/9b/46/41d084346e88671acc02e3a0049d3e0925fe99edd88c8b82700dc3c04d01/agentops-0.0.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b280bf609d98778499bd42df723100a8e910d9b9827cbd00b804cf0b13bb3c87\",\"md5\":\"ff218fc16d45cf72f73d50ee9a0afe82\",\"sha256\":\"5c3d4311b9dde0c71cb475ec99d2963a71604c78d468b333f55e81364f4fe79e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ff218fc16d45cf72f73d50ee9a0afe82\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":11452,\"upload_time\":\"2023-08-21T18:33:49\",\"upload_time_iso_8601\":\"2023-08-21T18:33:49.613830Z\",\"url\":\"https://files.pythonhosted.org/packages/b2/80/bf609d98778499bd42df723100a8e910d9b9827cbd00b804cf0b13bb3c87/agentops-0.0.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"92933862af53105332cb524db237138d3284b5d6abcc7df5fd4406e382372d94\",\"md5\":\"8bdea319b5579775eb88efac72e70cd6\",\"sha256\":\"e8a333567458c1df35538d626bc596f3ba7b8fa2aac5015bc378f3f7f8850669\"},\"downloads\":-1,\"filename\":\"agentops-0.0.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8bdea319b5579775eb88efac72e70cd6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14752,\"upload_time\":\"2023-12-16T01:40:40\",\"upload_time_iso_8601\":\"2023-12-16T01:40:40.867657Z\",\"url\":\"https://files.pythonhosted.org/packages/92/93/3862af53105332cb524db237138d3284b5d6abcc7df5fd4406e382372d94/agentops-0.0.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c63136b1f2e508b67f92ddb5f51f2acf5abdf2bf4b32d5b355d8018b368dc854\",\"md5\":\"87bdcd4d7469d22ce922234d4f0b2b98\",\"sha256\":\"5fbc567bece7b218fc35ce70d208e88e89bb399a9dbf84ab7ad59a2aa559648c\"},\"downloads\":-1,\"filename\":\"agentops-0.0.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"87bdcd4d7469d22ce922234d4f0b2b98\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":15099,\"upload_time\":\"2023-12-16T01:40:42\",\"upload_time_iso_8601\":\"2023-12-16T01:40:42.281826Z\",\"url\":\"https://files.pythonhosted.org/packages/c6/31/36b1f2e508b67f92ddb5f51f2acf5abdf2bf4b32d5b355d8018b368dc854/agentops-0.0.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7125ed114f918332cda824092f620b1002fd76ab6b538dd83711b31c93907139\",\"md5\":\"83ba7e621f01412144aa38306fc1e04c\",\"sha256\":\"cb80823e065d17dc26bdc8fe951ea7e04b23677ef2b4da939669c6fe1b2502bf\"},\"downloads\":-1,\"filename\":\"agentops-0.0.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"83ba7e621f01412144aa38306fc1e04c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":16627,\"upload_time\":\"2023-12-21T19:50:28\",\"upload_time_iso_8601\":\"2023-12-21T19:50:28.595886Z\",\"url\":\"https://files.pythonhosted.org/packages/71/25/ed114f918332cda824092f620b1002fd76ab6b538dd83711b31c93907139/agentops-0.0.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9e037750b04398cda2548bbf3d84ce554c4009592095c060c4904e773f3a43da\",\"md5\":\"5bbb120cc9a5f5ff6fb5dd45691ba279\",\"sha256\":\"cbf0f39768d47e32be448a3ff3ded665fce64ff8a90c0e10692fd7a3ab4790ee\"},\"downloads\":-1,\"filename\":\"agentops-0.0.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"5bbb120cc9a5f5ff6fb5dd45691ba279\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":16794,\"upload_time\":\"2023-12-21T19:50:29\",\"upload_time_iso_8601\":\"2023-12-21T19:50:29.881561Z\",\"url\":\"https://files.pythonhosted.org/packages/9e/03/7750b04398cda2548bbf3d84ce554c4009592095c060c4904e773f3a43da/agentops-0.0.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"adf5cc3e93b2328532ea80b8b36450b8b48a8199ebbe1f75ebb490e57a926b88\",\"md5\":\"694ba49ca8841532039bdf8dc0250b85\",\"sha256\":\"9a2c773efbe3353f60d1b86da12333951dad288ba54839615a53b57e5965bea8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"694ba49ca8841532039bdf8dc0250b85\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18602,\"upload_time\":\"2024-01-03T03:47:07\",\"upload_time_iso_8601\":\"2024-01-03T03:47:07.184203Z\",\"url\":\"https://files.pythonhosted.org/packages/ad/f5/cc3e93b2328532ea80b8b36450b8b48a8199ebbe1f75ebb490e57a926b88/agentops-0.0.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7eb0633ecd30c74a0613c7330ececf0303286622ce429f08ce0daa9ee8cc4ecf\",\"md5\":\"025daef9622472882a1fa58b6c1fddb5\",\"sha256\":\"fbb4c38711a7dff3ab08004591451b5a5c33bea5e496fa71fac668c7284513d2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"025daef9622472882a1fa58b6c1fddb5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19826,\"upload_time\":\"2024-01-03T03:47:08\",\"upload_time_iso_8601\":\"2024-01-03T03:47:08.942790Z\",\"url\":\"https://files.pythonhosted.org/packages/7e/b0/633ecd30c74a0613c7330ececf0303286622ce429f08ce0daa9ee8cc4ecf/agentops-0.0.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3a0f9c1500adb4191531374db4d7920c51aba92c5472d13d172108e881c36948\",\"md5\":\"f0a3b78c15af3ab467778f94fb50bf4a\",\"sha256\":\"3379a231f37a375bda421114a5626643263e84ce951503d0bdff8411149946e0\"},\"downloads\":-1,\"filename\":\"agentops-0.0.13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f0a3b78c15af3ab467778f94fb50bf4a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18709,\"upload_time\":\"2024-01-07T08:57:57\",\"upload_time_iso_8601\":\"2024-01-07T08:57:57.456769Z\",\"url\":\"https://files.pythonhosted.org/packages/3a/0f/9c1500adb4191531374db4d7920c51aba92c5472d13d172108e881c36948/agentops-0.0.13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cbf9a3824bd30d7107aaca8d409165c0a3574a879efd7ca0fea755e903623b61\",\"md5\":\"0ebceb6aad82c0622adcd4c2633fc677\",\"sha256\":\"5e6adf68c2a533496648ea3fabb6e791f39ce810d18dbc1354d118b195fd8556\"},\"downloads\":-1,\"filename\":\"agentops-0.0.13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0ebceb6aad82c0622adcd4c2633fc677\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19933,\"upload_time\":\"2024-01-07T08:57:59\",\"upload_time_iso_8601\":\"2024-01-07T08:57:59.146933Z\",\"url\":\"https://files.pythonhosted.org/packages/cb/f9/a3824bd30d7107aaca8d409165c0a3574a879efd7ca0fea755e903623b61/agentops-0.0.13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.14\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"252b1d8ee3b4ab02215eb1a52865a9f2c209d6d4cbf4a3444fb7faf23b02ca66\",\"md5\":\"a8ba77b0ec0d25072b2e0535a135cc40\",\"sha256\":\"d5bb4661642daf8fc63a257ef0f04ccc5c79a73e73d57ea04190e74d9a3e6df9\"},\"downloads\":-1,\"filename\":\"agentops-0.0.14-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a8ba77b0ec0d25072b2e0535a135cc40\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18710,\"upload_time\":\"2024-01-08T21:52:28\",\"upload_time_iso_8601\":\"2024-01-08T21:52:28.340899Z\",\"url\":\"https://files.pythonhosted.org/packages/25/2b/1d8ee3b4ab02215eb1a52865a9f2c209d6d4cbf4a3444fb7faf23b02ca66/agentops-0.0.14-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"bf3a1fdf85563c47c2fc6571a1406aecb772f644d53a2adabf4981012971587a\",\"md5\":\"1ecf7177ab57738c6663384de20887e5\",\"sha256\":\"c54cee1c9ed1b5b7829fd80d5d01278b1efb50e977e5a890627f4688d0f2afb2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.14.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1ecf7177ab57738c6663384de20887e5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19932,\"upload_time\":\"2024-01-08T21:52:29\",\"upload_time_iso_8601\":\"2024-01-08T21:52:29.988596Z\",\"url\":\"https://files.pythonhosted.org/packages/bf/3a/1fdf85563c47c2fc6571a1406aecb772f644d53a2adabf4981012971587a/agentops-0.0.14.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.15\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0c5374cbe5c78db9faa7c939d1a91eff111c4d3f13f4d8d18920ddd48f89f335\",\"md5\":\"c4528a66151e76c7b1abdcac3c3eaf52\",\"sha256\":\"aa8034dc9a0e9e56014a06fac521fc2a63a968d34f73e4d4c9bef4b0e87f8241\"},\"downloads\":-1,\"filename\":\"agentops-0.0.15-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c4528a66151e76c7b1abdcac3c3eaf52\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18734,\"upload_time\":\"2024-01-23T08:43:24\",\"upload_time_iso_8601\":\"2024-01-23T08:43:24.651479Z\",\"url\":\"https://files.pythonhosted.org/packages/0c/53/74cbe5c78db9faa7c939d1a91eff111c4d3f13f4d8d18920ddd48f89f335/agentops-0.0.15-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"da56c7d8189f4accc182be6729bc44a8006d981173e721ff4751ab784bbadfb3\",\"md5\":\"cd27bff6c943c6fcbed33ed8280ab5ea\",\"sha256\":\"71b0e048d2f1b86744105509436cbb6fa51e6b418a50a8253849dc6cdeda6cca\"},\"downloads\":-1,\"filename\":\"agentops-0.0.15.tar.gz\",\"has_sig\":false,\"md5_digest\":\"cd27bff6c943c6fcbed33ed8280ab5ea\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19985,\"upload_time\":\"2024-01-23T08:43:26\",\"upload_time_iso_8601\":\"2024-01-23T08:43:26.316265Z\",\"url\":\"https://files.pythonhosted.org/packages/da/56/c7d8189f4accc182be6729bc44a8006d981173e721ff4751ab784bbadfb3/agentops-0.0.15.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.16\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b694d78d43f49688829cab72b7326db1d9e3f436f71eed113f26d402fefa6856\",\"md5\":\"657c2cad11b3c8b97469524bff19b916\",\"sha256\":\"e9633dcbc419a47db8de13bd0dc4f5d55f0a50ef3434ffe8e1f8a3468561bd60\"},\"downloads\":-1,\"filename\":\"agentops-0.0.16-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"657c2cad11b3c8b97469524bff19b916\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18736,\"upload_time\":\"2024-01-23T09:03:05\",\"upload_time_iso_8601\":\"2024-01-23T09:03:05.799496Z\",\"url\":\"https://files.pythonhosted.org/packages/b6/94/d78d43f49688829cab72b7326db1d9e3f436f71eed113f26d402fefa6856/agentops-0.0.16-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ec353005c98c1e2642d61510a9977c2118d3baa72f50e3c45ef6a341bfd9a3b0\",\"md5\":\"2f9b28dd0953fdd2da606e19b9131006\",\"sha256\":\"469588d72734fc6e90c66cf9658613baf2a0b94c933a23cab16820435576c61f\"},\"downloads\":-1,\"filename\":\"agentops-0.0.16.tar.gz\",\"has_sig\":false,\"md5_digest\":\"2f9b28dd0953fdd2da606e19b9131006\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19986,\"upload_time\":\"2024-01-23T09:03:07\",\"upload_time_iso_8601\":\"2024-01-23T09:03:07.645949Z\",\"url\":\"https://files.pythonhosted.org/packages/ec/35/3005c98c1e2642d61510a9977c2118d3baa72f50e3c45ef6a341bfd9a3b0/agentops-0.0.16.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.17\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f3b2eff27fc5373097fc4f4d3d90f4d0fad1c3be7b923a6213750fe1cb022e6e\",\"md5\":\"20325afd9b9d9633b120b63967d4ae85\",\"sha256\":\"1a7c8d8fc8821e2e7eedbbe2683e076bfaca3434401b0d1ca6b830bf3230e61e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.17-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"20325afd9b9d9633b120b63967d4ae85\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18827,\"upload_time\":\"2024-01-23T17:12:19\",\"upload_time_iso_8601\":\"2024-01-23T17:12:19.300806Z\",\"url\":\"https://files.pythonhosted.org/packages/f3/b2/eff27fc5373097fc4f4d3d90f4d0fad1c3be7b923a6213750fe1cb022e6e/agentops-0.0.17-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ac2a2cb7548cce5b009bee9e6f9b46b26df1cca777830231e2d1603b83740053\",\"md5\":\"4ac65e38fa45946f1d382ce290b904e9\",\"sha256\":\"cc1e7f796a84c66a29b271d8f0faa4999c152c80195911b817502da002a3ae02\"},\"downloads\":-1,\"filename\":\"agentops-0.0.17.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4ac65e38fa45946f1d382ce290b904e9\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":20063,\"upload_time\":\"2024-01-23T17:12:20\",\"upload_time_iso_8601\":\"2024-01-23T17:12:20.558647Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/2a/2cb7548cce5b009bee9e6f9b46b26df1cca777830231e2d1603b83740053/agentops-0.0.17.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.18\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"321102c865df2245ab8cfaeb48a72ef7011a7bbbe1553a43791d68295ff7c20d\",\"md5\":\"ad10ec2bf28bf434d3d2f11500f5a396\",\"sha256\":\"df241f6a62368aa645d1599bb6885688fba0d49dcc26f97f7f65ab29a6af1a2a\"},\"downloads\":-1,\"filename\":\"agentops-0.0.18-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ad10ec2bf28bf434d3d2f11500f5a396\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18860,\"upload_time\":\"2024-01-24T04:39:06\",\"upload_time_iso_8601\":\"2024-01-24T04:39:06.952175Z\",\"url\":\"https://files.pythonhosted.org/packages/32/11/02c865df2245ab8cfaeb48a72ef7011a7bbbe1553a43791d68295ff7c20d/agentops-0.0.18-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7831bd4249dcf9a0cdcad5451ca62aa83187295bb9c16fd1b3034999bff7ceaf\",\"md5\":\"76dc30c0a2e68f09c0411c23dd5e3a36\",\"sha256\":\"47e071424247dbbb1b9aaf07ff60a7e376ae01666478d0305d62a9068d61c1c1\"},\"downloads\":-1,\"filename\":\"agentops-0.0.18.tar.gz\",\"has_sig\":false,\"md5_digest\":\"76dc30c0a2e68f09c0411c23dd5e3a36\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":20094,\"upload_time\":\"2024-01-24T04:39:09\",\"upload_time_iso_8601\":\"2024-01-24T04:39:09.795862Z\",\"url\":\"https://files.pythonhosted.org/packages/78/31/bd4249dcf9a0cdcad5451ca62aa83187295bb9c16fd1b3034999bff7ceaf/agentops-0.0.18.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.19\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9d48292d743b748eddc01b51747e1dac4b62dea0eb5f240877bae821c0049572\",\"md5\":\"a26178cdf9d5fc5b466a30e5990c16a1\",\"sha256\":\"0e663e26aad41bf0288d250685e88130430dd087d03ffc69aa7f43e587921b59\"},\"downloads\":-1,\"filename\":\"agentops-0.0.19-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a26178cdf9d5fc5b466a30e5990c16a1\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18380,\"upload_time\":\"2024-01-24T07:58:38\",\"upload_time_iso_8601\":\"2024-01-24T07:58:38.440021Z\",\"url\":\"https://files.pythonhosted.org/packages/9d/48/292d743b748eddc01b51747e1dac4b62dea0eb5f240877bae821c0049572/agentops-0.0.19-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"dfe6f3b3fc53b050ec70de947e27227d0ea1e7a75037d082fc5f4d914178d12f\",\"md5\":\"c62a69951acd19121b059215cf0ddb8b\",\"sha256\":\"3d46faabf2dad44bd4705279569c76240ab5c71f03f511ba9d363dfd033d453e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.19.tar.gz\",\"has_sig\":false,\"md5_digest\":\"c62a69951acd19121b059215cf0ddb8b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19728,\"upload_time\":\"2024-01-24T07:58:41\",\"upload_time_iso_8601\":\"2024-01-24T07:58:41.352463Z\",\"url\":\"https://files.pythonhosted.org/packages/df/e6/f3b3fc53b050ec70de947e27227d0ea1e7a75037d082fc5f4d914178d12f/agentops-0.0.19.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e593e3863d3c61a75e43a347d423f754bc57559989773af6a9c7bc696ff1d6b4\",\"md5\":\"8ff77b84c32a4e846ce50c6844664b49\",\"sha256\":\"3bea2bdd8a26c190675aaf2775d97bc2e3c52d7da05c04ae8ec46fed959e0c6e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8ff77b84c32a4e846ce50c6844664b49\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":10452,\"upload_time\":\"2023-08-28T23:14:23\",\"upload_time_iso_8601\":\"2023-08-28T23:14:23.488523Z\",\"url\":\"https://files.pythonhosted.org/packages/e5/93/e3863d3c61a75e43a347d423f754bc57559989773af6a9c7bc696ff1d6b4/agentops-0.0.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"82dbea7088c3ba71d9882a8d09d896d8529100f3103d1fe58ff4b890f9d616f1\",\"md5\":\"02c4fed5ca014de524e5c1dfe3ec2dd2\",\"sha256\":\"dc183d28965a9514cb33d916b29b3159189f5be64c4a7d943be0cad1a00379f9\"},\"downloads\":-1,\"filename\":\"agentops-0.0.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02c4fed5ca014de524e5c1dfe3ec2dd2\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":11510,\"upload_time\":\"2023-08-28T23:14:24\",\"upload_time_iso_8601\":\"2023-08-28T23:14:24.882664Z\",\"url\":\"https://files.pythonhosted.org/packages/82/db/ea7088c3ba71d9882a8d09d896d8529100f3103d1fe58ff4b890f9d616f1/agentops-0.0.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.20\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ad68d8cc6d631618e04ec6988d0c3f4462a74b0b5849719b8373c2470cf9d533\",\"md5\":\"09b2866043abc3e5cb5dfc17b80068cb\",\"sha256\":\"ba20fc48902434858f28e3c4a7febe56d275a28bd33378868e7fcde2f53f2430\"},\"downloads\":-1,\"filename\":\"agentops-0.0.20-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"09b2866043abc3e5cb5dfc17b80068cb\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18367,\"upload_time\":\"2024-01-25T07:12:48\",\"upload_time_iso_8601\":\"2024-01-25T07:12:48.514177Z\",\"url\":\"https://files.pythonhosted.org/packages/ad/68/d8cc6d631618e04ec6988d0c3f4462a74b0b5849719b8373c2470cf9d533/agentops-0.0.20-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0ba37435a8ce7125c7d75b931a373a188acf1c9e793be28db1b5c5e5a57d7a10\",\"md5\":\"fb700178ad44a4697b696ecbd28d115c\",\"sha256\":\"d50623b03b410c8c88718c29ea271304681e1305b5c05ba824edb92d18aab4f8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.20.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fb700178ad44a4697b696ecbd28d115c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19707,\"upload_time\":\"2024-01-25T07:12:49\",\"upload_time_iso_8601\":\"2024-01-25T07:12:49.915462Z\",\"url\":\"https://files.pythonhosted.org/packages/0b/a3/7435a8ce7125c7d75b931a373a188acf1c9e793be28db1b5c5e5a57d7a10/agentops-0.0.20.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.21\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9182ceb8c12e05c0e56ea6c5ba7395c57764ffc5a8134fd045b247793873c172\",\"md5\":\"ce428cf01a0c1066d3f1f3c8ca6b4f9b\",\"sha256\":\"fdefe50d945ad669b33c90bf526f9af0e7dc4792b4443aeb907b0a36de2be186\"},\"downloads\":-1,\"filename\":\"agentops-0.0.21-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ce428cf01a0c1066d3f1f3c8ca6b4f9b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18483,\"upload_time\":\"2024-02-22T03:07:14\",\"upload_time_iso_8601\":\"2024-02-22T03:07:14.032143Z\",\"url\":\"https://files.pythonhosted.org/packages/91/82/ceb8c12e05c0e56ea6c5ba7395c57764ffc5a8134fd045b247793873c172/agentops-0.0.21-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"acbb361e3d7ed85fc4207ffbbe44ddfa7ee3b8f96b76c3712d4153d63ebb45e2\",\"md5\":\"360f00d330fa37ad10f687906e31e219\",\"sha256\":\"ec10f8e64c553a1c400f1d5c792c3daef383cd718747cabb8e5abc9ef685f25d\"},\"downloads\":-1,\"filename\":\"agentops-0.0.21.tar.gz\",\"has_sig\":false,\"md5_digest\":\"360f00d330fa37ad10f687906e31e219\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19787,\"upload_time\":\"2024-02-22T03:07:15\",\"upload_time_iso_8601\":\"2024-02-22T03:07:15.546312Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/bb/361e3d7ed85fc4207ffbbe44ddfa7ee3b8f96b76c3712d4153d63ebb45e2/agentops-0.0.21.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.22\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b9da29a808d5bd3045f80b5652737e94695056b4a7cf7830ed7de037b1fe941c\",\"md5\":\"d9e04a68f0b143432b9e34341e4f0a17\",\"sha256\":\"fbcd962ff08a2e216637341c36c558be74368fbfda0b2408e55388e4c96474ca\"},\"downloads\":-1,\"filename\":\"agentops-0.0.22-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9e04a68f0b143432b9e34341e4f0a17\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18485,\"upload_time\":\"2024-02-29T21:16:00\",\"upload_time_iso_8601\":\"2024-02-29T21:16:00.124986Z\",\"url\":\"https://files.pythonhosted.org/packages/b9/da/29a808d5bd3045f80b5652737e94695056b4a7cf7830ed7de037b1fe941c/agentops-0.0.22-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4d842d1c5d80c69e6c9b8f3fd925c2f2fd084ad6eb29d93fdeadbdeca79e5eda\",\"md5\":\"8f3b286fd01c2c43f7f7b1e4aebe3594\",\"sha256\":\"397544ce90474fee59f1e8561c92f4923e9034842be593f1ac41437c5fca5841\"},\"downloads\":-1,\"filename\":\"agentops-0.0.22.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8f3b286fd01c2c43f7f7b1e4aebe3594\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19784,\"upload_time\":\"2024-02-29T21:16:01\",\"upload_time_iso_8601\":\"2024-02-29T21:16:01.909583Z\",\"url\":\"https://files.pythonhosted.org/packages/4d/84/2d1c5d80c69e6c9b8f3fd925c2f2fd084ad6eb29d93fdeadbdeca79e5eda/agentops-0.0.22.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"324eda261865c2042eeb5da9827a350760e435896855d5480b8f3136212c3f65\",\"md5\":\"07a9f9f479a14e65b82054a145514e8d\",\"sha256\":\"35351701e3caab900243771bda19d6613bdcb84cc9ef2e1adde431a775c09af8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"07a9f9f479a14e65b82054a145514e8d\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":11872,\"upload_time\":\"2023-09-13T23:03:34\",\"upload_time_iso_8601\":\"2023-09-13T23:03:34.300564Z\",\"url\":\"https://files.pythonhosted.org/packages/32/4e/da261865c2042eeb5da9827a350760e435896855d5480b8f3136212c3f65/agentops-0.0.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"643485e455d4f411b56bef2a99c40e32f35f456c93deda0a3915231f1da92e56\",\"md5\":\"c637ee3cfa358b65ed14cfc20d5f803f\",\"sha256\":\"45a57492e4072f3f27b5e851f6e501b54c796f6ace5f65ecf70e51dbe18ca1a8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"c637ee3cfa358b65ed14cfc20d5f803f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":12455,\"upload_time\":\"2023-09-13T23:03:35\",\"upload_time_iso_8601\":\"2023-09-13T23:03:35.513682Z\",\"url\":\"https://files.pythonhosted.org/packages/64/34/85e455d4f411b56bef2a99c40e32f35f456c93deda0a3915231f1da92e56/agentops-0.0.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"20cc12cf2391854ed588eaf6cdc87f60048f84e8dc7d15792850b7e90a0406b8\",\"md5\":\"7a3c11004517e22dc7cde83cf6d8d5e8\",\"sha256\":\"5a5cdcbe6e32c59237521182b83768e650b4519416b42f4e13929a115a0f20ee\"},\"downloads\":-1,\"filename\":\"agentops-0.0.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7a3c11004517e22dc7cde83cf6d8d5e8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":13520,\"upload_time\":\"2023-09-22T09:23:52\",\"upload_time_iso_8601\":\"2023-09-22T09:23:52.896099Z\",\"url\":\"https://files.pythonhosted.org/packages/20/cc/12cf2391854ed588eaf6cdc87f60048f84e8dc7d15792850b7e90a0406b8/agentops-0.0.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"98d2d9f9932d17711dd5d98af674c868686bdbdd9aaae9b8d69e9eecfd4c68f4\",\"md5\":\"712d3bc3b28703963f8f398845b1d17a\",\"sha256\":\"97743c6420bc5ba2655ac690041d5f5732fb950130cf61ab25ef6d44be6ecfb2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"712d3bc3b28703963f8f398845b1d17a\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14050,\"upload_time\":\"2023-09-22T09:23:54\",\"upload_time_iso_8601\":\"2023-09-22T09:23:54.315467Z\",\"url\":\"https://files.pythonhosted.org/packages/98/d2/d9f9932d17711dd5d98af674c868686bdbdd9aaae9b8d69e9eecfd4c68f4/agentops-0.0.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e900cd903074a01932ded9a05dac7849a16c5850ed20c027b954b1eccfba54c1\",\"md5\":\"1bd4fd6cca14dac4947ecc6c4e3fe0a1\",\"sha256\":\"e39e1051ba8c58f222f3495196eb939ccc53f04bd279372ae01e694973dd25d6\"},\"downloads\":-1,\"filename\":\"agentops-0.0.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1bd4fd6cca14dac4947ecc6c4e3fe0a1\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14107,\"upload_time\":\"2023-10-07T00:22:48\",\"upload_time_iso_8601\":\"2023-10-07T00:22:48.714074Z\",\"url\":\"https://files.pythonhosted.org/packages/e9/00/cd903074a01932ded9a05dac7849a16c5850ed20c027b954b1eccfba54c1/agentops-0.0.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"08d5c29068ce4df9c85865b45e1cdb7be1df06e54fce087fad18ec390a7aea54\",\"md5\":\"4d8fc5553e3199fe24d6118337884a2b\",\"sha256\":\"8f3662e600ba57e9a102c6bf86a6a1e16c0e53e1f38a84fa1b9c01cc07ca4990\"},\"downloads\":-1,\"filename\":\"agentops-0.0.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4d8fc5553e3199fe24d6118337884a2b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14724,\"upload_time\":\"2023-10-07T00:22:50\",\"upload_time_iso_8601\":\"2023-10-07T00:22:50.304226Z\",\"url\":\"https://files.pythonhosted.org/packages/08/d5/c29068ce4df9c85865b45e1cdb7be1df06e54fce087fad18ec390a7aea54/agentops-0.0.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2f5b5f3bd8a5b2d96b6417fd4a3fc72ed484e3a4ffacac49035f17bb8df1dd5b\",\"md5\":\"b7e701ff7953ecca01ceec3a6b9374b2\",\"sha256\":\"05dea1d06f8f8d06a8f460d18d302febe91f4dad2e3fc0088d05b7017765f3b6\"},\"downloads\":-1,\"filename\":\"agentops-0.0.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b7e701ff7953ecca01ceec3a6b9374b2\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14236,\"upload_time\":\"2023-10-27T06:56:14\",\"upload_time_iso_8601\":\"2023-10-27T06:56:14.029277Z\",\"url\":\"https://files.pythonhosted.org/packages/2f/5b/5f3bd8a5b2d96b6417fd4a3fc72ed484e3a4ffacac49035f17bb8df1dd5b/agentops-0.0.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4af43743bf40518545c8906687038e5717b1bd33db7ba300a084ec4f6c9c59e0\",\"md5\":\"0a78dcafcbc6292cf0823181cdc226a7\",\"sha256\":\"0057cb5d6dc0dd2c444f3371faef40c844a1510700b31824a4fccf5302713361\"},\"downloads\":-1,\"filename\":\"agentops-0.0.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0a78dcafcbc6292cf0823181cdc226a7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14785,\"upload_time\":\"2023-10-27T06:56:15\",\"upload_time_iso_8601\":\"2023-10-27T06:56:15.069192Z\",\"url\":\"https://files.pythonhosted.org/packages/4a/f4/3743bf40518545c8906687038e5717b1bd33db7ba300a084ec4f6c9c59e0/agentops-0.0.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3cb1d15c39bbc95f66c64d01cca304f9b4b0c3503509ad92ef29f926c9163599\",\"md5\":\"f494f6c256899103a80666be68d136ad\",\"sha256\":\"6984429ca1a9013fd4386105516cb36a46dd7078f7ac81e0a4701f1700bd25b5\"},\"downloads\":-1,\"filename\":\"agentops-0.0.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f494f6c256899103a80666be68d136ad\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14370,\"upload_time\":\"2023-11-02T06:37:36\",\"upload_time_iso_8601\":\"2023-11-02T06:37:36.480189Z\",\"url\":\"https://files.pythonhosted.org/packages/3c/b1/d15c39bbc95f66c64d01cca304f9b4b0c3503509ad92ef29f926c9163599/agentops-0.0.7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ba709ae02fc635cab51b237dcc3657ec69aac61ee67ea5f903cfae07de19abc8\",\"md5\":\"b163eaaf9cbafbbd19ec3f91b2b56969\",\"sha256\":\"a6f36d94a82d8e481b406f040790cefd4d939f07108737c696327d97c0ccdaf4\"},\"downloads\":-1,\"filename\":\"agentops-0.0.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b163eaaf9cbafbbd19ec3f91b2b56969\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14895,\"upload_time\":\"2023-11-02T06:37:37\",\"upload_time_iso_8601\":\"2023-11-02T06:37:37.698159Z\",\"url\":\"https://files.pythonhosted.org/packages/ba/70/9ae02fc635cab51b237dcc3657ec69aac61ee67ea5f903cfae07de19abc8/agentops-0.0.7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8147fa3ee8807ad961aa50a773b6567e3a624000936d3cc1a578af72d83e02e7\",\"md5\":\"20cffb5534b4545fa1e8b24a6a24b1da\",\"sha256\":\"5d50b2ab18a203dbb4555a2cd482dae8df5bf2aa3e771a9758ee28b540330da3\"},\"downloads\":-1,\"filename\":\"agentops-0.0.8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"20cffb5534b4545fa1e8b24a6a24b1da\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14391,\"upload_time\":\"2023-11-23T06:17:56\",\"upload_time_iso_8601\":\"2023-11-23T06:17:56.154712Z\",\"url\":\"https://files.pythonhosted.org/packages/81/47/fa3ee8807ad961aa50a773b6567e3a624000936d3cc1a578af72d83e02e7/agentops-0.0.8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"707473dc640a3fecfbe84ab7da230f7c862f72f231514a2a488b43a896146ed6\",\"md5\":\"bba7e74b58849f15d50f4e1270cbd23f\",\"sha256\":\"3a625d2acc922d99563ce71c5032b0b3b0db57d1c6fade319cf1bb636608eca0\"},\"downloads\":-1,\"filename\":\"agentops-0.0.8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"bba7e74b58849f15d50f4e1270cbd23f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14775,\"upload_time\":\"2023-11-23T06:17:58\",\"upload_time_iso_8601\":\"2023-11-23T06:17:58.768877Z\",\"url\":\"https://files.pythonhosted.org/packages/70/74/73dc640a3fecfbe84ab7da230f7c862f72f231514a2a488b43a896146ed6/agentops-0.0.8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c2a41dc8456edc9bccc0c560967cfdce23a4d7ab8162946be288b54391d80f7c\",\"md5\":\"5fb09f82b7eeb270c6644dcd3656953f\",\"sha256\":\"b480fd51fbffc76ae13bb885c2adb1236a7d3b0095b4dafb4a992f6e25647433\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"5fb09f82b7eeb270c6644dcd3656953f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25045,\"upload_time\":\"2024-04-03T02:01:56\",\"upload_time_iso_8601\":\"2024-04-03T02:01:56.936873Z\",\"url\":\"https://files.pythonhosted.org/packages/c2/a4/1dc8456edc9bccc0c560967cfdce23a4d7ab8162946be288b54391d80f7c/agentops-0.1.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a81756443f28de774cb7c863a2856e1b07658a9a772ba86dfb1cfbb19bc08fe3\",\"md5\":\"b93c602c1d1da5d8f7a2dcdaa70f8e21\",\"sha256\":\"22d3dc87dedf93b3b78a0dfdef8c685b2f3bff9fbab32016360e298a24d311dc\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b93c602c1d1da5d8f7a2dcdaa70f8e21\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24685,\"upload_time\":\"2024-04-03T02:01:58\",\"upload_time_iso_8601\":\"2024-04-03T02:01:58.623055Z\",\"url\":\"https://files.pythonhosted.org/packages/a8/17/56443f28de774cb7c863a2856e1b07658a9a772ba86dfb1cfbb19bc08fe3/agentops-0.1.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c03a329c59f001f50701e9e541775c79304a5ce4ffe34d717b1d2af555362e9e\",\"md5\":\"7c7e84b3b4448580bf5a7e9c08012477\",\"sha256\":\"825ab57ac5f7840f5a7f8ac195f4af75ec07a9c0972b17d1a57a595420d06208\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7c7e84b3b4448580bf5a7e9c08012477\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23258,\"upload_time\":\"2024-03-18T18:51:08\",\"upload_time_iso_8601\":\"2024-03-18T18:51:08.693772Z\",\"url\":\"https://files.pythonhosted.org/packages/c0/3a/329c59f001f50701e9e541775c79304a5ce4ffe34d717b1d2af555362e9e/agentops-0.1.0b1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"026ee44f1d5a49924867475f7d101abe40170c0674b4b395f28ce88552c1ba71\",\"md5\":\"9cf6699fe45f13f1893c8992405e7261\",\"sha256\":\"f5ce4b34999fe4b21a4ce3643980253d30f8ea9c55f01d96cd35631355fc7ac3\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9cf6699fe45f13f1893c8992405e7261\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23842,\"upload_time\":\"2024-03-18T18:51:10\",\"upload_time_iso_8601\":\"2024-03-18T18:51:10.250127Z\",\"url\":\"https://files.pythonhosted.org/packages/02/6e/e44f1d5a49924867475f7d101abe40170c0674b4b395f28ce88552c1ba71/agentops-0.1.0b1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6a25e9282f81c3f2615ef6543a0b5ca49dd14b03f311fc5a108ad1aff4f0b720\",\"md5\":\"1d3e736ef44c0ad8829c50f036ac807b\",\"sha256\":\"485362b9a68d2327da250f0681b30a9296f0b41e058672b023ae2a8ed924b4d3\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1d3e736ef44c0ad8829c50f036ac807b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23477,\"upload_time\":\"2024-03-21T23:31:20\",\"upload_time_iso_8601\":\"2024-03-21T23:31:20.022797Z\",\"url\":\"https://files.pythonhosted.org/packages/6a/25/e9282f81c3f2615ef6543a0b5ca49dd14b03f311fc5a108ad1aff4f0b720/agentops-0.1.0b2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3165f702684da6e01f8df74a4291be2914c382ec4cb6f8ed2c3dc6d5a9f177ff\",\"md5\":\"0d51a6f6bf7cb0d3651574404c9c703c\",\"sha256\":\"cf9a8b54cc4f76592b6380729c03ec7adfe2256e6b200876d7595e50015f5d62\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0d51a6f6bf7cb0d3651574404c9c703c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23659,\"upload_time\":\"2024-03-21T23:31:21\",\"upload_time_iso_8601\":\"2024-03-21T23:31:21.330837Z\",\"url\":\"https://files.pythonhosted.org/packages/31/65/f702684da6e01f8df74a4291be2914c382ec4cb6f8ed2c3dc6d5a9f177ff/agentops-0.1.0b2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2e64bfe82911b8981ce57f86154915d53b45fffa83ccb9cd6cf4cc71af3f796b\",\"md5\":\"470bc56525c114dddd908628dcb4f267\",\"sha256\":\"45b5aaa9f38989cfbfcc4f64e3041050df6d417177874316839225085e60d18d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"470bc56525c114dddd908628dcb4f267\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23522,\"upload_time\":\"2024-03-25T19:34:58\",\"upload_time_iso_8601\":\"2024-03-25T19:34:58.102867Z\",\"url\":\"https://files.pythonhosted.org/packages/2e/64/bfe82911b8981ce57f86154915d53b45fffa83ccb9cd6cf4cc71af3f796b/agentops-0.1.0b3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0858e4b718e30a6bbe27d32b7128398cb3884f83f89b4121e36cbb7f979466ca\",\"md5\":\"8ddb13824d3636d841739479e02a12e6\",\"sha256\":\"9020daab306fe8c7ed0a98a9edcad9772eb1df0eacce7f936a5ed6bf0f7d2af1\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8ddb13824d3636d841739479e02a12e6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23641,\"upload_time\":\"2024-03-25T19:35:01\",\"upload_time_iso_8601\":\"2024-03-25T19:35:01.119334Z\",\"url\":\"https://files.pythonhosted.org/packages/08/58/e4b718e30a6bbe27d32b7128398cb3884f83f89b4121e36cbb7f979466ca/agentops-0.1.0b3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"67f860440d18b674b06c5a9f4f334bf1f1656dca9f6763d5dd3a2be9e5d2c256\",\"md5\":\"b11f47108926fb46964bbf28675c3e35\",\"sha256\":\"93a1f241c3fd7880c3d29ab64baa0661d9ba84e2071092aecb3e4fc574037900\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b11f47108926fb46964bbf28675c3e35\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23512,\"upload_time\":\"2024-03-26T01:14:54\",\"upload_time_iso_8601\":\"2024-03-26T01:14:54.986869Z\",\"url\":\"https://files.pythonhosted.org/packages/67/f8/60440d18b674b06c5a9f4f334bf1f1656dca9f6763d5dd3a2be9e5d2c256/agentops-0.1.0b4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"10feabb836b04b7eae44383f5616ed1c4c6e9aee9beecc3df4617f69f7e3adc5\",\"md5\":\"fa4512f74baf9909544ebab021862740\",\"sha256\":\"4716b4e2a627d7a3846ddee3d334c8f5e8a1a2d231ec5286379c0f22920a2a9d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fa4512f74baf9909544ebab021862740\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23668,\"upload_time\":\"2024-03-26T01:14:56\",\"upload_time_iso_8601\":\"2024-03-26T01:14:56.921017Z\",\"url\":\"https://files.pythonhosted.org/packages/10/fe/abb836b04b7eae44383f5616ed1c4c6e9aee9beecc3df4617f69f7e3adc5/agentops-0.1.0b4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3ac591c14d08000def551f70ccc1da9ab8b37f57561d24cf7fdf6cd3547610ee\",\"md5\":\"52a2212b79870ee48f0dbdad852dbb90\",\"sha256\":\"ed050e51137baa4f46769c77595e1cbe212bb86243f27a29b50218782a0d8242\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"52a2212b79870ee48f0dbdad852dbb90\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":24597,\"upload_time\":\"2024-04-02T00:56:17\",\"upload_time_iso_8601\":\"2024-04-02T00:56:17.570921Z\",\"url\":\"https://files.pythonhosted.org/packages/3a/c5/91c14d08000def551f70ccc1da9ab8b37f57561d24cf7fdf6cd3547610ee/agentops-0.1.0b5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"84d6f0bbe5883b86e749f2f02896d94054ebd84b4d66524e4b7004263ae21a6f\",\"md5\":\"89c6aa7864f45c17f42a38bb6fae904b\",\"sha256\":\"6ebe6a94f0898fd47521755b6c8083c5f6c0c8bb30d43441200b9ef67998ed01\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"89c6aa7864f45c17f42a38bb6fae904b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24624,\"upload_time\":\"2024-04-02T00:56:18\",\"upload_time_iso_8601\":\"2024-04-02T00:56:18.703411Z\",\"url\":\"https://files.pythonhosted.org/packages/84/d6/f0bbe5883b86e749f2f02896d94054ebd84b4d66524e4b7004263ae21a6f/agentops-0.1.0b5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3cc4ebdb56f0ff88ad20ddba765093aa6c1fc655a8f2bbafbcb2057f998d814f\",\"md5\":\"d117591df22735d1dedbdc034c93bff6\",\"sha256\":\"0d4fdb036836dddcce770cffcb2d564b0011a3307224d9a4675fc9bf80ffa5d2\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d117591df22735d1dedbdc034c93bff6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":24592,\"upload_time\":\"2024-04-02T03:20:11\",\"upload_time_iso_8601\":\"2024-04-02T03:20:11.132539Z\",\"url\":\"https://files.pythonhosted.org/packages/3c/c4/ebdb56f0ff88ad20ddba765093aa6c1fc655a8f2bbafbcb2057f998d814f/agentops-0.1.0b7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cbf0c32014a8ee12df4596ec4d90428e73e0cc5277d1b9bd2b53f815a7f0ea1f\",\"md5\":\"20364eb7d493e6f9b46666f36be8fb2f\",\"sha256\":\"938b29cd894ff38c7b1dee02f6422458702ccf8f3b69b69bc0e4220e42a33629\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"20364eb7d493e6f9b46666f36be8fb2f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24611,\"upload_time\":\"2024-04-02T03:20:12\",\"upload_time_iso_8601\":\"2024-04-02T03:20:12.490524Z\",\"url\":\"https://files.pythonhosted.org/packages/cb/f0/c32014a8ee12df4596ec4d90428e73e0cc5277d1b9bd2b53f815a7f0ea1f/agentops-0.1.0b7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ba13ff18b4ff72805bcbe7437aa445cde854a44b4b358564ed2b044678e270b9\",\"md5\":\"d4f77de8dd58468c6c307e735c1cfaa9\",\"sha256\":\"8afc0b7871d17f8cbe9996cab5ca10a8a3ed33a3406e1ddc257fadc214daa79a\"},\"downloads\":-1,\"filename\":\"agentops-0.1.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d4f77de8dd58468c6c307e735c1cfaa9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25189,\"upload_time\":\"2024-04-05T22:41:01\",\"upload_time_iso_8601\":\"2024-04-05T22:41:01.867983Z\",\"url\":\"https://files.pythonhosted.org/packages/ba/13/ff18b4ff72805bcbe7437aa445cde854a44b4b358564ed2b044678e270b9/agentops-0.1.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1dec1d2af6e33dd097feaf1e41a4d34c66d4e4e59ce35c5efac85c18614b9d4b\",\"md5\":\"f072d8700d4e22fc25eae8bb29a54d1f\",\"sha256\":\"001582703d5e6ffe67a51f9d67a303b5344e4ef8ca315f24aa43e0dd3d19f53b\"},\"downloads\":-1,\"filename\":\"agentops-0.1.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f072d8700d4e22fc25eae8bb29a54d1f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24831,\"upload_time\":\"2024-04-05T22:41:03\",\"upload_time_iso_8601\":\"2024-04-05T22:41:03.677234Z\",\"url\":\"https://files.pythonhosted.org/packages/1d/ec/1d2af6e33dd097feaf1e41a4d34c66d4e4e59ce35c5efac85c18614b9d4b/agentops-0.1.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cdf9a295ed62701dd4e56d5b57e45e0425db2bcea992c687534c9a2dd1e001f1\",\"md5\":\"8d82b9cb794b4b4a1e91ddece5447bcf\",\"sha256\":\"8b80800d4fa5a7a6c85c79f2bf39a50fb446ab8b209519bd51f44dee3b38517e\"},\"downloads\":-1,\"filename\":\"agentops-0.1.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8d82b9cb794b4b4a1e91ddece5447bcf\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":29769,\"upload_time\":\"2024-05-10T20:13:39\",\"upload_time_iso_8601\":\"2024-05-10T20:13:39.477237Z\",\"url\":\"https://files.pythonhosted.org/packages/cd/f9/a295ed62701dd4e56d5b57e45e0425db2bcea992c687534c9a2dd1e001f1/agentops-0.1.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f3788e027be4aa50f677a46bba1e0132f021e90d299c6eae093181a91679e378\",\"md5\":\"4dd3d1fd8c08efb1a08ae212ed9211d7\",\"sha256\":\"73fbd36cd5f3052d22e64dbea1fa9d70fb02658a901a600101801daa73f359f9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4dd3d1fd8c08efb1a08ae212ed9211d7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":30268,\"upload_time\":\"2024-05-10T20:14:25\",\"upload_time_iso_8601\":\"2024-05-10T20:14:25.258530Z\",\"url\":\"https://files.pythonhosted.org/packages/f3/78/8e027be4aa50f677a46bba1e0132f021e90d299c6eae093181a91679e378/agentops-0.1.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1ebfaaa31babe3bf687312592f99fe900e3808058658577bd1367b7df0332a08\",\"md5\":\"73c0b028248665a7927688fb8baa7680\",\"sha256\":\"e9411981a5d0b1190b93e3e1124db3ac6f17015c65a84b92a793f34d79b694c9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"73c0b028248665a7927688fb8baa7680\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":30952,\"upload_time\":\"2024-05-17T00:32:49\",\"upload_time_iso_8601\":\"2024-05-17T00:32:49.202597Z\",\"url\":\"https://files.pythonhosted.org/packages/1e/bf/aaa31babe3bf687312592f99fe900e3808058658577bd1367b7df0332a08/agentops-0.1.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6ee43f71a7d1d63595058cd6945e7b9e2de1b06ace04176a6723b7bfb37bf880\",\"md5\":\"36092e907e4f15a6bafd6788383df112\",\"sha256\":\"4a365ee56303b5b80d9de21fc13ccb7a3fe44544a6c165327bbfd9213bfe0191\"},\"downloads\":-1,\"filename\":\"agentops-0.1.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"36092e907e4f15a6bafd6788383df112\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":31256,\"upload_time\":\"2024-05-17T00:32:50\",\"upload_time_iso_8601\":\"2024-05-17T00:32:50.919974Z\",\"url\":\"https://files.pythonhosted.org/packages/6e/e4/3f71a7d1d63595058cd6945e7b9e2de1b06ace04176a6723b7bfb37bf880/agentops-0.1.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"67f5227dffbebeffd3b404db0dd71805f00814e458c0d081faf7a4e70c7e984f\",\"md5\":\"2591924de6f2e5580e4733b0e8336e2c\",\"sha256\":\"b4b47c990638b74810cc1c38624ada162094b46e3fdd63883642a16bc5258386\"},\"downloads\":-1,\"filename\":\"agentops-0.1.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2591924de6f2e5580e4733b0e8336e2c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":35605,\"upload_time\":\"2024-05-24T20:11:52\",\"upload_time_iso_8601\":\"2024-05-24T20:11:52.863109Z\",\"url\":\"https://files.pythonhosted.org/packages/67/f5/227dffbebeffd3b404db0dd71805f00814e458c0d081faf7a4e70c7e984f/agentops-0.1.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9f9ae6dc42ad8d40ad47c6116629b2cbda443d314327ab4d33e1044cb75ba88b\",\"md5\":\"4c2e76e7b6d4799ef4b464dee29e7255\",\"sha256\":\"c4f762482fb240fc3503907f52498f2d8d9e4f80236ee4a12bf039317a85fcd7\"},\"downloads\":-1,\"filename\":\"agentops-0.1.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4c2e76e7b6d4799ef4b464dee29e7255\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35103,\"upload_time\":\"2024-05-24T20:11:54\",\"upload_time_iso_8601\":\"2024-05-24T20:11:54.846567Z\",\"url\":\"https://files.pythonhosted.org/packages/9f/9a/e6dc42ad8d40ad47c6116629b2cbda443d314327ab4d33e1044cb75ba88b/agentops-0.1.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e709193dfe68c2d23de2c60dd0af2af336cbf81d3a3f0c175705783b4c1da580\",\"md5\":\"588d9877b9767546606d3d6d76d247fc\",\"sha256\":\"ec79e56889eadd2bab04dfe2f6a899a1b90dc347a66cc80488297368386105b4\"},\"downloads\":-1,\"filename\":\"agentops-0.1.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"588d9877b9767546606d3d6d76d247fc\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25359,\"upload_time\":\"2024-04-09T23:00:51\",\"upload_time_iso_8601\":\"2024-04-09T23:00:51.897995Z\",\"url\":\"https://files.pythonhosted.org/packages/e7/09/193dfe68c2d23de2c60dd0af2af336cbf81d3a3f0c175705783b4c1da580/agentops-0.1.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8acc872aba374093481bb40ed6b7531b1500b00138baf6bfb9ca7c20fb889d58\",\"md5\":\"80f8f7c56b1e1a6ff4c48877fe12dd12\",\"sha256\":\"d213e1037d2d319743889c2bdbc10dc068b0591e2c6c156f69019302490336d5\"},\"downloads\":-1,\"filename\":\"agentops-0.1.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"80f8f7c56b1e1a6ff4c48877fe12dd12\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24968,\"upload_time\":\"2024-04-09T23:00:53\",\"upload_time_iso_8601\":\"2024-04-09T23:00:53.227389Z\",\"url\":\"https://files.pythonhosted.org/packages/8a/cc/872aba374093481bb40ed6b7531b1500b00138baf6bfb9ca7c20fb889d58/agentops-0.1.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9701aad65170506dcf29606e9e619d2c0caaee565e5e8b14a791c3e0e86c6356\",\"md5\":\"4dc967275c884e2a5a1de8df448ae1c6\",\"sha256\":\"f1ca0f2c5156d826381e9ebd634555215c67e1cb344683abddb382e594f483e4\"},\"downloads\":-1,\"filename\":\"agentops-0.1.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"4dc967275c884e2a5a1de8df448ae1c6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25393,\"upload_time\":\"2024-04-09T23:24:20\",\"upload_time_iso_8601\":\"2024-04-09T23:24:20.821465Z\",\"url\":\"https://files.pythonhosted.org/packages/97/01/aad65170506dcf29606e9e619d2c0caaee565e5e8b14a791c3e0e86c6356/agentops-0.1.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5e22afde273bcf52cfc6581fba804b44eeebea6ff2ae774f0e5917fa1dd3ee09\",\"md5\":\"624c9b63dbe56c8b1dd535e1b20ada81\",\"sha256\":\"dd65e80ec70accfac0692171199b6ecfa37a7d109a3c25f2191c0934b5004114\"},\"downloads\":-1,\"filename\":\"agentops-0.1.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"624c9b63dbe56c8b1dd535e1b20ada81\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24994,\"upload_time\":\"2024-04-09T23:24:22\",\"upload_time_iso_8601\":\"2024-04-09T23:24:22.610198Z\",\"url\":\"https://files.pythonhosted.org/packages/5e/22/afde273bcf52cfc6581fba804b44eeebea6ff2ae774f0e5917fa1dd3ee09/agentops-0.1.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"50313e20afb169e707941cc3342cecb88060aa8746e95d72a202fd90ac4096b6\",\"md5\":\"3f64b736522ea40c35db6d2a609fc54f\",\"sha256\":\"476a5e795a6cc87858a0885be61b1e05eed21e4c6ab47f20348c48717c2ac454\"},\"downloads\":-1,\"filename\":\"agentops-0.1.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"3f64b736522ea40c35db6d2a609fc54f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25558,\"upload_time\":\"2024-04-11T19:26:01\",\"upload_time_iso_8601\":\"2024-04-11T19:26:01.162829Z\",\"url\":\"https://files.pythonhosted.org/packages/50/31/3e20afb169e707941cc3342cecb88060aa8746e95d72a202fd90ac4096b6/agentops-0.1.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e0688b1a21f72b85c9bdd56da4223c991bdfb5d0c2accd9ddd326616bf952795\",\"md5\":\"6f4601047f3e2080b4f7363ff84f15f3\",\"sha256\":\"d55e64953f84654d44557b496a3b3744a20449b854af84fa83a15be75b362b3d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"6f4601047f3e2080b4f7363ff84f15f3\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25390,\"upload_time\":\"2024-04-11T19:26:02\",\"upload_time_iso_8601\":\"2024-04-11T19:26:02.991657Z\",\"url\":\"https://files.pythonhosted.org/packages/e0/68/8b1a21f72b85c9bdd56da4223c991bdfb5d0c2accd9ddd326616bf952795/agentops-0.1.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"641c742793fa77c803e5667830ccd34b8d313d11f361a105fe92ce68d871cc5f\",\"md5\":\"964421a604c67c07b5c72b70ceee6ce8\",\"sha256\":\"bc65dd4cd85d1ffcba195f2490b5a4380d0b565dd0f4a71ecc64ed96a7fe1eee\"},\"downloads\":-1,\"filename\":\"agentops-0.1.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"964421a604c67c07b5c72b70ceee6ce8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25793,\"upload_time\":\"2024-04-20T01:56:23\",\"upload_time_iso_8601\":\"2024-04-20T01:56:23.089343Z\",\"url\":\"https://files.pythonhosted.org/packages/64/1c/742793fa77c803e5667830ccd34b8d313d11f361a105fe92ce68d871cc5f/agentops-0.1.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"62beabcb235daf34d4740961c4ad295b8dfb8a053ac6a1e341394e36f722ea89\",\"md5\":\"3ff7fa3135bc5c4254aaa99e3cc00dc8\",\"sha256\":\"17f0a573362d9c4770846874a4091662304d6889e21ca6a7dd747be48b9c8597\"},\"downloads\":-1,\"filename\":\"agentops-0.1.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3ff7fa3135bc5c4254aaa99e3cc00dc8\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25664,\"upload_time\":\"2024-04-20T01:56:24\",\"upload_time_iso_8601\":\"2024-04-20T01:56:24.303013Z\",\"url\":\"https://files.pythonhosted.org/packages/62/be/abcb235daf34d4740961c4ad295b8dfb8a053ac6a1e341394e36f722ea89/agentops-0.1.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"430b9f3fcfc2f9778dbbfc1fd68b223e9a91938505ef987e17b93a631bb6b2e4\",\"md5\":\"28ce2e6aa7a4598fa1e764d9762fd030\",\"sha256\":\"9dff841ef71f5fad2d897012a00f50011a706970e0e5eaae9d7b0540a637b128\"},\"downloads\":-1,\"filename\":\"agentops-0.1.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"28ce2e6aa7a4598fa1e764d9762fd030\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":26154,\"upload_time\":\"2024-04-20T03:48:58\",\"upload_time_iso_8601\":\"2024-04-20T03:48:58.494391Z\",\"url\":\"https://files.pythonhosted.org/packages/43/0b/9f3fcfc2f9778dbbfc1fd68b223e9a91938505ef987e17b93a631bb6b2e4/agentops-0.1.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a6c2b437246ce28bad9c2bbad9a9371f7008f76a979fb19699588212f653daf9\",\"md5\":\"fc81fd641ad630a17191d4a9cf77193b\",\"sha256\":\"48ddb49fc01eb83ce151d3f08ae670b3d603c454aa35b4ea145f2dc15e081b36\"},\"downloads\":-1,\"filename\":\"agentops-0.1.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fc81fd641ad630a17191d4a9cf77193b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25792,\"upload_time\":\"2024-04-20T03:48:59\",\"upload_time_iso_8601\":\"2024-04-20T03:48:59.957150Z\",\"url\":\"https://files.pythonhosted.org/packages/a6/c2/b437246ce28bad9c2bbad9a9371f7008f76a979fb19699588212f653daf9/agentops-0.1.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1ca529570477f62973c6b835e09dc5bbda7498c1a26ba7a428cdb08a71ae86ca\",\"md5\":\"a1962d1bb72c6fd00e67e83fe56a3692\",\"sha256\":\"ce7a9e89dcf17507ee6db85017bef8f87fc4e8a23745f3f73e1fbda5489fb6f9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a1962d1bb72c6fd00e67e83fe56a3692\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.10\",\"size\":27891,\"upload_time\":\"2024-05-03T19:21:38\",\"upload_time_iso_8601\":\"2024-05-03T19:21:38.018602Z\",\"url\":\"https://files.pythonhosted.org/packages/1c/a5/29570477f62973c6b835e09dc5bbda7498c1a26ba7a428cdb08a71ae86ca/agentops-0.1.7-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Introduced + breaking bug\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b2447ce75e71fcc9605a609b41adc52d517eba4356d15f7ca77d46f683ca07f1\",\"md5\":\"9a9bb22af4b30c454d46b9a01e8701a0\",\"sha256\":\"70d22e9a71ea13af6e6ad9c1cffe63c98f9dbccf91bda199825609379b2babaf\"},\"downloads\":-1,\"filename\":\"agentops-0.1.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9a9bb22af4b30c454d46b9a01e8701a0\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.10\",\"size\":28122,\"upload_time\":\"2024-05-03T19:21:39\",\"upload_time_iso_8601\":\"2024-05-03T19:21:39.415523Z\",\"url\":\"https://files.pythonhosted.org/packages/b2/44/7ce75e71fcc9605a609b41adc52d517eba4356d15f7ca77d46f683ca07f1/agentops-0.1.7.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Introduced + breaking bug\"}],\"0.1.8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"38c63d0d19eeae4c3c9e3ff5957b10c3c16a4a9fd2be6673fbfc965f8bb4fd08\",\"md5\":\"e12d3d92f51f5b2fed11a01742e5b5b5\",\"sha256\":\"d49d113028a891d50900bb4fae253218cc49519f7fe39f9ea15f8f2b29d6d7ef\"},\"downloads\":-1,\"filename\":\"agentops-0.1.8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"e12d3d92f51f5b2fed11a01742e5b5b5\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.10\",\"size\":27977,\"upload_time\":\"2024-05-04T03:01:53\",\"upload_time_iso_8601\":\"2024-05-04T03:01:53.905081Z\",\"url\":\"https://files.pythonhosted.org/packages/38/c6/3d0d19eeae4c3c9e3ff5957b10c3c16a4a9fd2be6673fbfc965f8bb4fd08/agentops-0.1.8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9269e51fa1714f169f692e4fad0a42ebeb77c7a27c48f62b751c869ad6441c69\",\"md5\":\"07dbdb45f9ec086b1bc314d6a8264423\",\"sha256\":\"5762137a84e2309e1b6ca9a0fd72c8b72c90f6f73ba49549980722221960cac8\"},\"downloads\":-1,\"filename\":\"agentops-0.1.8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"07dbdb45f9ec086b1bc314d6a8264423\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.10\",\"size\":28189,\"upload_time\":\"2024-05-04T03:01:55\",\"upload_time_iso_8601\":\"2024-05-04T03:01:55.328668Z\",\"url\":\"https://files.pythonhosted.org/packages/92/69/e51fa1714f169f692e4fad0a42ebeb77c7a27c48f62b751c869ad6441c69/agentops-0.1.8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.9\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eb5a920e71729bd1f06b002ee146b38b0d1862357a1f484628e6b20a7d3dcca1\",\"md5\":\"6ae4929d91c4bb8025edc86b5322630c\",\"sha256\":\"af7983ba4929b04a34714dd97d7e82c11384ebbe9d7d8bc7b673e1263c4c79a1\"},\"downloads\":-1,\"filename\":\"agentops-0.1.9-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"6ae4929d91c4bb8025edc86b5322630c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":28458,\"upload_time\":\"2024-05-07T07:07:30\",\"upload_time_iso_8601\":\"2024-05-07T07:07:30.798380Z\",\"url\":\"https://files.pythonhosted.org/packages/eb/5a/920e71729bd1f06b002ee146b38b0d1862357a1f484628e6b20a7d3dcca1/agentops-0.1.9-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"df2b8fc76d629d8a83b0796612a27b966426550114c930eee5d730654fcd9fe9\",\"md5\":\"43090632f87cd398ed77b57daa8c28d6\",\"sha256\":\"7f428bfda2db57a994029b1c9f72b63ca7660616635c9c671b2b729d112a833e\"},\"downloads\":-1,\"filename\":\"agentops-0.1.9.tar.gz\",\"has_sig\":false,\"md5_digest\":\"43090632f87cd398ed77b57daa8c28d6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":28596,\"upload_time\":\"2024-05-07T07:07:35\",\"upload_time_iso_8601\":\"2024-05-07T07:07:35.242350Z\",\"url\":\"https://files.pythonhosted.org/packages/df/2b/8fc76d629d8a83b0796612a27b966426550114c930eee5d730654fcd9fe9/agentops-0.1.9.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"483560ec38a81a7e9588d32730ed4f581621169216f968771d5f611388f68a9b\",\"md5\":\"bdda5480977cccd55628e117e8c8da04\",\"sha256\":\"bee84bf046c9b4346c5f0f50e2087a992e8d2eae80b3fe9f01c456b49c299bcc\"},\"downloads\":-1,\"filename\":\"agentops-0.2.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bdda5480977cccd55628e117e8c8da04\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":35921,\"upload_time\":\"2024-05-28T22:04:14\",\"upload_time_iso_8601\":\"2024-05-28T22:04:14.813154Z\",\"url\":\"https://files.pythonhosted.org/packages/48/35/60ec38a81a7e9588d32730ed4f581621169216f968771d5f611388f68a9b/agentops-0.2.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8d7591c79141d31da4e56d6c6a00737b50dcc2f1ce8a711c1293d2a1d70478fc\",\"md5\":\"71e3c3b9fe0286c9b58d81ba1c12a42d\",\"sha256\":\"ca340136abff6a3727729c3eda87f0768e5ba2b672ce03320cb52ad138b05598\"},\"downloads\":-1,\"filename\":\"agentops-0.2.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"71e3c3b9fe0286c9b58d81ba1c12a42d\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35498,\"upload_time\":\"2024-05-28T22:04:16\",\"upload_time_iso_8601\":\"2024-05-28T22:04:16.598374Z\",\"url\":\"https://files.pythonhosted.org/packages/8d/75/91c79141d31da4e56d6c6a00737b50dcc2f1ce8a711c1293d2a1d70478fc/agentops-0.2.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fa3b84032b7dca3d7315b329db6681bbfe0872c2a46d62ca992a05f2d6a078e1\",\"md5\":\"ce3fc46711fa8225a3d6a9566f95f875\",\"sha256\":\"7dde95db92c8306c0a17e193bfb5ee20e71e16630ccc629db685e148b3aca3f6\"},\"downloads\":-1,\"filename\":\"agentops-0.2.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ce3fc46711fa8225a3d6a9566f95f875\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36375,\"upload_time\":\"2024-06-03T18:40:02\",\"upload_time_iso_8601\":\"2024-06-03T18:40:02.820700Z\",\"url\":\"https://files.pythonhosted.org/packages/fa/3b/84032b7dca3d7315b329db6681bbfe0872c2a46d62ca992a05f2d6a078e1/agentops-0.2.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d6286ad330da5736588a54575fde95502006da58c3e9f4f15933f5876c1e1482\",\"md5\":\"faa972c26a3e59fb6ca04f253165da22\",\"sha256\":\"9f18a36a79c04e9c06f6e96aefe75f0fb1d08e562873315d6cb945488306e515\"},\"downloads\":-1,\"filename\":\"agentops-0.2.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"faa972c26a3e59fb6ca04f253165da22\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35784,\"upload_time\":\"2024-06-03T18:40:05\",\"upload_time_iso_8601\":\"2024-06-03T18:40:05.431174Z\",\"url\":\"https://files.pythonhosted.org/packages/d6/28/6ad330da5736588a54575fde95502006da58c3e9f4f15933f5876c1e1482/agentops-0.2.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fbe73a57dd30e354b7bcc5a86908fc92aa16378035c69eb225ce254387940b5d\",\"md5\":\"c24e4656bb6de14ffb9d810fe7872829\",\"sha256\":\"57aab8a5d76a0dd7b1f0b14e90e778c42444eeaf5c48f2f387719735d7d840ee\"},\"downloads\":-1,\"filename\":\"agentops-0.2.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c24e4656bb6de14ffb9d810fe7872829\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36588,\"upload_time\":\"2024-06-05T19:30:29\",\"upload_time_iso_8601\":\"2024-06-05T19:30:29.208415Z\",\"url\":\"https://files.pythonhosted.org/packages/fb/e7/3a57dd30e354b7bcc5a86908fc92aa16378035c69eb225ce254387940b5d/agentops-0.2.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"89c51cbd038b9d2898b7f1b05943c338aa4aa9654d7e7763d8fa8d73a25fbfb6\",\"md5\":\"401bfce001638cc26d7975f6534b5bab\",\"sha256\":\"d4135c96ad7ec39c81015b3e33dfa977d2d846a685aba0d1922d2d6e3dca7fff\"},\"downloads\":-1,\"filename\":\"agentops-0.2.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"401bfce001638cc26d7975f6534b5bab\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":36012,\"upload_time\":\"2024-06-05T19:30:31\",\"upload_time_iso_8601\":\"2024-06-05T19:30:31.173781Z\",\"url\":\"https://files.pythonhosted.org/packages/89/c5/1cbd038b9d2898b7f1b05943c338aa4aa9654d7e7763d8fa8d73a25fbfb6/agentops-0.2.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b66fb36e2bb7158f45b6c496ce3cec50ef861e130cfa3ec8c62e709d63fa9e94\",\"md5\":\"b3f6a8d97cc0129a9e4730b7810509c6\",\"sha256\":\"a1829a21301223c26464cbc9da5bfba2f3750e21238912ee1d2f3097c358859a\"},\"downloads\":-1,\"filename\":\"agentops-0.2.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b3f6a8d97cc0129a9e4730b7810509c6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36986,\"upload_time\":\"2024-06-13T19:56:33\",\"upload_time_iso_8601\":\"2024-06-13T19:56:33.675807Z\",\"url\":\"https://files.pythonhosted.org/packages/b6/6f/b36e2bb7158f45b6c496ce3cec50ef861e130cfa3ec8c62e709d63fa9e94/agentops-0.2.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f4d34aed81a4ec4251131b94fb8ed4edf0823922bfda66ba0e4c43d9452111d2\",\"md5\":\"466abe04d466a950d4bcebbe9c3ccc27\",\"sha256\":\"b502b83bb4954386a28c4304028ba8cd2b45303f7e1f84720477b521267a3b4e\"},\"downloads\":-1,\"filename\":\"agentops-0.2.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"466abe04d466a950d4bcebbe9c3ccc27\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37024,\"upload_time\":\"2024-06-13T19:56:35\",\"upload_time_iso_8601\":\"2024-06-13T19:56:35.481794Z\",\"url\":\"https://files.pythonhosted.org/packages/f4/d3/4aed81a4ec4251131b94fb8ed4edf0823922bfda66ba0e4c43d9452111d2/agentops-0.2.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a4d4e91fb66bc2eb7effb53f7d9481da04e60809d10240306452a8307aca7985\",\"md5\":\"f1ba1befb6bd854d5fd6f670937dcb55\",\"sha256\":\"96162c28cc0391011c04e654273e5a96ec4dcf015e27a7ac12a1ea4077d38950\"},\"downloads\":-1,\"filename\":\"agentops-0.2.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f1ba1befb6bd854d5fd6f670937dcb55\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37518,\"upload_time\":\"2024-06-24T19:31:58\",\"upload_time_iso_8601\":\"2024-06-24T19:31:58.838680Z\",\"url\":\"https://files.pythonhosted.org/packages/a4/d4/e91fb66bc2eb7effb53f7d9481da04e60809d10240306452a8307aca7985/agentops-0.2.4-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Potential + breaking change\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8e4b920629e08c956cdc74a31ab466d005eb13d86c2d58fa2d2bd261cf36c37b\",\"md5\":\"527c82f21f01f13b879a1fca90ddb209\",\"sha256\":\"d263de21eb40e15eb17adc31821fc0dee4ff4ca4501a9feb7ed376d473063208\"},\"downloads\":-1,\"filename\":\"agentops-0.2.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"527c82f21f01f13b879a1fca90ddb209\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37656,\"upload_time\":\"2024-06-24T19:32:01\",\"upload_time_iso_8601\":\"2024-06-24T19:32:01.155014Z\",\"url\":\"https://files.pythonhosted.org/packages/8e/4b/920629e08c956cdc74a31ab466d005eb13d86c2d58fa2d2bd261cf36c37b/agentops-0.2.4.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Potential + breaking change\"}],\"0.2.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"47c73ab9d7d971b664a9bdff6e6464afb6c1de8eb0f845d8de93eb036d5dcc60\",\"md5\":\"bed576cc1591da4783777920fb223761\",\"sha256\":\"ff87b82d1efaf50b10624e00c6e9334f4c16ffe08ec7f9889b4417c231c31471\"},\"downloads\":-1,\"filename\":\"agentops-0.2.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bed576cc1591da4783777920fb223761\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37529,\"upload_time\":\"2024-06-26T22:57:15\",\"upload_time_iso_8601\":\"2024-06-26T22:57:15.646328Z\",\"url\":\"https://files.pythonhosted.org/packages/47/c7/3ab9d7d971b664a9bdff6e6464afb6c1de8eb0f845d8de93eb036d5dcc60/agentops-0.2.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"31c48f2af30ae75dbdb4697506f80f76ce786f79014deb8c6679fa62962fdd6f\",\"md5\":\"42def99798edfaf201fa6f62846e77c5\",\"sha256\":\"6bad7aca37af6174307769550a53ec00824049a57e97b8868a9a213b2272adb4\"},\"downloads\":-1,\"filename\":\"agentops-0.2.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"42def99798edfaf201fa6f62846e77c5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37703,\"upload_time\":\"2024-06-26T22:57:17\",\"upload_time_iso_8601\":\"2024-06-26T22:57:17.337904Z\",\"url\":\"https://files.pythonhosted.org/packages/31/c4/8f2af30ae75dbdb4697506f80f76ce786f79014deb8c6679fa62962fdd6f/agentops-0.2.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5af2f90538b00d887c04a5570e8a3af4aef27a600a67c058a0ee6befafd60748\",\"md5\":\"8ef3ed13ed582346b71648ca9df30f7c\",\"sha256\":\"59e88000a9f108931fd68056f22def7a7f4b3015906de5791e777c23ba7dee52\"},\"downloads\":-1,\"filename\":\"agentops-0.2.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8ef3ed13ed582346b71648ca9df30f7c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37534,\"upload_time\":\"2024-06-28T21:41:56\",\"upload_time_iso_8601\":\"2024-06-28T21:41:56.933334Z\",\"url\":\"https://files.pythonhosted.org/packages/5a/f2/f90538b00d887c04a5570e8a3af4aef27a600a67c058a0ee6befafd60748/agentops-0.2.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"bcf412c388dccc301ad54a501843ba5b5dd359575dcef9ac24c18a619a32214d\",\"md5\":\"89a6b04f12801682b53ee0133593ce74\",\"sha256\":\"7906a08c9154355484deb173b82631f9acddec3775b2d5e8ca946abdee27183b\"},\"downloads\":-1,\"filename\":\"agentops-0.2.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"89a6b04f12801682b53ee0133593ce74\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37874,\"upload_time\":\"2024-06-28T21:41:59\",\"upload_time_iso_8601\":\"2024-06-28T21:41:59.143953Z\",\"url\":\"https://files.pythonhosted.org/packages/bc/f4/12c388dccc301ad54a501843ba5b5dd359575dcef9ac24c18a619a32214d/agentops-0.2.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b8e996f12ac457f46c370c6f70f344e975d534f2c92853703ee29802f0127024\",\"md5\":\"d9c6995a843b49ac7eb6f500fa1f3c2a\",\"sha256\":\"22aeb3355e66b32a2b2a9f676048b81979b2488feddb088f9266034b3ed50539\"},\"downloads\":-1,\"filename\":\"agentops-0.3.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9c6995a843b49ac7eb6f500fa1f3c2a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39430,\"upload_time\":\"2024-07-17T18:38:24\",\"upload_time_iso_8601\":\"2024-07-17T18:38:24.763919Z\",\"url\":\"https://files.pythonhosted.org/packages/b8/e9/96f12ac457f46c370c6f70f344e975d534f2c92853703ee29802f0127024/agentops-0.3.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7e2d6fda9613562c0394d7ef3dd8f0cb9fc4ebaa8d413862fce33940c73564d6\",\"md5\":\"8fa67ca01ca726e3bfcd66898313f33f\",\"sha256\":\"6c0c08a57410fa5e826a7bafa1deeba9f7b3524709427d9e1abbd0964caaf76b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8fa67ca01ca726e3bfcd66898313f33f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":41734,\"upload_time\":\"2024-07-17T18:38:26\",\"upload_time_iso_8601\":\"2024-07-17T18:38:26.447237Z\",\"url\":\"https://files.pythonhosted.org/packages/7e/2d/6fda9613562c0394d7ef3dd8f0cb9fc4ebaa8d413862fce33940c73564d6/agentops-0.3.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eb5e3ac36b33d3e95747d64effd509f66a9b3b76b47216b16f492e27d8d90b0c\",\"md5\":\"6fade0b81fc65b2c79a869b5f240590b\",\"sha256\":\"b304d366691281e08c1f02307aabdd551ae4f68b0de82bbbb4cf6f651af2dd16\"},\"downloads\":-1,\"filename\":\"agentops-0.3.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"6fade0b81fc65b2c79a869b5f240590b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":41201,\"upload_time\":\"2024-08-19T20:51:49\",\"upload_time_iso_8601\":\"2024-08-19T20:51:49.487947Z\",\"url\":\"https://files.pythonhosted.org/packages/eb/5e/3ac36b33d3e95747d64effd509f66a9b3b76b47216b16f492e27d8d90b0c/agentops-0.3.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8367ca0cb01df6b529f0127d23ec661e92c95ff68faf544439d86ec2331f3a52\",\"md5\":\"639da9c2a3381cb3f62812bfe48a5e57\",\"sha256\":\"40f895019f29bc5a6c023110cbec32870e5edb3e3926f8100974db8d3e299e2a\"},\"downloads\":-1,\"filename\":\"agentops-0.3.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"639da9c2a3381cb3f62812bfe48a5e57\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":45332,\"upload_time\":\"2024-08-19T20:51:50\",\"upload_time_iso_8601\":\"2024-08-19T20:51:50.714217Z\",\"url\":\"https://files.pythonhosted.org/packages/83/67/ca0cb01df6b529f0127d23ec661e92c95ff68faf544439d86ec2331f3a52/agentops-0.3.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0b078e6a74f084463def9d79d2c84d79475adc0229bbfb2e57401b0616ba6d6a\",\"md5\":\"e760d867d9431d1bc13798024237ab99\",\"sha256\":\"75fe10b8fc86c7f5c2633139ac1c06959611f22434fc1aaa8688c3c223fde8b5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"e760d867d9431d1bc13798024237ab99\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50252,\"upload_time\":\"2024-09-17T21:57:23\",\"upload_time_iso_8601\":\"2024-09-17T21:57:23.085964Z\",\"url\":\"https://files.pythonhosted.org/packages/0b/07/8e6a74f084463def9d79d2c84d79475adc0229bbfb2e57401b0616ba6d6a/agentops-0.3.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3746057c552ea7ded5c954bdcbaf8a7dca07b6109633e040bf33de5f97a1289b\",\"md5\":\"3b661fb76d343ec3bdef5b70fc9e5cc3\",\"sha256\":\"38a2ffeeac1d722cb72c32d70e1c840424902b57934c647ef10de15478fe8f27\"},\"downloads\":-1,\"filename\":\"agentops-0.3.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3b661fb76d343ec3bdef5b70fc9e5cc3\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48018,\"upload_time\":\"2024-09-17T21:57:24\",\"upload_time_iso_8601\":\"2024-09-17T21:57:24.699442Z\",\"url\":\"https://files.pythonhosted.org/packages/37/46/057c552ea7ded5c954bdcbaf8a7dca07b6109633e040bf33de5f97a1289b/agentops-0.3.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ac0a9004d7a8c2865ed804ddd6968095ef100ac554bc51ada7a2f3c0b4e9142b\",\"md5\":\"be18cdad4333c6013d9584b84b4c7875\",\"sha256\":\"4767def30de5dd97397728efcb50398a4f6d6823c1b534846f0a9b0cb85a6d45\"},\"downloads\":-1,\"filename\":\"agentops-0.3.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"be18cdad4333c6013d9584b84b4c7875\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50794,\"upload_time\":\"2024-09-23T19:30:49\",\"upload_time_iso_8601\":\"2024-09-23T19:30:49.050650Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/0a/9004d7a8c2865ed804ddd6968095ef100ac554bc51ada7a2f3c0b4e9142b/agentops-0.3.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2c6d4f640d9fadd22f8cd7cb9857eed1f56d422f11b130ba226b947454eb0f0b\",\"md5\":\"91aa981d4199ac73b4d7407547667e2f\",\"sha256\":\"11ce3048656b5d146d02a4890dd50c8d2801ca5ad5caccab17d573cd8eea6e83\"},\"downloads\":-1,\"filename\":\"agentops-0.3.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"91aa981d4199ac73b4d7407547667e2f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48525,\"upload_time\":\"2024-09-23T19:30:50\",\"upload_time_iso_8601\":\"2024-09-23T19:30:50.568151Z\",\"url\":\"https://files.pythonhosted.org/packages/2c/6d/4f640d9fadd22f8cd7cb9857eed1f56d422f11b130ba226b947454eb0f0b/agentops-0.3.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"68efa3b8adc0de2e7daa1e6e2734af9a0e37c90e3346b8a804e3fdc322c82b6c\",\"md5\":\"948e9278dfc02e1a6ba2ec563296779a\",\"sha256\":\"81bfdfedd990fbc3064ee42a67422ddbee07b6cd96c5fca7e124eb8c1e0cebdc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"948e9278dfc02e1a6ba2ec563296779a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50813,\"upload_time\":\"2024-10-02T18:32:59\",\"upload_time_iso_8601\":\"2024-10-02T18:32:59.208892Z\",\"url\":\"https://files.pythonhosted.org/packages/68/ef/a3b8adc0de2e7daa1e6e2734af9a0e37c90e3346b8a804e3fdc322c82b6c/agentops-0.3.13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3511fb06b4cee96285a5f745809d0f4efddef70d2a82112a633ed53834d6fc64\",\"md5\":\"27a923eaceb4ae35abe2cf1aed1b8241\",\"sha256\":\"319b7325fb79004ce996191aa21f0982489be22cc1acc2f3f6d02cdff1db2429\"},\"downloads\":-1,\"filename\":\"agentops-0.3.13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"27a923eaceb4ae35abe2cf1aed1b8241\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48559,\"upload_time\":\"2024-10-02T18:33:00\",\"upload_time_iso_8601\":\"2024-10-02T18:33:00.614409Z\",\"url\":\"https://files.pythonhosted.org/packages/35/11/fb06b4cee96285a5f745809d0f4efddef70d2a82112a633ed53834d6fc64/agentops-0.3.13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.14\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1c2775ab5bf99341a6a02775e3858f54a18cbcda0f35b5c6c0f114a829d62b8e\",\"md5\":\"ad2d676d293c4baa1f9afecc61654e50\",\"sha256\":\"f4a2fcf1a7caf1d5383bfb66d8a9d567f3cb88fc7495cfd81ade167b0c06a4ea\"},\"downloads\":-1,\"filename\":\"agentops-0.3.14-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ad2d676d293c4baa1f9afecc61654e50\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50825,\"upload_time\":\"2024-10-14T23:53:48\",\"upload_time_iso_8601\":\"2024-10-14T23:53:48.464714Z\",\"url\":\"https://files.pythonhosted.org/packages/1c/27/75ab5bf99341a6a02775e3858f54a18cbcda0f35b5c6c0f114a829d62b8e/agentops-0.3.14-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"46cb183fdaf40ae97ac1806ba91f6f23d55dc0a1a5cdf0881a5c834c8ca7175a\",\"md5\":\"b90053253770c8e1c385b18e7172d58f\",\"sha256\":\"fcb515e5743d73efee851b687692bed74797dc88e29a8327b2bbfb21d73a7447\"},\"downloads\":-1,\"filename\":\"agentops-0.3.14.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b90053253770c8e1c385b18e7172d58f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48548,\"upload_time\":\"2024-10-14T23:53:50\",\"upload_time_iso_8601\":\"2024-10-14T23:53:50.306080Z\",\"url\":\"https://files.pythonhosted.org/packages/46/cb/183fdaf40ae97ac1806ba91f6f23d55dc0a1a5cdf0881a5c834c8ca7175a/agentops-0.3.14.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.15\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eadebed95f173bd304abe219b2b0a6f4e1f8e38b6733b19f2444a30fe2e731e1\",\"md5\":\"7a46ccd127ffcd52eff26edaf5721bd9\",\"sha256\":\"d5617108bbd9871a4250415f4e536ba33c2a6a2d2bec9342046303fb9e839f9d\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7a46ccd127ffcd52eff26edaf5721bd9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55349,\"upload_time\":\"2024-11-09T01:18:40\",\"upload_time_iso_8601\":\"2024-11-09T01:18:40.622134Z\",\"url\":\"https://files.pythonhosted.org/packages/ea/de/bed95f173bd304abe219b2b0a6f4e1f8e38b6733b19f2444a30fe2e731e1/agentops-0.3.15-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"33a40ef511dc3f23bba2d345b464223b1e7acc3c2a29230a93abb8fbcb6faebf\",\"md5\":\"7af7abcf01e8d3ef64ac287e9300528f\",\"sha256\":\"4358f85929d55929002cae589323d36b68fc4d12d0ea5010a80bfc4c7addc0ec\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15.tar.gz\",\"has_sig\":false,\"md5_digest\":\"7af7abcf01e8d3ef64ac287e9300528f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51296,\"upload_time\":\"2024-11-09T01:18:42\",\"upload_time_iso_8601\":\"2024-11-09T01:18:42.358185Z\",\"url\":\"https://files.pythonhosted.org/packages/33/a4/0ef511dc3f23bba2d345b464223b1e7acc3c2a29230a93abb8fbcb6faebf/agentops-0.3.15.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.15rc1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0978ac2f89ccb7b3a31742f5b70434953faff168da6cab67c0836f432919c762\",\"md5\":\"7f805adf76594ac4bc169b1a111817f4\",\"sha256\":\"86069387a265bc6c5fa00ffbb3f8a131254a51ee3a9b8b35af4aca823dee76f1\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15rc1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7f805adf76594ac4bc169b1a111817f4\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50798,\"upload_time\":\"2024-10-31T04:36:11\",\"upload_time_iso_8601\":\"2024-10-31T04:36:11.059082Z\",\"url\":\"https://files.pythonhosted.org/packages/09/78/ac2f89ccb7b3a31742f5b70434953faff168da6cab67c0836f432919c762/agentops-0.3.15rc1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4317d6950ad32c33317509ea05a64d01ab661515165ffbd4e120148826b69ffb\",\"md5\":\"5f131294c10c9b60b33ec93edc106f4f\",\"sha256\":\"897ab94ae4fca8f1711216f9317dbf6f14e5d018c866086ef0b8831dc125e4ad\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15rc1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"5f131294c10c9b60b33ec93edc106f4f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48739,\"upload_time\":\"2024-10-31T04:36:12\",\"upload_time_iso_8601\":\"2024-10-31T04:36:12.630857Z\",\"url\":\"https://files.pythonhosted.org/packages/43/17/d6950ad32c33317509ea05a64d01ab661515165ffbd4e120148826b69ffb/agentops-0.3.15rc1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.16\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b876e1c933480ec9ad093a841321e5c9f7f16a0af59f339ba2c840851b1af01d\",\"md5\":\"d57593bb32704fae1163656f03355a71\",\"sha256\":\"7763e65efe053fa81cea2a2e16f015c7603365280972e0c0709eec32c3c8569e\"},\"downloads\":-1,\"filename\":\"agentops-0.3.16-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d57593bb32704fae1163656f03355a71\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55351,\"upload_time\":\"2024-11-09T18:44:21\",\"upload_time_iso_8601\":\"2024-11-09T18:44:21.626158Z\",\"url\":\"https://files.pythonhosted.org/packages/b8/76/e1c933480ec9ad093a841321e5c9f7f16a0af59f339ba2c840851b1af01d/agentops-0.3.16-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"aa748e77e654b37a5e0c977eca4f7e92740c1e24be39c827815e7bd8da429003\",\"md5\":\"23078e1dc78ef459a667feeb904345c1\",\"sha256\":\"564163eb048939d64e848c7e6caf25d6c0aee31200623ef97efe492f090f8939\"},\"downloads\":-1,\"filename\":\"agentops-0.3.16.tar.gz\",\"has_sig\":false,\"md5_digest\":\"23078e1dc78ef459a667feeb904345c1\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51308,\"upload_time\":\"2024-11-09T18:44:23\",\"upload_time_iso_8601\":\"2024-11-09T18:44:23.037514Z\",\"url\":\"https://files.pythonhosted.org/packages/aa/74/8e77e654b37a5e0c977eca4f7e92740c1e24be39c827815e7bd8da429003/agentops-0.3.16.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.17\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6c3038a659671eec20fcae759bd69655ec45b08c4e875627b33e3b05bd46f299\",\"md5\":\"93bbe3bd4ee492e7e73780c07897b017\",\"sha256\":\"0d24dd082270a76c98ad0391101d5b5c3d01e389c5032389ecd551285e4b0662\"},\"downloads\":-1,\"filename\":\"agentops-0.3.17-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"93bbe3bd4ee492e7e73780c07897b017\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55503,\"upload_time\":\"2024-11-10T02:39:28\",\"upload_time_iso_8601\":\"2024-11-10T02:39:28.884052Z\",\"url\":\"https://files.pythonhosted.org/packages/6c/30/38a659671eec20fcae759bd69655ec45b08c4e875627b33e3b05bd46f299/agentops-0.3.17-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2131d9a3747df04b7915ee1cffaa4a5636f8ed0e1385e5236b0da085ccce936a\",\"md5\":\"49e8cf186203cadaa39301c4ce5fda42\",\"sha256\":\"a893cc7c37eda720ab59e8facaa2774cc23d125648aa00539ae485ff592e8b77\"},\"downloads\":-1,\"filename\":\"agentops-0.3.17.tar.gz\",\"has_sig\":false,\"md5_digest\":\"49e8cf186203cadaa39301c4ce5fda42\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51469,\"upload_time\":\"2024-11-10T02:39:30\",\"upload_time_iso_8601\":\"2024-11-10T02:39:30.636907Z\",\"url\":\"https://files.pythonhosted.org/packages/21/31/d9a3747df04b7915ee1cffaa4a5636f8ed0e1385e5236b0da085ccce936a/agentops-0.3.17.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.18\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"978dbd4cad95dad722dc2d3e4179feab1058ef846828c0e15e51e8bfaea373ee\",\"md5\":\"d9afc3636cb969c286738ce02ed12196\",\"sha256\":\"8b48d8a1662f276653430fd541c77fa4f9a15a43e881b518ff88ea56925afcf7\"},\"downloads\":-1,\"filename\":\"agentops-0.3.18-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9afc3636cb969c286738ce02ed12196\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":58032,\"upload_time\":\"2024-11-19T19:06:19\",\"upload_time_iso_8601\":\"2024-11-19T19:06:19.068511Z\",\"url\":\"https://files.pythonhosted.org/packages/97/8d/bd4cad95dad722dc2d3e4179feab1058ef846828c0e15e51e8bfaea373ee/agentops-0.3.18-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c55246bb2f29b9e5f2e1d8b124296b7794934a9048de635d9e7d6a95e791ad7b\",\"md5\":\"02a4fc081499360aac58485a94a6ca33\",\"sha256\":\"4d509754df7be52579597cc9f53939c5218131a0379463e0ff6f6f40cde9fcc4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.18.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02a4fc081499360aac58485a94a6ca33\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":55394,\"upload_time\":\"2024-11-19T19:06:21\",\"upload_time_iso_8601\":\"2024-11-19T19:06:21.306448Z\",\"url\":\"https://files.pythonhosted.org/packages/c5/52/46bb2f29b9e5f2e1d8b124296b7794934a9048de635d9e7d6a95e791ad7b/agentops-0.3.18.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.19\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fc1e48616d2db40717d560a561e13521009655d447388f944f12f2b3811e6d7d\",\"md5\":\"a9e23f1d31821585017e97633b058233\",\"sha256\":\"1888a47dd3d9b92c5f246cdeeab333def5acbd26833d3148c63e8793457405b3\"},\"downloads\":-1,\"filename\":\"agentops-0.3.19-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a9e23f1d31821585017e97633b058233\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38648,\"upload_time\":\"2024-12-04T00:54:00\",\"upload_time_iso_8601\":\"2024-12-04T00:54:00.173948Z\",\"url\":\"https://files.pythonhosted.org/packages/fc/1e/48616d2db40717d560a561e13521009655d447388f944f12f2b3811e6d7d/agentops-0.3.19-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency, please install 0.3.18\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b319bb0e9895cb6da29f764f8d7b95b10ac8fde400bc17028f9bd486e9574dbe\",\"md5\":\"f6424c41464d438007e9628748a0bea6\",\"sha256\":\"ca0d4ba35ae699169ae20f74f72ca6a5780a8768ba2a2c32589fc5292ed81674\"},\"downloads\":-1,\"filename\":\"agentops-0.3.19.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f6424c41464d438007e9628748a0bea6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48360,\"upload_time\":\"2024-12-04T00:54:01\",\"upload_time_iso_8601\":\"2024-12-04T00:54:01.418776Z\",\"url\":\"https://files.pythonhosted.org/packages/b3/19/bb0e9895cb6da29f764f8d7b95b10ac8fde400bc17028f9bd486e9574dbe/agentops-0.3.19.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency, please install 0.3.18\"}],\"0.3.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9d2c23b745a61d48df788b8020e5ea37e94f9da59b322a17accafe18d8cb4006\",\"md5\":\"62d576d9518a627fe4232709c0721eff\",\"sha256\":\"b35988e04378624204572bb3d7a454094f879ea573f05b57d4e75ab0bfbb82af\"},\"downloads\":-1,\"filename\":\"agentops-0.3.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"62d576d9518a627fe4232709c0721eff\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39527,\"upload_time\":\"2024-07-21T03:09:56\",\"upload_time_iso_8601\":\"2024-07-21T03:09:56.844372Z\",\"url\":\"https://files.pythonhosted.org/packages/9d/2c/23b745a61d48df788b8020e5ea37e94f9da59b322a17accafe18d8cb4006/agentops-0.3.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d2a1cc21406646c065e83435fe30fa205b99b2204d8074eca31926a5f8ef4381\",\"md5\":\"30b247bcae25b181485a89213518241c\",\"sha256\":\"55559ac4a43634831dfa8937c2597c28e332809dc7c6bb3bc3c8b233442e224c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"30b247bcae25b181485a89213518241c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":41894,\"upload_time\":\"2024-07-21T03:09:58\",\"upload_time_iso_8601\":\"2024-07-21T03:09:58.409826Z\",\"url\":\"https://files.pythonhosted.org/packages/d2/a1/cc21406646c065e83435fe30fa205b99b2204d8074eca31926a5f8ef4381/agentops-0.3.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a854ae9147a490dd9bd03ab7bfc5af47f40ff675840a9aa143896b385a8f8d3a\",\"md5\":\"a13af8737ddff8a0c7c0f05cee70085f\",\"sha256\":\"b5396e11b0bfef46b85604e8e36ab17668057711edd56f1edb0a067b8676fdcc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a13af8737ddff8a0c7c0f05cee70085f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38674,\"upload_time\":\"2024-12-07T00:06:31\",\"upload_time_iso_8601\":\"2024-12-07T00:06:31.901162Z\",\"url\":\"https://files.pythonhosted.org/packages/a8/54/ae9147a490dd9bd03ab7bfc5af47f40ff675840a9aa143896b385a8f8d3a/agentops-0.3.20-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Wrong + release\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c1eb19d04c801854ba75e235eb87c51a6a9c5b1a89e8579cb745c83f8bf84e08\",\"md5\":\"11754497191d8340eda7a831720d9b74\",\"sha256\":\"c71406294804a82795310a4afc492064a8884b1ba47e12607230975bc1291ce3\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20.tar.gz\",\"has_sig\":false,\"md5_digest\":\"11754497191d8340eda7a831720d9b74\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48332,\"upload_time\":\"2024-12-07T00:06:33\",\"upload_time_iso_8601\":\"2024-12-07T00:06:33.568362Z\",\"url\":\"https://files.pythonhosted.org/packages/c1/eb/19d04c801854ba75e235eb87c51a6a9c5b1a89e8579cb745c83f8bf84e08/agentops-0.3.20.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Wrong + release\"}],\"0.3.20rc1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"073de7eba58e2a60c0136eee2760b20f99607001d372de26505feee891e0976b\",\"md5\":\"73c6ac515ee9d555e27a7ba7e26e3a46\",\"sha256\":\"079ea8138938e27a3e1319a235a6f4cf98c0d6846731d854aa83b8422d570bda\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"73c6ac515ee9d555e27a7ba7e26e3a46\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38718,\"upload_time\":\"2024-12-07T00:10:18\",\"upload_time_iso_8601\":\"2024-12-07T00:10:18.796963Z\",\"url\":\"https://files.pythonhosted.org/packages/07/3d/e7eba58e2a60c0136eee2760b20f99607001d372de26505feee891e0976b/agentops-0.3.20rc1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"02ff111d618c21aad946caedb666030f1f374a0d558228b9061ea2b46acb6bcd\",\"md5\":\"17062e985b931dc85b4855922d7842ce\",\"sha256\":\"ef48447e07a3eded246b2f7e10bba74422a34563ffdc667ac16b2d3383475a3f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"17062e985b931dc85b4855922d7842ce\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48329,\"upload_time\":\"2024-12-07T00:10:20\",\"upload_time_iso_8601\":\"2024-12-07T00:10:20.510407Z\",\"url\":\"https://files.pythonhosted.org/packages/02/ff/111d618c21aad946caedb666030f1f374a0d558228b9061ea2b46acb6bcd/agentops-0.3.20rc1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a7274706d8d9c8f4abecc1dda2b9b02cd02ffe895220bd39f58322a46ccc7254\",\"md5\":\"2c66a93c691c6b8cac2f2dc8fab9efae\",\"sha256\":\"3c10d77f2fe88b61d97ad007820c1ba968c62f692986ea2b2cbfd8b22ec9e5bc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2c66a93c691c6b8cac2f2dc8fab9efae\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":57423,\"upload_time\":\"2024-12-10T03:41:04\",\"upload_time_iso_8601\":\"2024-12-10T03:41:04.579814Z\",\"url\":\"https://files.pythonhosted.org/packages/a7/27/4706d8d9c8f4abecc1dda2b9b02cd02ffe895220bd39f58322a46ccc7254/agentops-0.3.20rc10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"efe9e304f465945f57e4c6d35cd35fff53dc2a2e36b9b32793fa57017467b0c2\",\"md5\":\"9882d32866b94d925ba36ac376c30bea\",\"sha256\":\"f0c72c20e7fe41054c22c6257420314863549dd91428a892ac9b47b81cdfcc8c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9882d32866b94d925ba36ac376c30bea\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":57564,\"upload_time\":\"2024-12-10T03:41:06\",\"upload_time_iso_8601\":\"2024-12-10T03:41:06.899043Z\",\"url\":\"https://files.pythonhosted.org/packages/ef/e9/e304f465945f57e4c6d35cd35fff53dc2a2e36b9b32793fa57017467b0c2/agentops-0.3.20rc10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8dbf598ec2532b713a228f4041c9b2c10358cd43e6aecf6128d0988a0b5f103e\",\"md5\":\"d9ab67a850aefcb5bf9467b48f74675d\",\"sha256\":\"3e5d4c19de6c58ae684693f47a2f03db35eaf4cd6d8aafc1e804a134462c2b55\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9ab67a850aefcb5bf9467b48f74675d\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":60280,\"upload_time\":\"2024-12-10T22:45:05\",\"upload_time_iso_8601\":\"2024-12-10T22:45:05.280119Z\",\"url\":\"https://files.pythonhosted.org/packages/8d/bf/598ec2532b713a228f4041c9b2c10358cd43e6aecf6128d0988a0b5f103e/agentops-0.3.20rc11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"210642e51fff6a4537fb811a15bc22d00343145285c6246dc069433d61436e1b\",\"md5\":\"ca5279f4cb6ad82e06ef542a2d08d06e\",\"sha256\":\"9211489c6a01bc9cda4061826f8b80d0989cfcd7fbabe1dd2ed5a5cb76b3d6f0\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ca5279f4cb6ad82e06ef542a2d08d06e\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":59718,\"upload_time\":\"2024-12-10T22:45:09\",\"upload_time_iso_8601\":\"2024-12-10T22:45:09.616947Z\",\"url\":\"https://files.pythonhosted.org/packages/21/06/42e51fff6a4537fb811a15bc22d00343145285c6246dc069433d61436e1b/agentops-0.3.20rc11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"dc281db6f49f10ac849683de1d7f5b5ef492be2a996325302167b8388f375d51\",\"md5\":\"8b2611d2510f0d4fac7ab824d7658ff7\",\"sha256\":\"9237652d28db89315c49c0705829b291c17280e07d41272f909e2609acec650b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8b2611d2510f0d4fac7ab824d7658ff7\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":60282,\"upload_time\":\"2024-12-10T23:10:54\",\"upload_time_iso_8601\":\"2024-12-10T23:10:54.516317Z\",\"url\":\"https://files.pythonhosted.org/packages/dc/28/1db6f49f10ac849683de1d7f5b5ef492be2a996325302167b8388f375d51/agentops-0.3.20rc12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"10c073cb9a55592f55bb44c9206f50f41d7b7a8a8d6fd67d42f40c8f9f184b0e\",\"md5\":\"02b3a68f3491564af2e29f0f216eea1e\",\"sha256\":\"d4d3a73ac34b2a00edb6e6b5b220cbb031bb76ff58d85e2096b536be24aee4fe\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02b3a68f3491564af2e29f0f216eea1e\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":59731,\"upload_time\":\"2024-12-10T23:10:56\",\"upload_time_iso_8601\":\"2024-12-10T23:10:56.822803Z\",\"url\":\"https://files.pythonhosted.org/packages/10/c0/73cb9a55592f55bb44c9206f50f41d7b7a8a8d6fd67d42f40c8f9f184b0e/agentops-0.3.20rc12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4ed48a97563074235f266281167c70ab90833c195e2b704087e414509ae3ec32\",\"md5\":\"c86fe22044483f94bc044a3bf7b054b7\",\"sha256\":\"2fbb3b55701d9aea64f622e7e29aa417772e897e2414f74ed3954d99009d224f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c86fe22044483f94bc044a3bf7b054b7\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":64724,\"upload_time\":\"2024-12-10T23:27:50\",\"upload_time_iso_8601\":\"2024-12-10T23:27:50.895316Z\",\"url\":\"https://files.pythonhosted.org/packages/4e/d4/8a97563074235f266281167c70ab90833c195e2b704087e414509ae3ec32/agentops-0.3.20rc13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"767e59c6f34e9a067d9152021de7e3146e5c0f69f36434dcb3026ff03f382489\",\"md5\":\"152a70647d5ff28fe851e4cc406d8fb4\",\"sha256\":\"b7a6d1d7f603bbb2605cc747762ae866bdee53941c4c76087c9f0f0a5efad03b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"152a70647d5ff28fe851e4cc406d8fb4\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":63242,\"upload_time\":\"2024-12-10T23:27:53\",\"upload_time_iso_8601\":\"2024-12-10T23:27:53.657606Z\",\"url\":\"https://files.pythonhosted.org/packages/76/7e/59c6f34e9a067d9152021de7e3146e5c0f69f36434dcb3026ff03f382489/agentops-0.3.20rc13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cebbbca58531e21f4c1c92cbe6ba15d0f308ff8f3b27083cd0ce6358c7d1d117\",\"md5\":\"5a9fcd99e0b6e3b24e721b22c3ee5907\",\"sha256\":\"ada95d42e82abef16c1e83443dc42d02bb470ee48b1fa8f2d58a20703511a7be\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"5a9fcd99e0b6e3b24e721b22c3ee5907\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38716,\"upload_time\":\"2024-12-07T00:20:01\",\"upload_time_iso_8601\":\"2024-12-07T00:20:01.561074Z\",\"url\":\"https://files.pythonhosted.org/packages/ce/bb/bca58531e21f4c1c92cbe6ba15d0f308ff8f3b27083cd0ce6358c7d1d117/agentops-0.3.20rc2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"124aec14492566949b7383ae321cb40c1edc18940712b277c08d32392566f7a8\",\"md5\":\"ff8db0075584474e35784b080fb9b6b1\",\"sha256\":\"60462b82390e78fd21312c5db45f0f48dfcc9c9ab354e6bf232db557ccf57c13\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ff8db0075584474e35784b080fb9b6b1\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48341,\"upload_time\":\"2024-12-07T00:20:02\",\"upload_time_iso_8601\":\"2024-12-07T00:20:02.519240Z\",\"url\":\"https://files.pythonhosted.org/packages/12/4a/ec14492566949b7383ae321cb40c1edc18940712b277c08d32392566f7a8/agentops-0.3.20rc2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a1551125b2b3823fcb3f3afa3c6b9621541799ac329622ee21038babbfbedf39\",\"md5\":\"a82f1b73347d3a2fe33f31cec01ca376\",\"sha256\":\"72253950b46a11b5b1163b13bbb9d5b769e6cdb7b102acf46efac8cf02f7eaac\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a82f1b73347d3a2fe33f31cec01ca376\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38719,\"upload_time\":\"2024-12-07T00:53:45\",\"upload_time_iso_8601\":\"2024-12-07T00:53:45.212239Z\",\"url\":\"https://files.pythonhosted.org/packages/a1/55/1125b2b3823fcb3f3afa3c6b9621541799ac329622ee21038babbfbedf39/agentops-0.3.20rc4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a180420ef26926052b12d1c2010360b4037f6765321055ce7e09c6bfaeac3480\",\"md5\":\"1a314ff81d87a774e5e1cf338151a353\",\"sha256\":\"4218fcfa42644dd86ee50ac7806d08783e4629db30b127bc8011c9c3523eeb5c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1a314ff81d87a774e5e1cf338151a353\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48332,\"upload_time\":\"2024-12-07T00:53:47\",\"upload_time_iso_8601\":\"2024-12-07T00:53:47.581677Z\",\"url\":\"https://files.pythonhosted.org/packages/a1/80/420ef26926052b12d1c2010360b4037f6765321055ce7e09c6bfaeac3480/agentops-0.3.20rc4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7747e61c5387124f53a3095261427888ab88e192828e3bb8be92660bf4e008d0\",\"md5\":\"fd7343ddf99f077d1a159b87d84ed79c\",\"sha256\":\"97df38116ec7fe337fc04b800e423aa8b5e69681565c02dc4af3e9c60764827e\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"fd7343ddf99f077d1a159b87d84ed79c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":44545,\"upload_time\":\"2024-12-07T01:38:17\",\"upload_time_iso_8601\":\"2024-12-07T01:38:17.177125Z\",\"url\":\"https://files.pythonhosted.org/packages/77/47/e61c5387124f53a3095261427888ab88e192828e3bb8be92660bf4e008d0/agentops-0.3.20rc5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"145fa0bf5ee5b56dacf63b9712ac62169c585c6222efe043cc77f3148f709965\",\"md5\":\"20a32d514b5d51851dbcbdfb2c189491\",\"sha256\":\"48111083dab1fc30f0545e0812c4aab00fc9e9d48de42de95d254699396992a8\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"20a32d514b5d51851dbcbdfb2c189491\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":53243,\"upload_time\":\"2024-12-07T01:38:18\",\"upload_time_iso_8601\":\"2024-12-07T01:38:18.772880Z\",\"url\":\"https://files.pythonhosted.org/packages/14/5f/a0bf5ee5b56dacf63b9712ac62169c585c6222efe043cc77f3148f709965/agentops-0.3.20rc5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"85f3a5ae3d8d47aa5160a5c805551d75077cad61bff9626abe44079d29d1c299\",\"md5\":\"30f87c628c530e82e27b8bc2d2a46d8a\",\"sha256\":\"d03f16832b3a5670d9c3273b95c9d9def772c203b2cd4ac52ae0e7f6d3b1b9e4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"30f87c628c530e82e27b8bc2d2a46d8a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":61844,\"upload_time\":\"2024-12-07T01:49:11\",\"upload_time_iso_8601\":\"2024-12-07T01:49:11.801219Z\",\"url\":\"https://files.pythonhosted.org/packages/85/f3/a5ae3d8d47aa5160a5c805551d75077cad61bff9626abe44079d29d1c299/agentops-0.3.20rc6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"060e24f42ed1de3d892355f3ba90f0b7f659855fafd18851e59aa7174fa30615\",\"md5\":\"384c60ee11b827b8bad31cef20a35a17\",\"sha256\":\"45aa4797269214d41858537d95050964f330651da5c7412b2895e714a81f30f5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"384c60ee11b827b8bad31cef20a35a17\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":61004,\"upload_time\":\"2024-12-07T01:49:13\",\"upload_time_iso_8601\":\"2024-12-07T01:49:13.917920Z\",\"url\":\"https://files.pythonhosted.org/packages/06/0e/24f42ed1de3d892355f3ba90f0b7f659855fafd18851e59aa7174fa30615/agentops-0.3.20rc6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d502edf7ba8aff1a994176da4c95688c9ba0428ac3bd9a0db2392fe5009162a9\",\"md5\":\"9b43c5e2df12abac01ffc5262e991825\",\"sha256\":\"95972115c5c753ceee477834de902afaf0664107048e44eee2c65e74e05656a2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"9b43c5e2df12abac01ffc5262e991825\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":40117,\"upload_time\":\"2024-12-07T02:12:48\",\"upload_time_iso_8601\":\"2024-12-07T02:12:48.512036Z\",\"url\":\"https://files.pythonhosted.org/packages/d5/02/edf7ba8aff1a994176da4c95688c9ba0428ac3bd9a0db2392fe5009162a9/agentops-0.3.20rc7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5d7029d8d02fcf6db627c6b20ceab974c455e23a25fc0e991c0a8d0eaebda523\",\"md5\":\"9de760856bed3f7adbd1d0ab7ba0a63a\",\"sha256\":\"7c793b7b199a61ca61366ddb8fd94986fac262ef6514918c3baaa08184b86669\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9de760856bed3f7adbd1d0ab7ba0a63a\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":49661,\"upload_time\":\"2024-12-07T02:12:50\",\"upload_time_iso_8601\":\"2024-12-07T02:12:50.120388Z\",\"url\":\"https://files.pythonhosted.org/packages/5d/70/29d8d02fcf6db627c6b20ceab974c455e23a25fc0e991c0a8d0eaebda523/agentops-0.3.20rc7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6d0f66418c0b20f40fe11de50f29481abdb266ff641ac6166eab9eac3d7364d2\",\"md5\":\"52a2cea48e48d1818169c07507a6c7a9\",\"sha256\":\"8cf2e9fe6400a4fb4367a039cacc5d76339a8fd2749a44243389547e928e545c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"52a2cea48e48d1818169c07507a6c7a9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":57414,\"upload_time\":\"2024-12-07T02:17:51\",\"upload_time_iso_8601\":\"2024-12-07T02:17:51.404804Z\",\"url\":\"https://files.pythonhosted.org/packages/6d/0f/66418c0b20f40fe11de50f29481abdb266ff641ac6166eab9eac3d7364d2/agentops-0.3.20rc8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4d18250b066f23ccbb22f2bba8df101361abd5724ddcef59a4d63d4539c7cd82\",\"md5\":\"f7887176e88d4434e38e237850363b80\",\"sha256\":\"a06e7939dd4d59c9880ded1b129fd4548b34be5530a46cf043326740bdfeca56\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f7887176e88d4434e38e237850363b80\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":57521,\"upload_time\":\"2024-12-07T02:17:53\",\"upload_time_iso_8601\":\"2024-12-07T02:17:53.055737Z\",\"url\":\"https://files.pythonhosted.org/packages/4d/18/250b066f23ccbb22f2bba8df101361abd5724ddcef59a4d63d4539c7cd82/agentops-0.3.20rc8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.21\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c4cb3b6cc5a08d11d9e56501f980222da0fa41814b7d6948a7f6354f31739af6\",\"md5\":\"c7592f9e7993dbe307fbffd7e4da1e51\",\"sha256\":\"4f98beecdce4c7cbee80ec26658a9657ba307a1fb2910b589f85325d3259b75b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.21-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c7592f9e7993dbe307fbffd7e4da1e51\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":64701,\"upload_time\":\"2024-12-11T12:24:00\",\"upload_time_iso_8601\":\"2024-12-11T12:24:00.934724Z\",\"url\":\"https://files.pythonhosted.org/packages/c4/cb/3b6cc5a08d11d9e56501f980222da0fa41814b7d6948a7f6354f31739af6/agentops-0.3.21-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"83f6bfd27fa4b948c353eaff579dafdf4eb54833f5c526e00c6f2faee4b467a8\",\"md5\":\"83d7666511cccf3b0d4354cebd99b110\",\"sha256\":\"d8e8d1f6d154554dba64ec5b139905bf76c68f21575af9fa2ca1697277fe36f2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.21.tar.gz\",\"has_sig\":false,\"md5_digest\":\"83d7666511cccf3b0d4354cebd99b110\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":63185,\"upload_time\":\"2024-12-11T12:24:02\",\"upload_time_iso_8601\":\"2024-12-11T12:24:02.068404Z\",\"url\":\"https://files.pythonhosted.org/packages/83/f6/bfd27fa4b948c353eaff579dafdf4eb54833f5c526e00c6f2faee4b467a8/agentops-0.3.21.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.22\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"11e721b42168ecfd0a9fff9dea51201646b6e62c4f52c8cd9c2a6400125d7234\",\"md5\":\"26061ab467e358b63251f9547275bbbd\",\"sha256\":\"992f4f31d80e8b0b2098abf58ae2707c60538e4b66e5aec8cf49fb269d5a2adc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.22-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"26061ab467e358b63251f9547275bbbd\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":39539,\"upload_time\":\"2025-01-11T03:21:39\",\"upload_time_iso_8601\":\"2025-01-11T03:21:39.093169Z\",\"url\":\"https://files.pythonhosted.org/packages/11/e7/21b42168ecfd0a9fff9dea51201646b6e62c4f52c8cd9c2a6400125d7234/agentops-0.3.22-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e067e61aa4c2e329da10b5e95d325091e599d8a00a28843a54bdcefa7a2eef8d\",\"md5\":\"bcf45b6c4c56884ed2409f835571af62\",\"sha256\":\"705d772b6994f8bab0cd163b24602009353f7906c72d9db008af11683f6e9341\"},\"downloads\":-1,\"filename\":\"agentops-0.3.22.tar.gz\",\"has_sig\":false,\"md5_digest\":\"bcf45b6c4c56884ed2409f835571af62\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":52845,\"upload_time\":\"2025-01-11T03:21:41\",\"upload_time_iso_8601\":\"2025-01-11T03:21:41.762282Z\",\"url\":\"https://files.pythonhosted.org/packages/e0/67/e61aa4c2e329da10b5e95d325091e599d8a00a28843a54bdcefa7a2eef8d/agentops-0.3.22.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency\"}],\"0.3.23\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"e67de1434765cf0a3d62372b74f47919aa17c0b01909823f7d3ee705edf821a9\",\"md5\":\"1f0f02509b8ba713db72e57a072f01a6\",\"sha256\":\"ecfff77d8f9006361ef2a2e8593271e97eb54b7b504abfb8abd6504006baca56\"},\"downloads\":-1,\"filename\":\"agentops-0.3.23-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1f0f02509b8ba713db72e57a072f01a6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":70098,\"upload_time\":\"2025-01-12T02:11:56\",\"upload_time_iso_8601\":\"2025-01-12T02:11:56.319763Z\",\"url\":\"https://files.pythonhosted.org/packages/e6/7d/e1434765cf0a3d62372b74f47919aa17c0b01909823f7d3ee705edf821a9/agentops-0.3.23-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"5c7fa4fd91f8fd819e1ecfdc608d1c7ade83de0f9dddd868e2c2c139a2fdae25\",\"md5\":\"b7922399f81fb26517eb69fc7fef97c9\",\"sha256\":\"4e4de49caeaf567b8746082f84a8cdd65afe2c698720f6f40251bbc4fdffe4c9\"},\"downloads\":-1,\"filename\":\"agentops-0.3.23.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b7922399f81fb26517eb69fc7fef97c9\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":64225,\"upload_time\":\"2025-01-12T02:11:59\",\"upload_time_iso_8601\":\"2025-01-12T02:11:59.360077Z\",\"url\":\"https://files.pythonhosted.org/packages/5c/7f/a4fd91f8fd819e1ecfdc608d1c7ade83de0f9dddd868e2c2c139a2fdae25/agentops-0.3.23.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.24\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"254ea7d131802bac2ece5302ebf78dcef1ba1ba2f8b3a51fbe44c7f52bae6a53\",\"md5\":\"39c39d8a7f1285add0fec21830a89a4a\",\"sha256\":\"c5dfc8098b0dd49ddd819aa55280d07f8bfbf2f8fa088fc51ff5849b65062b10\"},\"downloads\":-1,\"filename\":\"agentops-0.3.24-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"39c39d8a7f1285add0fec21830a89a4a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":71957,\"upload_time\":\"2025-01-18T19:08:02\",\"upload_time_iso_8601\":\"2025-01-18T19:08:02.053316Z\",\"url\":\"https://files.pythonhosted.org/packages/25/4e/a7d131802bac2ece5302ebf78dcef1ba1ba2f8b3a51fbe44c7f52bae6a53/agentops-0.3.24-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"71fee96e22c4bf762f34cd5ba435880470dad4576ab357ee61742fe053752322\",\"md5\":\"3e1b7e0a31197936e099a7509128f794\",\"sha256\":\"c97a3af959b728bcfbfb1ac2494cef82d8804defc9dac858648b39a9ecdcd2e4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.24.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3e1b7e0a31197936e099a7509128f794\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":233974,\"upload_time\":\"2025-01-18T19:08:04\",\"upload_time_iso_8601\":\"2025-01-18T19:08:04.121618Z\",\"url\":\"https://files.pythonhosted.org/packages/71/fe/e96e22c4bf762f34cd5ba435880470dad4576ab357ee61742fe053752322/agentops-0.3.24.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.25\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"e6e39cff4ed65c5deac34f427ed60cd7af3604ec7ed8a999c351f6411e190d3b\",\"md5\":\"328dedc417be02fc28f8a4c7ed7b52e9\",\"sha256\":\"4faebf73a62aa0bcac8578428277ca5b9af5e828f49f2cb03a9695b8426e6b9d\"},\"downloads\":-1,\"filename\":\"agentops-0.3.25-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"328dedc417be02fc28f8a4c7ed7b52e9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":71971,\"upload_time\":\"2025-01-22T10:43:16\",\"upload_time_iso_8601\":\"2025-01-22T10:43:16.070593Z\",\"url\":\"https://files.pythonhosted.org/packages/e6/e3/9cff4ed65c5deac34f427ed60cd7af3604ec7ed8a999c351f6411e190d3b/agentops-0.3.25-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"2fdfeb00eaabebb51feae0724a5928f25df4d71d1c8392204f4f849351fd748c\",\"md5\":\"a40bc7037baf6dbba92d63331f561a28\",\"sha256\":\"868d855b6531d1fa2d1047db2cb03ddb1121062fd51c44b564dc626f15cc1e40\"},\"downloads\":-1,\"filename\":\"agentops-0.3.25.tar.gz\",\"has_sig\":false,\"md5_digest\":\"a40bc7037baf6dbba92d63331f561a28\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234024,\"upload_time\":\"2025-01-22T10:43:17\",\"upload_time_iso_8601\":\"2025-01-22T10:43:17.986230Z\",\"url\":\"https://files.pythonhosted.org/packages/2f/df/eb00eaabebb51feae0724a5928f25df4d71d1c8392204f4f849351fd748c/agentops-0.3.25.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.26\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"f521671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b\",\"md5\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"sha256\":\"20948f52e3ffb4ba1d52301c3a82e59490182c4dad22774ad831dce0181eb5c2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":72090,\"upload_time\":\"2025-01-24T23:44:06\",\"upload_time_iso_8601\":\"2025-01-24T23:44:06.828461Z\",\"url\":\"https://files.pythonhosted.org/packages/f5/21/671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b/agentops-0.3.26-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"76a1b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d\",\"md5\":\"ba4d0f2411ec72828677b38a395465cc\",\"sha256\":\"bc824bf8727332f59bf803cf84440d13e9e398406222ab29f45909ac1e39f815\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ba4d0f2411ec72828677b38a395465cc\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234235,\"upload_time\":\"2025-01-24T23:44:08\",\"upload_time_iso_8601\":\"2025-01-24T23:44:08.541961Z\",\"url\":\"https://files.pythonhosted.org/packages/76/a1/b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d/agentops-0.3.26.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"52f32bd714234ec345153c0fcbc9e4896c306c347f3fb66a3aa6d6fc109a7243\",\"md5\":\"c7a975a86900f7dbe6861a21fdd3c2d8\",\"sha256\":\"126f7aed4ba43c1399b5488d67a03d10cb4c531e619c650776f826ca00c1aa24\"},\"downloads\":-1,\"filename\":\"agentops-0.3.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c7a975a86900f7dbe6861a21fdd3c2d8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39915,\"upload_time\":\"2024-07-24T23:15:03\",\"upload_time_iso_8601\":\"2024-07-24T23:15:03.892439Z\",\"url\":\"https://files.pythonhosted.org/packages/52/f3/2bd714234ec345153c0fcbc9e4896c306c347f3fb66a3aa6d6fc109a7243/agentops-0.3.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d28b88a2c9c2df655de806adbb5deebb12c64d19d6aa3cfa759da642953525e0\",\"md5\":\"f48a2ab7fcaf9cf11a25805ac5300e26\",\"sha256\":\"a92c9cb7c511197f0ecb8cb5aca15d35022c15a3d2fd2aaaa34cd7e5dc59393f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f48a2ab7fcaf9cf11a25805ac5300e26\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42063,\"upload_time\":\"2024-07-24T23:15:05\",\"upload_time_iso_8601\":\"2024-07-24T23:15:05.586475Z\",\"url\":\"https://files.pythonhosted.org/packages/d2/8b/88a2c9c2df655de806adbb5deebb12c64d19d6aa3cfa759da642953525e0/agentops-0.3.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f253f9672c6aa3c79b6a5b64321e93d2316f126add867ceb2e3e95ea8b4bf1b0\",\"md5\":\"bd45dc8100fd3974dff11014d12424ff\",\"sha256\":\"687cb938ecf9d1bf7650afc910e2b2e1b8b6d9e969215aeb49e57f1555a2a756\"},\"downloads\":-1,\"filename\":\"agentops-0.3.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bd45dc8100fd3974dff11014d12424ff\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39177,\"upload_time\":\"2024-08-01T19:32:19\",\"upload_time_iso_8601\":\"2024-08-01T19:32:19.765946Z\",\"url\":\"https://files.pythonhosted.org/packages/f2/53/f9672c6aa3c79b6a5b64321e93d2316f126add867ceb2e3e95ea8b4bf1b0/agentops-0.3.5-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Introduces + FileNotFoundError impacting OpenAI and LiteLLM integrations\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"235508ce5915f1ceb86ea6f7a6e8c8dc025b34981408a1b638316b5140fad525\",\"md5\":\"53ef2f5230de09260f4ead09633dde62\",\"sha256\":\"ae98540355ce9b892a630e61a7224a9175657cad1b7e799269238748ca7bc0ea\"},\"downloads\":-1,\"filename\":\"agentops-0.3.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"53ef2f5230de09260f4ead09633dde62\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42699,\"upload_time\":\"2024-08-01T19:32:21\",\"upload_time_iso_8601\":\"2024-08-01T19:32:21.259555Z\",\"url\":\"https://files.pythonhosted.org/packages/23/55/08ce5915f1ceb86ea6f7a6e8c8dc025b34981408a1b638316b5140fad525/agentops-0.3.5.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Introduces + FileNotFoundError impacting OpenAI and LiteLLM integrations\"}],\"0.3.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"be89412afc864df3715d377cff9fe15deadaccdc0902b0a242f742f286e6d84b\",\"md5\":\"149922f5cd986a8641b6e88c991af0cc\",\"sha256\":\"413f812eb015fb31175a507784afe08123adfa9e227870e315899b059f42b443\"},\"downloads\":-1,\"filename\":\"agentops-0.3.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"149922f5cd986a8641b6e88c991af0cc\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39431,\"upload_time\":\"2024-08-02T06:48:19\",\"upload_time_iso_8601\":\"2024-08-02T06:48:19.594149Z\",\"url\":\"https://files.pythonhosted.org/packages/be/89/412afc864df3715d377cff9fe15deadaccdc0902b0a242f742f286e6d84b/agentops-0.3.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c3bf85f1439c3951ef69c81dbd7ef6df8a11df957e8d1180d835d71c11fa5131\",\"md5\":\"b68d3124e365867f891bec4fb211a398\",\"sha256\":\"0941f2486f3a561712ba6f77d560b49e2df55be141f243da0f9dc97ed43e6968\"},\"downloads\":-1,\"filename\":\"agentops-0.3.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b68d3124e365867f891bec4fb211a398\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42933,\"upload_time\":\"2024-08-02T06:48:21\",\"upload_time_iso_8601\":\"2024-08-02T06:48:21.508300Z\",\"url\":\"https://files.pythonhosted.org/packages/c3/bf/85f1439c3951ef69c81dbd7ef6df8a11df957e8d1180d835d71c11fa5131/agentops-0.3.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a34d05ba61e4fbd976dabe736d74fb2bb14d064ca758f05f084c0dadb6ac5cb1\",\"md5\":\"551df1e89278270e0f5522d41f5c28ae\",\"sha256\":\"7eeec5bef41e9ba397b3d880bcec8cd0818209ab31665c85e8b97615011a23d9\"},\"downloads\":-1,\"filename\":\"agentops-0.3.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"551df1e89278270e0f5522d41f5c28ae\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39816,\"upload_time\":\"2024-08-08T23:21:45\",\"upload_time_iso_8601\":\"2024-08-08T23:21:45.035395Z\",\"url\":\"https://files.pythonhosted.org/packages/a3/4d/05ba61e4fbd976dabe736d74fb2bb14d064ca758f05f084c0dadb6ac5cb1/agentops-0.3.7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9f31034c3e062287f4fe9f57f2448e9508617a26bbb8a16b11c77cda9b28e1c0\",\"md5\":\"1c48a797903a25988bae9b72559307ec\",\"sha256\":\"048ee3caa5edf01b98c994e4e3ff90c09d83f820a43a70f07db96032c3386750\"},\"downloads\":-1,\"filename\":\"agentops-0.3.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1c48a797903a25988bae9b72559307ec\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":43495,\"upload_time\":\"2024-08-08T23:21:46\",\"upload_time_iso_8601\":\"2024-08-08T23:21:46.798531Z\",\"url\":\"https://files.pythonhosted.org/packages/9f/31/034c3e062287f4fe9f57f2448e9508617a26bbb8a16b11c77cda9b28e1c0/agentops-0.3.7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.9\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"660ce931f892e0cedd40d861c3deff4134e1af1d226d6dc9762b32514d6dbc9f\",\"md5\":\"82792de7bccabed058a24d3bd47443db\",\"sha256\":\"582c9ddb30a9bb951b4d3ee2fd0428ba77d4a4367950b9cc6043f45b10bf12d8\"},\"downloads\":-1,\"filename\":\"agentops-0.3.9-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"82792de7bccabed058a24d3bd47443db\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":40235,\"upload_time\":\"2024-08-15T21:21:33\",\"upload_time_iso_8601\":\"2024-08-15T21:21:33.468748Z\",\"url\":\"https://files.pythonhosted.org/packages/66/0c/e931f892e0cedd40d861c3deff4134e1af1d226d6dc9762b32514d6dbc9f/agentops-0.3.9-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e17b68cef3aaf44d423046b7779e9325e4feef5257e6d784a55c9dadf84bd61a\",\"md5\":\"470f3b2663b71eb2f1597903bf8922e7\",\"sha256\":\"7c999edbc64196924acdb06da09ec664a09d9fec8e73ba4e0f89e5f3dafc79e5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.9.tar.gz\",\"has_sig\":false,\"md5_digest\":\"470f3b2663b71eb2f1597903bf8922e7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":43796,\"upload_time\":\"2024-08-15T21:21:34\",\"upload_time_iso_8601\":\"2024-08-15T21:21:34.591272Z\",\"url\":\"https://files.pythonhosted.org/packages/e1/7b/68cef3aaf44d423046b7779e9325e4feef5257e6d784a55c9dadf84bd61a/agentops-0.3.9.tar.gz\",\"yanked\":false,\"yanked_reason\":null}]},\"urls\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"f521671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b\",\"md5\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"sha256\":\"20948f52e3ffb4ba1d52301c3a82e59490182c4dad22774ad831dce0181eb5c2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":72090,\"upload_time\":\"2025-01-24T23:44:06\",\"upload_time_iso_8601\":\"2025-01-24T23:44:06.828461Z\",\"url\":\"https://files.pythonhosted.org/packages/f5/21/671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b/agentops-0.3.26-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"76a1b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d\",\"md5\":\"ba4d0f2411ec72828677b38a395465cc\",\"sha256\":\"bc824bf8727332f59bf803cf84440d13e9e398406222ab29f45909ac1e39f815\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ba4d0f2411ec72828677b38a395465cc\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234235,\"upload_time\":\"2025-01-24T23:44:08\",\"upload_time_iso_8601\":\"2025-01-24T23:44:08.541961Z\",\"url\":\"https://files.pythonhosted.org/packages/76/a1/b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d/agentops-0.3.26.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"vulnerabilities\":[]}\n" + headers: + Accept-Ranges: + - bytes + Connection: + - keep-alive + Content-Length: + - '33610' Date: - - Tue, 04 Feb 2025 20:24:42 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked + - Fri, 21 Feb 2025 23:21:03 GMT + Permissions-Policy: + - publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Cache: + - MISS, HIT, HIT + X-Cache-Hits: + - 0, 8895, 0 X-Content-Type-Options: - nosniff + X-Frame-Options: + - deny + X-Permitted-Cross-Domain-Policies: + - none + X-Served-By: + - cache-iad-kjyo7100032-IAD, cache-iad-kjyo7100044-IAD, cache-sjc10025-SJC + X-Timer: + - S1740180063.458885,VS0,VE61 + X-XSS-Protection: + - 1; mode=block + access-control-allow-headers: + - Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since + access-control-allow-methods: + - GET + access-control-allow-origin: + - '*' access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '326' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999810' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_22be86be6fd9d69ca8d310ef534e7bec - http_version: HTTP/1.1 - status_code: 200 + - X-PyPI-Last-Serial + access-control-max-age: + - '86400' + cache-control: + - max-age=900, public + content-encoding: + - gzip + content-security-policy: + - base-uri 'self'; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues + https://gitlab.com/api/ https://*.google-analytics.com https://*.analytics.google.com + https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io + https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ + https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; + form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src + 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com + https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; + script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com + https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' + https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' + 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com + *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' + 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' + 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; + worker-src *.fastly-insights.com + content-type: + - application/json + etag: + - '"5Jjf0qcbSYoU2b9dDGH/Nw"' + referrer-policy: + - origin-when-cross-origin + x-pypi-last-serial: + - '27123795' + status: + code: 200 + message: OK - request: - body: !!binary | - Cp0mCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkS9CUKEgoQY3Jld2FpLnRl - bGVtZXRyeRKkBwoQfRmsiIy66Scw43CcUw5ZiBIIfYDEhWJTOTkqDENyZXcgQ3JlYXRlZDABOcD6 - XvsOGyEYQWC2bPsOGyEYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTAwLjBKGgoOcHl0aG9uX3Zl - cnNpb24SCAoGMy4xMi44Si4KCGNyZXdfa2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhj - NzQ2MjhjSjEKB2NyZXdfaWQSJgokMDMzNTZiYmEtMzJmZC00OThmLTgxYTItYzc1ZDBkMzc2N2Qx - ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 - X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUrRAgoLY3Jl - d19hZ2VudHMSwQIKvgJbeyJrZXkiOiAiYWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIyNDljNGM2NGEi - LCAiaWQiOiAiZjY5YTRmYTMtMzQ4OC00MmFhLTlhMTQtMGEzZmEyOWJmYjZjIiwgInJvbGUiOiAi - YmFzZV9hZ2VudCIsICJ2ZXJib3NlPyI6IGZhbHNlLCAibWF4X2l0ZXIiOiAyMCwgIm1heF9ycG0i - OiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8tbWluaSIs - ICJkZWxlZ2F0aW9uX2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBm - YWxzZSwgIm1heF9yZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfV1K/wEKCmNyZXdf - dGFza3MS8AEK7QFbeyJrZXkiOiAiMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDIiLCAi - aWQiOiAiNDllNzk0MmMtZTJiMy00YmE1LTg5MTUtMTYwYjQxMDU2ZmVlIiwgImFzeW5jX2V4ZWN1 - dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNlLCAiYWdlbnRfcm9sZSI6ICJiYXNl - X2FnZW50IiwgImFnZW50X2tleSI6ICJhZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIs - ICJ0b29sc19uYW1lcyI6IFtdfV16AhgBhQEAAQAAEo4CChCLgjutPq/3tkNyPqVjfbZhEgjhB7lb - clxzdyoMVGFzayBDcmVhdGVkMAE5CC9++w4bIRhBeMN++w4bIRhKLgoIY3Jld19rZXkSIgogZTU4 - MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiQwMzM1NmJiYS0zMmZk - LTQ5OGYtODFhMi1jNzVkMGQzNzY3ZDFKLgoIdGFza19rZXkSIgogMWIxNWVmMjM5MTViMjc1NWU4 - OWEwZWMzYjI2YTEzZDJKMQoHdGFza19pZBImCiQ0OWU3OTQyYy1lMmIzLTRiYTUtODkxNS0xNjBi - NDEwNTZmZWV6AhgBhQEAAQAAEqQHChC7SpRSs6eG9XFmYuMQgghQEghpZMlScOy2DyoMQ3JldyBD - cmVhdGVkMAE50O2cAA8bIRhBOFmrAA8bIRhKGwoOY3Jld2FpX3ZlcnNpb24SCQoHMC4xMDAuMEoa - Cg5weXRob25fdmVyc2lvbhIICgYzLjEyLjhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmViNjVh - ZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiRlYTQ1MWY2OS00Zjk3LTQ4MjYtOWNlYi04 - NTAzMDk2MTQ2MDlKHAoMY3Jld19wcm9jZXNzEgwKCnNlcXVlbnRpYWxKEQoLY3Jld19tZW1vcnkS - AhAAShoKFGNyZXdfbnVtYmVyX29mX3Rhc2tzEgIYAUobChVjcmV3X251bWJlcl9vZl9hZ2VudHMS - AhgBStECCgtjcmV3X2FnZW50cxLBAgq+Alt7ImtleSI6ICJhZDE1MzE2MWM1YzVhODU2YWEwZDA2 - YjI0OWM0YzY0YSIsICJpZCI6ICJmNjlhNGZhMy0zNDg4LTQyYWEtOWExNC0wYTNmYTI5YmZiNmMi - LCAicm9sZSI6ICJiYXNlX2FnZW50IiwgInZlcmJvc2U/IjogZmFsc2UsICJtYXhfaXRlciI6IDIw - LCAibWF4X3JwbSI6IG51bGwsICJmdW5jdGlvbl9jYWxsaW5nX2xsbSI6ICIiLCAibGxtIjogImdw - dC00by1taW5pIiwgImRlbGVnYXRpb25fZW5hYmxlZD8iOiBmYWxzZSwgImFsbG93X2NvZGVfZXhl - Y3V0aW9uPyI6IGZhbHNlLCAibWF4X3JldHJ5X2xpbWl0IjogMiwgInRvb2xzX25hbWVzIjogW119 - XUr/AQoKY3Jld190YXNrcxLwAQrtAVt7ImtleSI6ICIxYjE1ZWYyMzkxNWIyNzU1ZTg5YTBlYzNi - MjZhMTNkMiIsICJpZCI6ICI0OWU3OTQyYy1lMmIzLTRiYTUtODkxNS0xNjBiNDEwNTZmZWUiLCAi - YXN5bmNfZXhlY3V0aW9uPyI6IGZhbHNlLCAiaHVtYW5faW5wdXQ/IjogZmFsc2UsICJhZ2VudF9y - b2xlIjogImJhc2VfYWdlbnQiLCAiYWdlbnRfa2V5IjogImFkMTUzMTYxYzVjNWE4NTZhYTBkMDZi - MjQ5YzRjNjRhIiwgInRvb2xzX25hbWVzIjogW119XXoCGAGFAQABAAASjgIKEM1q5zTl6Q6WKHPQ - eIqEm7sSCCWi2wvaFqpfKgxUYXNrIENyZWF0ZWQwATmIObwADxshGEEAo7wADxshGEouCghjcmV3 - X2tleRIiCiBlNTgwNzAxZDUyZWI2NWFmZjI0ZWVmZTc4Yzc0NjI4Y0oxCgdjcmV3X2lkEiYKJGVh - NDUxZjY5LTRmOTctNDgyNi05Y2ViLTg1MDMwOTYxNDYwOUouCgh0YXNrX2tleRIiCiAxYjE1ZWYy - MzkxNWIyNzU1ZTg5YTBlYzNiMjZhMTNkMkoxCgd0YXNrX2lkEiYKJDQ5ZTc5NDJjLWUyYjMtNGJh - NS04OTE1LTE2MGI0MTA1NmZlZXoCGAGFAQABAAASpAcKEEhIZzGdZRAdvfcluDR5qvESCFMGo60X - V/dYKgxDcmV3IENyZWF0ZWQwATnY8LgBDxshGEGQrsUBDxshGEobCg5jcmV3YWlfdmVyc2lvbhIJ - CgcwLjEwMC4wShoKDnB5dGhvbl92ZXJzaW9uEggKBjMuMTIuOEouCghjcmV3X2tleRIiCiBlNTgw - NzAxZDUyZWI2NWFmZjI0ZWVmZTc4Yzc0NjI4Y0oxCgdjcmV3X2lkEiYKJDA3MDJmOGU1LWRjMTYt - NDlhYi1hMWY1LThjOWQyY2IwMDYwYkocCgxjcmV3X3Byb2Nlc3MSDAoKc2VxdWVudGlhbEoRCgtj - cmV3X21lbW9yeRICEABKGgoUY3Jld19udW1iZXJfb2ZfdGFza3MSAhgBShsKFWNyZXdfbnVtYmVy - X29mX2FnZW50cxICGAFK0QIKC2NyZXdfYWdlbnRzEsECCr4CW3sia2V5IjogImFkMTUzMTYxYzVj - NWE4NTZhYTBkMDZiMjQ5YzRjNjRhIiwgImlkIjogImY2OWE0ZmEzLTM0ODgtNDJhYS05YTE0LTBh - M2ZhMjliZmI2YyIsICJyb2xlIjogImJhc2VfYWdlbnQiLCAidmVyYm9zZT8iOiBmYWxzZSwgIm1h - eF9pdGVyIjogMjAsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxtIjogIiIs - ICJsbG0iOiAiZ3B0LTRvLW1pbmkiLCAiZGVsZWdhdGlvbl9lbmFibGVkPyI6IGZhbHNlLCAiYWxs - b3dfY29kZV9leGVjdXRpb24/IjogZmFsc2UsICJtYXhfcmV0cnlfbGltaXQiOiAyLCAidG9vbHNf - bmFtZXMiOiBbXX1dSv8BCgpjcmV3X3Rhc2tzEvABCu0BW3sia2V5IjogIjFiMTVlZjIzOTE1YjI3 - NTVlODlhMGVjM2IyNmExM2QyIiwgImlkIjogIjQ5ZTc5NDJjLWUyYjMtNGJhNS04OTE1LTE2MGI0 - MTA1NmZlZSIsICJhc3luY19leGVjdXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxz - ZSwgImFnZW50X3JvbGUiOiAiYmFzZV9hZ2VudCIsICJhZ2VudF9rZXkiOiAiYWQxNTMxNjFjNWM1 - YTg1NmFhMGQwNmIyNDljNGM2NGEiLCAidG9vbHNfbmFtZXMiOiBbXX1degIYAYUBAAEAABKOAgoQ - PkgvMtq3aT5YPXE8gCRxPBIIMx/zQOuC+8sqDFRhc2sgQ3JlYXRlZDABOYjk2AEPGyEYQZiI2QEP - GyEYSi4KCGNyZXdfa2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhjNzQ2MjhjSjEKB2Ny - ZXdfaWQSJgokMDcwMmY4ZTUtZGMxNi00OWFiLWExZjUtOGM5ZDJjYjAwNjBiSi4KCHRhc2tfa2V5 - EiIKIDFiMTVlZjIzOTE1YjI3NTVlODlhMGVjM2IyNmExM2QySjEKB3Rhc2tfaWQSJgokNDllNzk0 - MmMtZTJiMy00YmE1LTg5MTUtMTYwYjQxMDU2ZmVlegIYAYUBAAEAABKkBwoQex7nA0gUUrZHbN6F - gWp/gBIIKPd4fiRi7DwqDENyZXcgQ3JlYXRlZDABOTiIrAIPGyEYQdCAtwIPGyEYShsKDmNyZXdh - aV92ZXJzaW9uEgkKBzAuMTAwLjBKGgoOcHl0aG9uX3ZlcnNpb24SCAoGMy4xMi44Si4KCGNyZXdf - a2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhjNzQ2MjhjSjEKB2NyZXdfaWQSJgokMGNm - YjUzZWItMDA2Mi00YmVmLTk1ZTgtMDgwMjQ3NmNkMWRlShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1 - ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3X251bWJlcl9vZl90YXNrcxICGAFKGwoV - Y3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUrRAgoLY3Jld19hZ2VudHMSwQIKvgJbeyJrZXkiOiAi - YWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIyNDljNGM2NGEiLCAiaWQiOiAiZjY5YTRmYTMtMzQ4OC00 - MmFhLTlhMTQtMGEzZmEyOWJmYjZjIiwgInJvbGUiOiAiYmFzZV9hZ2VudCIsICJ2ZXJib3NlPyI6 - IGZhbHNlLCAibWF4X2l0ZXIiOiAyMCwgIm1heF9ycG0iOiBudWxsLCAiZnVuY3Rpb25fY2FsbGlu - Z19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9uX2VuYWJsZWQ/Ijog - ZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9yZXRyeV9saW1pdCI6 - IDIsICJ0b29sc19uYW1lcyI6IFtdfV1K/wEKCmNyZXdfdGFza3MS8AEK7QFbeyJrZXkiOiAiMWIx - NWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDIiLCAiaWQiOiAiNDllNzk0MmMtZTJiMy00YmE1 - LTg5MTUtMTYwYjQxMDU2ZmVlIiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lu - cHV0PyI6IGZhbHNlLCAiYWdlbnRfcm9sZSI6ICJiYXNlX2FnZW50IiwgImFnZW50X2tleSI6ICJh - ZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIsICJ0b29sc19uYW1lcyI6IFtdfV16AhgB - hQEAAQAAEo4CChD+ymllejCksajGYDua8tgNEghnjlejrbuw2SoMVGFzayBDcmVhdGVkMAE5EDrI - Ag8bIRhBGIzIAg8bIRhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3 - NDYyOGNKMQoHY3Jld19pZBImCiQwY2ZiNTNlYi0wMDYyLTRiZWYtOTVlOC0wODAyNDc2Y2QxZGVK - LgoIdGFza19rZXkSIgogMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDJKMQoHdGFza19p - ZBImCiQ0OWU3OTQyYy1lMmIzLTRiYTUtODkxNS0xNjBiNDEwNTZmZWV6AhgBhQEAAQAA + body: '{"session": {"end_timestamp": null, "end_state": "Indeterminate", "session_id": + "73534e48-dd5a-4ef4-a702-fbbba9d00f27", "init_timestamp": "2025-02-21T23:21:03.681822+00:00", + "tags": ["crewai"], "video": null, "end_state_reason": null, "host_env": {"SDK": + {"AgentOps SDK Version": "0.3.26", "Python Version": "3.12.8", "System Packages": + {"pluggy": "1.5.0", "importlib.resources": "6.4.5", "importlib.metadata": "8.4.0", + "iniconfig": "2.0.0", "pytest": "8.3.3", "pytest_asyncio": "0.24.0", "wrapt": + "1.16.0", "urllib3": "2.2.3", "charset_normalizer": "3.4.0", "idna": "3.10", + "certifi": "2024.8.30", "requests": "2.32.3", "multidict": "6.1.0", "propcache": + "0.2.0", "yarl": "1.18.3", "aiohappyeyeballs": "2.4.3", "frozenlist": "1.5.0", + "aiosignal": "1.3.1", "aiohttp": "3.11.11", "sniffio": "1.3.1", "anyio": "4.6.2.post1", + "h11": "0.14.0", "h2": "4.2.0", "hpack": "4.1.0", "hyperframe": "6.1.0", "httpcore": + "1.0.6", "click": "8.1.8", "pygments": "2.18.0", "rich": "13.9.3", "httpx": + "0.27.0", "pytest_vcr": "1.0.2", "pytest_subprocess": "1.5.2", "typing_extensions": + "4.12.2", "pydantic": "2.10.4", "annotated_types": "0.7.0", "pydantic_core": + "2.27.2", "json_repair": "0.30.0", "overrides": "7.7.0", "numpy": "1.26.4", + "tenacity": "9.0.0", "onnxruntime": "1.19.2", "tokenizers": "0.20.1", "tqdm": + "4.66.5", "deprecated": "1.2.14", "zipp": "3.20.2", "importlib_metadata": "8.4.0", + "opentelemetry.sdk": "1.27.0", "psutil": "6.0.0", "opentelemetry.exporter.otlp.proto.grpc": + "1.27.0", "opentelemetry.exporter.otlp.proto.common": "1.27.0", "opentelemetry.proto": + "1.27.0", "chromadb": "0.5.23", "crewai.tools": "0.33.0", "appdirs": "1.4.4", + "blinker": "1.9.0", "opentelemetry.exporter.otlp.proto.http": "1.27.0", "termcolor": + "2.4.0", "packaging": "23.2", "langchain_core": "0.3.36", "langsmith": "0.1.147", + "requests_toolbelt": "1.0.0", "orjson": "3.10.10", "jsonpointer": "3.0.0", "jsonpatch": + "1.33", "agentops": "0.3.26", "distro": "1.9.0", "jiter": "0.5.0", "openai": + "1.61.0", "regex": "2024.9.11", "tiktoken": "0.7.0", "markupsafe": "3.0.2", + "jinja2": "3.1.4", "litellm": "1.60.2", "json5": "0.10.0", "jsonpickle": "3.3.0", + "networkx": "3.4.2", "traitlets": "5.14.3", "executing": "2.1.0", "six": "1.16.0", + "asttokens": "2.4.1", "pure_eval": "0.2.3", "stack_data": "0.6.3", "decorator": + "5.1.1", "wcwidth": "0.2.13", "prompt_toolkit": "3.0.48", "parso": "0.8.4", + "colorama": "0.4.6", "jedi": "0.19.1", "IPython": "8.28.0", "pyvis": "0.3.2", + "crewai": "0.102.0"}}, "OS": {"Hostname": "Lorenzes-MacBook-Pro.local", "OS": + "Darwin", "OS Version": "Darwin Kernel Version 24.0.0: Mon Aug 12 20:51:54 PDT + 2024; root:xnu-11215.1.10~2/RELEASE_ARM64_T6000", "OS Release": "24.0.0"}, "CPU": + {"Physical cores": 10, "Total cores": 10, "CPU Usage": "21.8%"}, "RAM": {"Total": + "32.00 GB", "Available": "9.89 GB", "Used": "12.38 GB", "Percentage": "69.1%"}, + "Disk": {"/dev/disk3s1s1": {"Mountpoint": "/", "Total": "926.35 GB", "Used": + "9.94 GB", "Free": "2.64 GB", "Percentage": "79.0%"}, "/dev/disk3s6": {"Mountpoint": + "/System/Volumes/VM", "Total": "926.35 GB", "Used": "1.00 GB", "Free": "2.64 + GB", "Percentage": "27.5%"}, "/dev/disk3s2": {"Mountpoint": "/System/Volumes/Preboot", + "Total": "926.35 GB", "Used": "6.75 GB", "Free": "2.64 GB", "Percentage": "71.9%"}, + "/dev/disk3s4": {"Mountpoint": "/System/Volumes/Update", "Total": "926.35 GB", + "Used": "0.00 GB", "Free": "2.64 GB", "Percentage": "0.1%"}, "/dev/disk1s2": + {"Mountpoint": "/System/Volumes/xarts", "Total": "0.49 GB", "Used": "0.01 GB", + "Free": "0.47 GB", "Percentage": "1.2%"}, "/dev/disk1s1": {"Mountpoint": "/System/Volumes/iSCPreboot", + "Total": "0.49 GB", "Used": "0.01 GB", "Free": "0.47 GB", "Percentage": "1.1%"}, + "/dev/disk1s3": {"Mountpoint": "/System/Volumes/Hardware", "Total": "0.49 GB", + "Used": "0.00 GB", "Free": "0.47 GB", "Percentage": "0.8%"}, "/dev/disk3s5": + {"Mountpoint": "/System/Volumes/Data", "Total": "926.35 GB", "Used": "904.02 + GB", "Free": "2.64 GB", "Percentage": "99.7%"}, "/dev/disk5s1": {"Mountpoint": + "/Library/Developer/CoreSimulator/Volumes/iOS_21A342", "Total": "15.95 GB", + "Used": "15.45 GB", "Free": "0.46 GB", "Percentage": "97.1%"}}, "Installed Packages": + {"Installed Packages": {"flatbuffers": "24.3.25", "google-api-core": "2.24.1", + "shellingham": "1.5.4", "mkdocs": "1.6.1", "mergedeep": "1.3.4", "opencv-python-headless": + "4.11.0.86", "pyright": "1.1.393", "shapely": "2.0.7", "tomli": "2.0.2", "ruff": + "0.8.2", "coloredlogs": "15.0.1", "Rtree": "1.3.0", "pytest-asyncio": "0.24.0", + "humanfriendly": "10.0", "executing": "2.1.0", "uv": "0.4.26", "pexpect": "4.9.0", + "pandas": "2.2.3", "pyyaml_env_tag": "0.1", "lazy_loader": "0.4", "PyJWT": "2.9.0", + "decorator": "5.1.1", "filelock": "3.16.1", "idna": "3.10", "embedchain": "0.1.126", + "traitlets": "5.14.3", "ipython": "8.28.0", "tomli_w": "1.1.0", "opentelemetry-exporter-otlp-proto-http": + "1.27.0", "pyasn1_modules": "0.4.1", "Markdown": "3.7", "distlib": "0.3.9", + "pyvis": "0.3.2", "termcolor": "2.4.0", "watchdog": "5.0.3", "tifffile": "2025.2.18", + "multidict": "6.1.0", "ptyprocess": "0.7.0", "langchain": "0.3.19", "aiosignal": + "1.3.1", "cssselect2": "0.7.0", "griffe": "1.5.1", "grpc-google-iam-v1": "0.14.0", + "zipp": "3.20.2", "mkdocs-get-deps": "0.2.0", "importlib_resources": "6.4.5", + "litellm": "1.60.2", "google-auth": "2.35.0", "Mako": "1.3.9", "mkdocs-material-extensions": + "1.3.1", "latex2mathml": "3.77.0", "urllib3": "2.2.3", "overrides": "7.7.0", + "parso": "0.8.4", "pytest": "8.3.3", "webencodings": "0.5.1", "colorama": "0.4.6", + "orjson": "3.10.10", "langchain-community": "0.3.17", "lancedb": "0.18.0", "langchain-openai": + "0.2.14", "google-cloud-resource-manager": "1.14.0", "rich": "13.9.3", "schema": + "0.7.7", "propcache": "0.2.0", "python-docx": "1.1.2", "defusedxml": "0.7.1", + "referencing": "0.35.1", "paginate": "0.5.7", "semchunk": "2.2.2", "requests": + "2.32.3", "frozenlist": "1.5.0", "multiprocess": "0.70.17", "openpyxl": "3.1.5", + "Jinja2": "3.1.4", "httpx-sse": "0.4.0", "cryptography": "43.0.3", "transformers": + "4.49.0", "docling": "2.24.0", "websockets": "13.1", "chromadb": "0.5.23", "blinker": + "1.9.0", "soupsieve": "2.6", "ninja": "1.11.1.3", "tqdm": "4.66.5", "qdrant-client": + "1.13.2", "markdown-it-py": "3.0.0", "sympy": "1.13.3", "six": "1.16.0", "mypy-extensions": + "1.0.0", "posthog": "3.7.0", "h11": "0.14.0", "googleapis-common-protos": "1.65.0", + "fsspec": "2024.10.0", "networkx": "3.4.2", "grpcio": "1.67.0", "python-pptx": + "1.0.2", "marko": "2.1.2", "et_xmlfile": "2.0.0", "typing-inspect": "0.9.0", + "protobuf": "4.25.5", "ghp-import": "2.1.0", "grpcio-status": "1.70.0", "auth0-python": + "4.7.2", "pymdown-extensions": "10.11.2", "iniconfig": "2.0.0", "beautifulsoup4": + "4.13.3", "SQLAlchemy": "2.0.38", "crewai-tools": "0.33.0", "google-resumable-media": + "2.7.2", "grpcio-tools": "1.70.0", "uvicorn": "0.32.0", "chroma-hnswlib": "0.7.6", + "jsonpatch": "1.33", "click": "8.1.8", "jsonpointer": "3.0.0", "lxml": "5.3.1", + "numpy": "1.26.4", "docstring_parser": "0.16", "attrs": "24.2.0", "mkdocstrings-python": + "1.12.2", "crewai": "0.102.0", "cairocffi": "1.7.1", "packaging": "23.2", "kubernetes": + "31.0.0", "appdirs": "1.4.4", "certifi": "2024.8.30", "h2": "4.2.0", "starlette": + "0.41.0", "tenacity": "9.0.0", "cffi": "1.17.1", "pytest-vcr": "1.0.2", "aiohttp": + "3.11.11", "jsonschema": "4.23.0", "google-crc32c": "1.6.0", "pdfminer.six": + "20231228", "mypy": "1.13.0", "opentelemetry-exporter-otlp-proto-common": "1.27.0", + "pyasn1": "0.6.1", "stack-data": "0.6.3", "asttokens": "2.4.1", "cachetools": + "5.5.0", "portalocker": "2.10.1", "asgiref": "3.8.1", "pypdfium2": "4.30.0", + "typer": "0.12.5", "dataclasses-json": "0.6.7", "pathspec": "0.12.1", "oauthlib": + "3.2.2", "identify": "2.6.1", "psutil": "6.0.0", "docling-core": "2.20.0", "mpire": + "2.10.2", "pylance": "0.22.0", "jedi": "0.19.1", "alembic": "1.14.1", "python-dotenv": + "1.0.1", "mkdocs-material": "9.5.42", "aiohappyeyeballs": "2.4.3", "opentelemetry-instrumentation": + "0.48b0", "loguru": "0.7.3", "docling-parse": "3.4.0", "langchain-text-splitters": + "0.3.6", "watchfiles": "0.24.0", "bcrypt": "4.2.0", "sniffio": "1.3.1", "nodeenv": + "1.9.1", "docling-ibm-models": "3.4.0", "jsonpickle": "3.3.0", "safetensors": + "0.5.2", "google-cloud-storage": "2.19.0", "jsonschema-specifications": "2024.10.1", + "mdurl": "0.1.2", "fastavro": "1.10.0", "cfgv": "3.4.0", "python-dateutil": + "2.9.0.post0", "mpmath": "1.3.0", "json_repair": "0.30.0", "build": "1.2.2.post1", + "types-requests": "2.32.0.20241016", "pytz": "2024.2", "huggingface-hub": "0.26.1", + "yarl": "1.18.3", "jsonref": "1.1.0", "rsa": "4.9", "wcwidth": "0.2.13", "google-cloud-aiplatform": + "1.81.0", "torch": "2.6.0", "langchain-cohere": "0.3.5", "langchain-experimental": + "0.3.4", "scipy": "1.15.2", "json5": "0.10.0", "opentelemetry-sdk": "1.27.0", + "opentelemetry-util-http": "0.48b0", "tzdata": "2025.1", "babel": "2.16.0", + "langchain-core": "0.3.36", "virtualenv": "20.27.0", "importlib_metadata": "8.4.0", + "easyocr": "1.7.2", "pydantic_core": "2.27.2", "cohere": "5.13.12", "prompt_toolkit": + "3.0.48", "pycparser": "2.22", "proto-plus": "1.26.0", "pydantic": "2.10.4", + "pluggy": "1.5.0", "torchvision": "0.21.0", "pypdf": "5.3.0", "py_rust_stemmers": + "0.1.3", "tiktoken": "0.7.0", "opentelemetry-instrumentation-fastapi": "0.48b0", + "agentops": "0.3.26", "setuptools": "75.2.0", "google-cloud-core": "2.4.1", + "imageio": "2.37.0", "pure_eval": "0.2.3", "pdfplumber": "0.11.4", "deprecation": + "2.1.0", "distro": "1.9.0", "fastembed": "0.5.1", "pillow": "10.4.0", "pydantic-settings": + "2.7.1", "requests-toolbelt": "1.0.0", "mem0ai": "0.1.52", "docker": "7.1.0", + "httptools": "0.6.4", "mkdocs-autorefs": "1.2.0", "httpx": "0.27.0", "typing_extensions": + "4.12.2", "jiter": "0.5.0", "PyYAML": "6.0.2", "matplotlib-inline": "0.1.7", + "weaviate-client": "3.26.7", "tokenizers": "0.20.1", "opentelemetry-exporter-otlp-proto-grpc": + "1.27.0", "rpds-py": "0.20.0", "monotonic": "1.6", "charset-normalizer": "3.4.0", + "backoff": "2.2.1", "pytube": "15.0.0", "Deprecated": "1.2.14", "regex": "2024.9.11", + "onnxruntime": "1.19.2", "hpack": "4.1.0", "tinycss2": "1.3.0", "instructor": + "1.6.3", "filetype": "1.2.0", "opentelemetry-instrumentation-asgi": "0.48b0", + "Authlib": "1.4.1", "google-cloud-bigquery": "3.29.0", "pyproject_hooks": "1.2.0", + "opentelemetry-api": "1.27.0", "pyclipper": "1.3.0.post6", "vcrpy": "5.1.0", + "pre_commit": "4.0.1", "uvloop": "0.21.0", "platformdirs": "4.3.6", "openai": + "1.61.0", "marshmallow": "3.26.1", "annotated-types": "0.7.0", "mkdocstrings": + "0.26.2", "opentelemetry-proto": "1.27.0", "anyio": "4.6.2.post1", "opentelemetry-semantic-conventions": + "0.48b0", "grpcio-health-checking": "1.67.0", "PyPika": "0.48.9", "gptcache": + "0.1.44", "pysbd": "0.3.4", "scikit-image": "0.25.2", "httpcore": "1.0.6", "Pygments": + "2.18.0", "XlsxWriter": "3.2.2", "hyperframe": "6.1.0", "langsmith": "0.1.147", + "requests-oauthlib": "2.0.0", "durationpy": "0.9", "validators": "0.34.0", "CairoSVG": + "2.7.1", "fastapi": "0.115.3", "jsonlines": "3.1.0", "tabulate": "0.9.0", "pyarrow": + "19.0.0", "python-bidi": "0.6.6", "dill": "0.3.9", "pytest-subprocess": "1.5.2", + "wrapt": "1.16.0", "mmh3": "4.1.0", "websocket-client": "1.8.0", "MarkupSafe": + "3.0.2"}}, "Project Working Directory": {"Project Working Directory": "/Users/lorenzejay/Documents/Uplift + Digital Solutions/clients/crewai-org/crewAI"}, "Virtual Environment": {"Virtual + Environment": "/Users/lorenzejay/Documents/Uplift Digital Solutions/clients/crewai-org/crewAI/.venv"}}, + "config": "", "jwt": null, "_lock": "", "_end_session_lock": "", "token_cost": + "", "_session_url": "", "event_counts": {"llms": 0, "tools": 0, "actions": 0, + "errors": 0, "apis": 0}}}' headers: Accept: - '*/*' @@ -204,7 +605,562 @@ interactions: Connection: - keep-alive Content-Length: - - '4896' + - '11629' + Content-Type: + - application/json; charset=UTF-8 + Keep-Alive: + - timeout=10, max=1000 + User-Agent: + - python-requests/2.32.3 + X-Agentops-Api-Key: + - e6568f10-56cf-4e37-9415-86e979a7f309 + method: POST + uri: https://api.agentops.ai/v2/create_session + response: + body: + string: '{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uX2lkIjoiNzM1MzRlNDgtZGQ1YS00ZWY0LWE3MDItZmJiYmE5ZDAwZjI3IiwiZXhwIjoxNzQwMjY2NDY0LjE3MDgwN30.gkiHROHd6xvHJ5IK83zGZQqIezGFCMsKbmGUer3QdrM","session_url":"https://app.agentops.ai/drilldown?session_id=73534e48-dd5a-4ef4-a702-fbbba9d00f27","status":"Success"}' + headers: + Content-Length: + - '311' + Content-Type: + - application/json + Date: + - Fri, 21 Feb 2025 23:21:04 GMT + Server: + - railway-edge + X-Railway-Request-Id: + - rqR5EYLXQXOp9NjRX4RR6g_3485859946 + status: + code: 200 + message: OK +- request: + body: '{"id": "17cf1c67-f8ad-4336-ac7e-c4500b5ec2a6", "name": "base_agent"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '68' + Content-Type: + - application/json; charset=UTF-8 + Keep-Alive: + - timeout=10, max=1000 + User-Agent: + - python-requests/2.32.3 + X-Agentops-Api-Key: + - e6568f10-56cf-4e37-9415-86e979a7f309 + method: POST + uri: https://api.agentops.ai/v2/create_agent + response: + body: + string: '"Success"' + headers: + Content-Length: + - '9' + Content-Type: + - application/json + Date: + - Fri, 21 Feb 2025 23:21:04 GMT + Server: + - railway-edge + X-Railway-Request-Id: + - 45OTupi5TouV2-HzrlkiOw_3167001623 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.32.3 + method: GET + uri: https://pypi.org/pypi/agentops/json + response: + body: + string: "{\"info\":{\"author\":null,\"author_email\":\"Alex Reibman , + Shawn Qiu , Braelyn Boynton , Howard + Gil , Constantin Teodorescu , Pratyush + Shukla \",\"bugtrack_url\":null,\"classifiers\":[\"License + :: OSI Approved :: MIT License\",\"Operating System :: OS Independent\",\"Programming + Language :: Python :: 3\",\"Programming Language :: Python :: 3.10\",\"Programming + Language :: Python :: 3.11\",\"Programming Language :: Python :: 3.12\",\"Programming + Language :: Python :: 3.13\",\"Programming Language :: Python :: 3.9\"],\"description\":\"\\n\\n
\\n Observability and + DevTool platform for AI Agents\\n
\\n\\n
\\n\\n
\\n + \ \\n \\\"Downloads\\\"\\n \\n \\n + \ \\\"git\\n \\n \\\"PyPI\\n \\n + \ \\\"License:\\n \\n
\\n\\n

\\n + \ \\n \\\"Twitter\\\"\\n \\n \\n + \ \\\"Discord\\\"\\n \\n \\n + \ \\\"Dashboard\\\"\\n \\n \\n + \ \\\"Documentation\\\"\\n \\n \\n + \ \\\"Chat\\n \\n

\\n\\n\\n\\n
\\n \\\"Dashboard\\n
\\n\\n
\\n\\n\\nAgentOps helps developers + build, evaluate, and monitor AI agents. From prototype to production.\\n\\n| + \ | |\\n| + ------------------------------------- | ------------------------------------------------------------- + |\\n| \U0001F4CA **Replay Analytics and Debugging** | Step-by-step agent execution + graphs |\\n| \U0001F4B8 **LLM Cost Management** + \ | Track spend with LLM foundation model providers |\\n| + \U0001F9EA **Agent Benchmarking** | Test your agents against 1,000+ + evals |\\n| \U0001F510 **Compliance and Security** + \ | Detect common prompt injection and data exfiltration exploits |\\n| + \U0001F91D **Framework Integrations** | Native Integrations with CrewAI, + AG2(AutoGen), Camel AI, & LangChain |\\n\\n## Quick Start \u2328\uFE0F\\n\\n```bash\\npip + install agentops\\n```\\n\\n\\n#### Session replays in 2 lines of code\\n\\nInitialize + the AgentOps client and automatically get analytics on all your LLM calls.\\n\\n[Get + an API key](https://app.agentops.ai/settings/projects)\\n\\n```python\\nimport + agentops\\n\\n# Beginning of your program (i.e. main.py, __init__.py)\\nagentops.init( + < INSERT YOUR API KEY HERE >)\\n\\n...\\n\\n# End of program\\nagentops.end_session('Success')\\n```\\n\\nAll + your sessions can be viewed on the [AgentOps dashboard](https://app.agentops.ai?ref=gh)\\n
\\n\\n
\\n + \ Agent Debugging\\n \\n + \ \\\"Agent\\n \\n \\n + \ \\\"Chat\\n \\n \\n + \ \\\"Event\\n \\n
\\n\\n
\\n + \ Session Replays\\n \\n + \ \\\"Session\\n \\n
\\n\\n
\\n Summary Analytics\\n \\n + \ \\\"Summary\\n \\n \\n + \ \\\"Summary\\n \\n
\\n\\n\\n### + First class Developer Experience\\nAdd powerful observability to your agents, + tools, and functions with as little code as possible: one line at a time.\\n
\\nRefer + to our [documentation](http://docs.agentops.ai)\\n\\n```python\\n# Automatically + associate all Events with the agent that originated them\\nfrom agentops import + track_agent\\n\\n@track_agent(name='SomeCustomName')\\nclass MyAgent:\\n ...\\n```\\n\\n```python\\n# + Automatically create ToolEvents for tools that agents will use\\nfrom agentops + import record_tool\\n\\n@record_tool('SampleToolName')\\ndef sample_tool(...):\\n + \ ...\\n```\\n\\n```python\\n# Automatically create ActionEvents for other + functions.\\nfrom agentops import record_action\\n\\n@agentops.record_action('sample + function being record')\\ndef sample_function(...):\\n ...\\n```\\n\\n```python\\n# + Manually record any other Events\\nfrom agentops import record, ActionEvent\\n\\nrecord(ActionEvent(\\\"received_user_input\\\"))\\n```\\n\\n## + Integrations \U0001F9BE\\n\\n### CrewAI \U0001F6F6\\n\\nBuild Crew agents + with observability with only 2 lines of code. Simply set an `AGENTOPS_API_KEY` + in your environment, and your crews will get automatic monitoring on the AgentOps + dashboard.\\n\\n```bash\\npip install 'crewai[agentops]'\\n```\\n\\n- [AgentOps + integration example](https://docs.agentops.ai/v1/integrations/crewai)\\n- + [Official CrewAI documentation](https://docs.crewai.com/how-to/AgentOps-Observability)\\n\\n### + AG2 \U0001F916\\nWith only two lines of code, add full observability and monitoring + to AG2 (formerly AutoGen) agents. Set an `AGENTOPS_API_KEY` in your environment + and call `agentops.init()`\\n\\n- [AG2 Observability Example](https://docs.ag2.ai/notebooks/agentchat_agentops)\\n- + [AG2 - AgentOps Documentation](https://docs.ag2.ai/docs/ecosystem/agentops)\\n\\n### + Camel AI \U0001F42A\\n\\nTrack and analyze CAMEL agents with full observability. + Set an `AGENTOPS_API_KEY` in your environment and initialize AgentOps to get + started.\\n\\n- [Camel AI](https://www.camel-ai.org/) - Advanced agent communication + framework\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/camel)\\n- + [Official Camel AI documentation](https://docs.camel-ai.org/cookbooks/agents_tracking.html)\\n\\n
\\n + \ Installation\\n\\n```bash\\npip install \\\"camel-ai[all]==0.2.11\\\"\\npip + install agentops\\n```\\n\\n```python\\nimport os\\nimport agentops\\nfrom + camel.agents import ChatAgent\\nfrom camel.messages import BaseMessage\\nfrom + camel.models import ModelFactory\\nfrom camel.types import ModelPlatformType, + ModelType\\n\\n# Initialize AgentOps\\nagentops.init(os.getenv(\\\"AGENTOPS_API_KEY\\\"), + default_tags=[\\\"CAMEL Example\\\"])\\n\\n# Import toolkits after AgentOps + init for tracking\\nfrom camel.toolkits import SearchToolkit\\n\\n# Set up + the agent with search tools\\nsys_msg = BaseMessage.make_assistant_message(\\n + \ role_name='Tools calling operator',\\n content='You are a helpful assistant'\\n)\\n\\n# + Configure tools and model\\ntools = [*SearchToolkit().get_tools()]\\nmodel + = ModelFactory.create(\\n model_platform=ModelPlatformType.OPENAI,\\n model_type=ModelType.GPT_4O_MINI,\\n)\\n\\n# + Create and run the agent\\ncamel_agent = ChatAgent(\\n system_message=sys_msg,\\n + \ model=model,\\n tools=tools,\\n)\\n\\nresponse = camel_agent.step(\\\"What + is AgentOps?\\\")\\nprint(response)\\n\\nagentops.end_session(\\\"Success\\\")\\n```\\n\\nCheck + out our [Camel integration guide](https://docs.agentops.ai/v1/integrations/camel) + for more examples including multi-agent scenarios.\\n
\\n\\n### Langchain + \U0001F99C\U0001F517\\n\\nAgentOps works seamlessly with applications built + using Langchain. To use the handler, install Langchain as an optional dependency:\\n\\n
\\n + \ Installation\\n \\n```shell\\npip install agentops[langchain]\\n```\\n\\nTo + use the handler, import and set\\n\\n```python\\nimport os\\nfrom langchain.chat_models + import ChatOpenAI\\nfrom langchain.agents import initialize_agent, AgentType\\nfrom + agentops.partners.langchain_callback_handler import LangchainCallbackHandler\\n\\nAGENTOPS_API_KEY + = os.environ['AGENTOPS_API_KEY']\\nhandler = LangchainCallbackHandler(api_key=AGENTOPS_API_KEY, + tags=['Langchain Example'])\\n\\nllm = ChatOpenAI(openai_api_key=OPENAI_API_KEY,\\n + \ callbacks=[handler],\\n model='gpt-3.5-turbo')\\n\\nagent + = initialize_agent(tools,\\n llm,\\n agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,\\n + \ verbose=True,\\n callbacks=[handler], + # You must pass in a callback handler to record your agent\\n handle_parsing_errors=True)\\n```\\n\\nCheck + out the [Langchain Examples Notebook](./examples/langchain_examples.ipynb) + for more details including Async handlers.\\n\\n
\\n\\n### Cohere + \u2328\uFE0F\\n\\nFirst class support for Cohere(>=5.4.0). This is a living + integration, should you need any added functionality please message us on + Discord!\\n\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/cohere)\\n- + [Official Cohere documentation](https://docs.cohere.com/reference/about)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install cohere\\n```\\n\\n```python + python\\nimport cohere\\nimport agentops\\n\\n# Beginning of program's code + (i.e. main.py, __init__.py)\\nagentops.init()\\nco + = cohere.Client()\\n\\nchat = co.chat(\\n message=\\\"Is it pronounced + ceaux-hear or co-hehray?\\\"\\n)\\n\\nprint(chat)\\n\\nagentops.end_session('Success')\\n```\\n\\n```python + python\\nimport cohere\\nimport agentops\\n\\n# Beginning of program's code + (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nco + = cohere.Client()\\n\\nstream = co.chat_stream(\\n message=\\\"Write me + a haiku about the synergies between Cohere and AgentOps\\\"\\n)\\n\\nfor event + in stream:\\n if event.event_type == \\\"text-generation\\\":\\n print(event.text, + end='')\\n\\nagentops.end_session('Success')\\n```\\n
\\n\\n\\n### + Anthropic \uFE68\\n\\nTrack agents built with the Anthropic Python SDK (>=0.32.0).\\n\\n- + [AgentOps integration guide](https://docs.agentops.ai/v1/integrations/anthropic)\\n- + [Official Anthropic documentation](https://docs.anthropic.com/en/docs/welcome)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install anthropic\\n```\\n\\n```python + python\\nimport anthropic\\nimport agentops\\n\\n# Beginning of program's + code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient + = anthropic.Anthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\nmessage + = client.messages.create(\\n max_tokens=1024,\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me a cool fact about AgentOps\\\",\\n }\\n ],\\n + \ model=\\\"claude-3-opus-20240229\\\",\\n )\\nprint(message.content)\\n\\nagentops.end_session('Success')\\n```\\n\\nStreaming\\n```python + python\\nimport anthropic\\nimport agentops\\n\\n# Beginning of program's + code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient + = anthropic.Anthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\nstream + = client.messages.create(\\n max_tokens=1024,\\n model=\\\"claude-3-opus-20240229\\\",\\n + \ messages=[\\n {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something cool about streaming agents\\\",\\n }\\n ],\\n + \ stream=True,\\n)\\n\\nresponse = \\\"\\\"\\nfor event in stream:\\n if + event.type == \\\"content_block_delta\\\":\\n response += event.delta.text\\n + \ elif event.type == \\\"message_stop\\\":\\n print(\\\"\\\\n\\\")\\n + \ print(response)\\n print(\\\"\\\\n\\\")\\n```\\n\\nAsync\\n\\n```python + python\\nimport asyncio\\nfrom anthropic import AsyncAnthropic\\n\\nclient + = AsyncAnthropic(\\n # This is the default and can be omitted\\n api_key=os.environ.get(\\\"ANTHROPIC_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.messages.create(\\n max_tokens=1024,\\n + \ messages=[\\n {\\n \\\"role\\\": \\\"user\\\",\\n + \ \\\"content\\\": \\\"Tell me something interesting about async + agents\\\",\\n }\\n ],\\n model=\\\"claude-3-opus-20240229\\\",\\n + \ )\\n print(message.content)\\n\\n\\nawait main()\\n```\\n
\\n\\n### + Mistral \u303D\uFE0F\\n\\nTrack agents built with the Anthropic Python SDK + (>=0.32.0).\\n\\n- [AgentOps integration example](./examples/mistral//mistral_example.ipynb)\\n- + [Official Mistral documentation](https://docs.mistral.ai)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install mistralai\\n```\\n\\nSync\\n\\n```python + python\\nfrom mistralai import Mistral\\nimport agentops\\n\\n# Beginning + of program's code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient = Mistral(\\n # This is the default and can + be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\nmessage + = client.chat.complete(\\n messages=[\\n {\\n \\\"role\\\": + \\\"user\\\",\\n \\\"content\\\": \\\"Tell me a cool fact about + AgentOps\\\",\\n }\\n ],\\n model=\\\"open-mistral-nemo\\\",\\n + \ )\\nprint(message.choices[0].message.content)\\n\\nagentops.end_session('Success')\\n```\\n\\nStreaming\\n\\n```python + python\\nfrom mistralai import Mistral\\nimport agentops\\n\\n# Beginning + of program's code (i.e. main.py, __init__.py)\\nagentops.init()\\n\\nclient = Mistral(\\n # This is the default and can + be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\nmessage + = client.chat.stream(\\n messages=[\\n {\\n \\\"role\\\": + \\\"user\\\",\\n \\\"content\\\": \\\"Tell me something cool + about streaming agents\\\",\\n }\\n ],\\n model=\\\"open-mistral-nemo\\\",\\n + \ )\\n\\nresponse = \\\"\\\"\\nfor event in message:\\n if event.data.choices[0].finish_reason + == \\\"stop\\\":\\n print(\\\"\\\\n\\\")\\n print(response)\\n + \ print(\\\"\\\\n\\\")\\n else:\\n response += event.text\\n\\nagentops.end_session('Success')\\n```\\n\\nAsync\\n\\n```python + python\\nimport asyncio\\nfrom mistralai import Mistral\\n\\nclient = Mistral(\\n + \ # This is the default and can be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.chat.complete_async(\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something interesting about async agents\\\",\\n }\\n + \ ],\\n model=\\\"open-mistral-nemo\\\",\\n )\\n print(message.choices[0].message.content)\\n\\n\\nawait + main()\\n```\\n\\nAsync Streaming\\n\\n```python python\\nimport asyncio\\nfrom + mistralai import Mistral\\n\\nclient = Mistral(\\n # This is the default + and can be omitted\\n api_key=os.environ.get(\\\"MISTRAL_API_KEY\\\"),\\n)\\n\\n\\nasync + def main() -> None:\\n message = await client.chat.stream_async(\\n messages=[\\n + \ {\\n \\\"role\\\": \\\"user\\\",\\n \\\"content\\\": + \\\"Tell me something interesting about async streaming agents\\\",\\n }\\n + \ ],\\n model=\\\"open-mistral-nemo\\\",\\n )\\n\\n response + = \\\"\\\"\\n async for event in message:\\n if event.data.choices[0].finish_reason + == \\\"stop\\\":\\n print(\\\"\\\\n\\\")\\n print(response)\\n + \ print(\\\"\\\\n\\\")\\n else:\\n response += + event.text\\n\\n\\nawait main()\\n```\\n
\\n\\n\\n\\n### CamelAI + \uFE68\\n\\nTrack agents built with the CamelAI Python SDK (>=0.32.0).\\n\\n- + [CamelAI integration guide](https://docs.camel-ai.org/cookbooks/agents_tracking.html#)\\n- + [Official CamelAI documentation](https://docs.camel-ai.org/index.html)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install camel-ai[all]\\npip + install agentops\\n```\\n\\n```python python\\n#Import Dependencies\\nimport + agentops\\nimport os\\nfrom getpass import getpass\\nfrom dotenv import load_dotenv\\n\\n#Set + Keys\\nload_dotenv()\\nopenai_api_key = os.getenv(\\\"OPENAI_API_KEY\\\") + or \\\"\\\"\\nagentops_api_key = os.getenv(\\\"AGENTOPS_API_KEY\\\") + or \\\"\\\"\\n\\n\\n\\n```\\n
\\n\\n[You + can find usage examples here!](examples/camelai_examples/README.md).\\n\\n\\n\\n### + LiteLLM \U0001F685\\n\\nAgentOps provides support for LiteLLM(>=1.3.1), allowing + you to call 100+ LLMs using the same Input/Output Format. \\n\\n- [AgentOps + integration example](https://docs.agentops.ai/v1/integrations/litellm)\\n- + [Official LiteLLM documentation](https://docs.litellm.ai/docs/providers)\\n\\n
\\n + \ Installation\\n \\n```bash\\npip install litellm\\n```\\n\\n```python + python\\n# Do not use LiteLLM like this\\n# from litellm import completion\\n# + ...\\n# response = completion(model=\\\"claude-3\\\", messages=messages)\\n\\n# + Use LiteLLM like this\\nimport litellm\\n...\\nresponse = litellm.completion(model=\\\"claude-3\\\", + messages=messages)\\n# or\\nresponse = await litellm.acompletion(model=\\\"claude-3\\\", + messages=messages)\\n```\\n
\\n\\n### LlamaIndex \U0001F999\\n\\n\\nAgentOps + works seamlessly with applications built using LlamaIndex, a framework for + building context-augmented generative AI applications with LLMs.\\n\\n
\\n + \ Installation\\n \\n```shell\\npip install llama-index-instrumentation-agentops\\n```\\n\\nTo + use the handler, import and set\\n\\n```python\\nfrom llama_index.core import + set_global_handler\\n\\n# NOTE: Feel free to set your AgentOps environment + variables (e.g., 'AGENTOPS_API_KEY')\\n# as outlined in the AgentOps documentation, + or pass the equivalent keyword arguments\\n# anticipated by AgentOps' AOClient + as **eval_params in set_global_handler.\\n\\nset_global_handler(\\\"agentops\\\")\\n```\\n\\nCheck + out the [LlamaIndex docs](https://docs.llamaindex.ai/en/stable/module_guides/observability/?h=agentops#agentops) + for more details.\\n\\n
\\n\\n### Llama Stack \U0001F999\U0001F95E\\n\\nAgentOps + provides support for Llama Stack Python Client(>=0.0.53), allowing you to + monitor your Agentic applications. \\n\\n- [AgentOps integration example 1](https://github.com/AgentOps-AI/agentops/pull/530/files/65a5ab4fdcf310326f191d4b870d4f553591e3ea#diff-fdddf65549f3714f8f007ce7dfd1cde720329fe54155d54389dd50fbd81813cb)\\n- + [AgentOps integration example 2](https://github.com/AgentOps-AI/agentops/pull/530/files/65a5ab4fdcf310326f191d4b870d4f553591e3ea#diff-6688ff4fb7ab1ce7b1cc9b8362ca27264a3060c16737fb1d850305787a6e3699)\\n- + [Official Llama Stack Python Client](https://github.com/meta-llama/llama-stack-client-python)\\n\\n### + SwarmZero AI \U0001F41D\\n\\nTrack and analyze SwarmZero agents with full + observability. Set an `AGENTOPS_API_KEY` in your environment and initialize + AgentOps to get started.\\n\\n- [SwarmZero](https://swarmzero.ai) - Advanced + multi-agent framework\\n- [AgentOps integration example](https://docs.agentops.ai/v1/integrations/swarmzero)\\n- + [SwarmZero AI integration example](https://docs.swarmzero.ai/examples/ai-agents/build-and-monitor-a-web-search-agent)\\n- + [SwarmZero AI - AgentOps documentation](https://docs.swarmzero.ai/sdk/observability/agentops)\\n- + [Official SwarmZero Python SDK](https://github.com/swarmzero/swarmzero)\\n\\n
\\n + \ Installation\\n\\n```bash\\npip install swarmzero\\npip + install agentops\\n```\\n\\n```python\\nfrom dotenv import load_dotenv\\nload_dotenv()\\n\\nimport + agentops\\nagentops.init()\\n\\nfrom swarmzero import + Agent, Swarm\\n# ...\\n```\\n
\\n\\n## Time travel debugging \U0001F52E\\n\\n
\\n \\\"Time\\n
\\n\\n
\\n\\n[Try it out!](https://app.agentops.ai/timetravel)\\n\\n## + Agent Arena \U0001F94A\\n\\n(coming soon!)\\n\\n## Evaluations Roadmap \U0001F9ED\\n\\n| + Platform | + Dashboard | Evals |\\n| + ---------------------------------------------------------------------------- + | ------------------------------------------ | -------------------------------------- + |\\n| \u2705 Python SDK | + \u2705 Multi-session and Cross-session metrics | \u2705 Custom eval metrics + \ |\\n| \U0001F6A7 Evaluation builder API | + \u2705 Custom event tag tracking\_ | \U0001F51C Agent scorecards + \ |\\n| \u2705 [Javascript/Typescript SDK](https://github.com/AgentOps-AI/agentops-node) + | \u2705 Session replays | \U0001F51C Evaluation playground + + leaderboard |\\n\\n## Debugging Roadmap \U0001F9ED\\n\\n| Performance testing + \ | Environments | + LLM Testing | Reasoning and execution testing + \ |\\n| ----------------------------------------- | ----------------------------------------------------------------------------------- + | ------------------------------------------- | ------------------------------------------------- + |\\n| \u2705 Event latency analysis | \U0001F51C Non-stationary + environment testing | \U0001F51C + LLM non-deterministic function detection | \U0001F6A7 Infinite loops and recursive + thought detection |\\n| \u2705 Agent workflow execution pricing | \U0001F51C + Multi-modal environments | + \U0001F6A7 Token limit overflow flags | \U0001F51C Faulty reasoning + detection |\\n| \U0001F6A7 Success validators (external) + \ | \U0001F51C Execution containers | + \U0001F51C Context limit overflow flags | \U0001F51C Generative + code validators |\\n| \U0001F51C Agent controllers/skill + tests | \u2705 Honeypot and prompt injection detection ([PromptArmor](https://promptarmor.com)) + | \U0001F51C API bill tracking | \U0001F51C Error breakpoint + analysis |\\n| \U0001F51C Information context constraint + testing | \U0001F51C Anti-agent roadblocks (i.e. Captchas) | + \U0001F51C CI/CD integration checks | |\\n| + \U0001F51C Regression testing | \U0001F51C Multi-agent + framework visualization | | + \ |\\n\\n### Why AgentOps? + \U0001F914\\n\\nWithout the right tools, AI agents are slow, expensive, and + unreliable. Our mission is to bring your agent from prototype to production. + Here's why AgentOps stands out:\\n\\n- **Comprehensive Observability**: Track + your AI agents' performance, user interactions, and API usage.\\n- **Real-Time + Monitoring**: Get instant insights with session replays, metrics, and live + monitoring tools.\\n- **Cost Control**: Monitor and manage your spend on LLM + and API calls.\\n- **Failure Detection**: Quickly identify and respond to + agent failures and multi-agent interaction issues.\\n- **Tool Usage Statistics**: + Understand how your agents utilize external tools with detailed analytics.\\n- + **Session-Wide Metrics**: Gain a holistic view of your agents' sessions with + comprehensive statistics.\\n\\nAgentOps is designed to make agent observability, + testing, and monitoring easy.\\n\\n\\n## Star History\\n\\nCheck out our growth + in the community:\\n\\n\\\"Logo\\\"\\n\\n## + Popular projects using AgentOps\\n\\n\\n| Repository | Stars |\\n| :-------- + \ | -----: |\\n|\\\"\\\"   [geekan](https://github.com/geekan) + / [MetaGPT](https://github.com/geekan/MetaGPT) | 42787 |\\n|\\\"\\\"   [run-llama](https://github.com/run-llama) + / [llama_index](https://github.com/run-llama/llama_index) | 34446 |\\n|\\\"\\\"   [crewAIInc](https://github.com/crewAIInc) + / [crewAI](https://github.com/crewAIInc/crewAI) | 18287 |\\n|\\\"\\\"   [camel-ai](https://github.com/camel-ai) + / [camel](https://github.com/camel-ai/camel) | 5166 |\\n|\\\"\\\"   [superagent-ai](https://github.com/superagent-ai) + / [superagent](https://github.com/superagent-ai/superagent) | 5050 |\\n|\\\"\\\"   [iyaja](https://github.com/iyaja) + / [llama-fs](https://github.com/iyaja/llama-fs) | 4713 |\\n|\\\"\\\"   [BasedHardware](https://github.com/BasedHardware) + / [Omi](https://github.com/BasedHardware/Omi) | 2723 |\\n|\\\"\\\"   [MervinPraison](https://github.com/MervinPraison) + / [PraisonAI](https://github.com/MervinPraison/PraisonAI) | 2007 |\\n|\\\"\\\"   [AgentOps-AI](https://github.com/AgentOps-AI) + / [Jaiqu](https://github.com/AgentOps-AI/Jaiqu) | 272 |\\n|\\\"\\\"   [swarmzero](https://github.com/swarmzero) + / [swarmzero](https://github.com/swarmzero/swarmzero) | 195 |\\n|\\\"\\\"   [strnad](https://github.com/strnad) + / [CrewAI-Studio](https://github.com/strnad/CrewAI-Studio) | 134 |\\n|\\\"\\\"   [alejandro-ao](https://github.com/alejandro-ao) + / [exa-crewai](https://github.com/alejandro-ao/exa-crewai) | 55 |\\n|\\\"\\\"   [tonykipkemboi](https://github.com/tonykipkemboi) + / [youtube_yapper_trapper](https://github.com/tonykipkemboi/youtube_yapper_trapper) + | 47 |\\n|\\\"\\\"   [sethcoast](https://github.com/sethcoast) + / [cover-letter-builder](https://github.com/sethcoast/cover-letter-builder) + | 27 |\\n|\\\"\\\"   [bhancockio](https://github.com/bhancockio) + / [chatgpt4o-analysis](https://github.com/bhancockio/chatgpt4o-analysis) | + 19 |\\n|\\\"\\\"   [breakstring](https://github.com/breakstring) + / [Agentic_Story_Book_Workflow](https://github.com/breakstring/Agentic_Story_Book_Workflow) + | 14 |\\n|\\\"\\\"   [MULTI-ON](https://github.com/MULTI-ON) + / [multion-python](https://github.com/MULTI-ON/multion-python) | 13 |\\n\\n\\n_Generated + using [github-dependents-info](https://github.com/nvuillam/github-dependents-info), + by [Nicolas Vuillamy](https://github.com/nvuillam)_\\n\",\"description_content_type\":\"text/markdown\",\"docs_url\":null,\"download_url\":null,\"downloads\":{\"last_day\":-1,\"last_month\":-1,\"last_week\":-1},\"dynamic\":null,\"home_page\":null,\"keywords\":null,\"license\":null,\"license_expression\":null,\"license_files\":[\"LICENSE\"],\"maintainer\":null,\"maintainer_email\":null,\"name\":\"agentops\",\"package_url\":\"https://pypi.org/project/agentops/\",\"platform\":null,\"project_url\":\"https://pypi.org/project/agentops/\",\"project_urls\":{\"Homepage\":\"https://github.com/AgentOps-AI/agentops\",\"Issues\":\"https://github.com/AgentOps-AI/agentops/issues\"},\"provides_extra\":null,\"release_url\":\"https://pypi.org/project/agentops/0.3.26/\",\"requires_dist\":[\"opentelemetry-api==1.22.0; + python_version < \\\"3.10\\\"\",\"opentelemetry-api>=1.27.0; python_version + >= \\\"3.10\\\"\",\"opentelemetry-exporter-otlp-proto-http==1.22.0; python_version + < \\\"3.10\\\"\",\"opentelemetry-exporter-otlp-proto-http>=1.27.0; python_version + >= \\\"3.10\\\"\",\"opentelemetry-sdk==1.22.0; python_version < \\\"3.10\\\"\",\"opentelemetry-sdk>=1.27.0; + python_version >= \\\"3.10\\\"\",\"packaging<25.0,>=21.0\",\"psutil<6.1.0,>=5.9.8\",\"pyyaml<7.0,>=5.3\",\"requests<3.0.0,>=2.0.0\",\"termcolor<2.5.0,>=2.3.0\"],\"requires_python\":\"<3.14,>=3.9\",\"summary\":\"Observability + and DevTool Platform for AI Agents\",\"version\":\"0.3.26\",\"yanked\":false,\"yanked_reason\":null},\"last_serial\":27123795,\"releases\":{\"0.0.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9b4641d084346e88671acc02e3a0049d3e0925fe99edd88c8b82700dc3c04d01\",\"md5\":\"2b491f3b3dd01edd4ee37c361087bb46\",\"sha256\":\"f2cb9d59a0413e7977a44a23dbd6a9d89cda5309b63ed08f5c346c7488acf645\"},\"downloads\":-1,\"filename\":\"agentops-0.0.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2b491f3b3dd01edd4ee37c361087bb46\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":10328,\"upload_time\":\"2023-08-21T18:33:47\",\"upload_time_iso_8601\":\"2023-08-21T18:33:47.827866Z\",\"url\":\"https://files.pythonhosted.org/packages/9b/46/41d084346e88671acc02e3a0049d3e0925fe99edd88c8b82700dc3c04d01/agentops-0.0.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b280bf609d98778499bd42df723100a8e910d9b9827cbd00b804cf0b13bb3c87\",\"md5\":\"ff218fc16d45cf72f73d50ee9a0afe82\",\"sha256\":\"5c3d4311b9dde0c71cb475ec99d2963a71604c78d468b333f55e81364f4fe79e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ff218fc16d45cf72f73d50ee9a0afe82\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":11452,\"upload_time\":\"2023-08-21T18:33:49\",\"upload_time_iso_8601\":\"2023-08-21T18:33:49.613830Z\",\"url\":\"https://files.pythonhosted.org/packages/b2/80/bf609d98778499bd42df723100a8e910d9b9827cbd00b804cf0b13bb3c87/agentops-0.0.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"92933862af53105332cb524db237138d3284b5d6abcc7df5fd4406e382372d94\",\"md5\":\"8bdea319b5579775eb88efac72e70cd6\",\"sha256\":\"e8a333567458c1df35538d626bc596f3ba7b8fa2aac5015bc378f3f7f8850669\"},\"downloads\":-1,\"filename\":\"agentops-0.0.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8bdea319b5579775eb88efac72e70cd6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14752,\"upload_time\":\"2023-12-16T01:40:40\",\"upload_time_iso_8601\":\"2023-12-16T01:40:40.867657Z\",\"url\":\"https://files.pythonhosted.org/packages/92/93/3862af53105332cb524db237138d3284b5d6abcc7df5fd4406e382372d94/agentops-0.0.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c63136b1f2e508b67f92ddb5f51f2acf5abdf2bf4b32d5b355d8018b368dc854\",\"md5\":\"87bdcd4d7469d22ce922234d4f0b2b98\",\"sha256\":\"5fbc567bece7b218fc35ce70d208e88e89bb399a9dbf84ab7ad59a2aa559648c\"},\"downloads\":-1,\"filename\":\"agentops-0.0.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"87bdcd4d7469d22ce922234d4f0b2b98\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":15099,\"upload_time\":\"2023-12-16T01:40:42\",\"upload_time_iso_8601\":\"2023-12-16T01:40:42.281826Z\",\"url\":\"https://files.pythonhosted.org/packages/c6/31/36b1f2e508b67f92ddb5f51f2acf5abdf2bf4b32d5b355d8018b368dc854/agentops-0.0.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7125ed114f918332cda824092f620b1002fd76ab6b538dd83711b31c93907139\",\"md5\":\"83ba7e621f01412144aa38306fc1e04c\",\"sha256\":\"cb80823e065d17dc26bdc8fe951ea7e04b23677ef2b4da939669c6fe1b2502bf\"},\"downloads\":-1,\"filename\":\"agentops-0.0.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"83ba7e621f01412144aa38306fc1e04c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":16627,\"upload_time\":\"2023-12-21T19:50:28\",\"upload_time_iso_8601\":\"2023-12-21T19:50:28.595886Z\",\"url\":\"https://files.pythonhosted.org/packages/71/25/ed114f918332cda824092f620b1002fd76ab6b538dd83711b31c93907139/agentops-0.0.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9e037750b04398cda2548bbf3d84ce554c4009592095c060c4904e773f3a43da\",\"md5\":\"5bbb120cc9a5f5ff6fb5dd45691ba279\",\"sha256\":\"cbf0f39768d47e32be448a3ff3ded665fce64ff8a90c0e10692fd7a3ab4790ee\"},\"downloads\":-1,\"filename\":\"agentops-0.0.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"5bbb120cc9a5f5ff6fb5dd45691ba279\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":16794,\"upload_time\":\"2023-12-21T19:50:29\",\"upload_time_iso_8601\":\"2023-12-21T19:50:29.881561Z\",\"url\":\"https://files.pythonhosted.org/packages/9e/03/7750b04398cda2548bbf3d84ce554c4009592095c060c4904e773f3a43da/agentops-0.0.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"adf5cc3e93b2328532ea80b8b36450b8b48a8199ebbe1f75ebb490e57a926b88\",\"md5\":\"694ba49ca8841532039bdf8dc0250b85\",\"sha256\":\"9a2c773efbe3353f60d1b86da12333951dad288ba54839615a53b57e5965bea8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"694ba49ca8841532039bdf8dc0250b85\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18602,\"upload_time\":\"2024-01-03T03:47:07\",\"upload_time_iso_8601\":\"2024-01-03T03:47:07.184203Z\",\"url\":\"https://files.pythonhosted.org/packages/ad/f5/cc3e93b2328532ea80b8b36450b8b48a8199ebbe1f75ebb490e57a926b88/agentops-0.0.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7eb0633ecd30c74a0613c7330ececf0303286622ce429f08ce0daa9ee8cc4ecf\",\"md5\":\"025daef9622472882a1fa58b6c1fddb5\",\"sha256\":\"fbb4c38711a7dff3ab08004591451b5a5c33bea5e496fa71fac668c7284513d2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"025daef9622472882a1fa58b6c1fddb5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19826,\"upload_time\":\"2024-01-03T03:47:08\",\"upload_time_iso_8601\":\"2024-01-03T03:47:08.942790Z\",\"url\":\"https://files.pythonhosted.org/packages/7e/b0/633ecd30c74a0613c7330ececf0303286622ce429f08ce0daa9ee8cc4ecf/agentops-0.0.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3a0f9c1500adb4191531374db4d7920c51aba92c5472d13d172108e881c36948\",\"md5\":\"f0a3b78c15af3ab467778f94fb50bf4a\",\"sha256\":\"3379a231f37a375bda421114a5626643263e84ce951503d0bdff8411149946e0\"},\"downloads\":-1,\"filename\":\"agentops-0.0.13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f0a3b78c15af3ab467778f94fb50bf4a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18709,\"upload_time\":\"2024-01-07T08:57:57\",\"upload_time_iso_8601\":\"2024-01-07T08:57:57.456769Z\",\"url\":\"https://files.pythonhosted.org/packages/3a/0f/9c1500adb4191531374db4d7920c51aba92c5472d13d172108e881c36948/agentops-0.0.13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cbf9a3824bd30d7107aaca8d409165c0a3574a879efd7ca0fea755e903623b61\",\"md5\":\"0ebceb6aad82c0622adcd4c2633fc677\",\"sha256\":\"5e6adf68c2a533496648ea3fabb6e791f39ce810d18dbc1354d118b195fd8556\"},\"downloads\":-1,\"filename\":\"agentops-0.0.13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0ebceb6aad82c0622adcd4c2633fc677\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19933,\"upload_time\":\"2024-01-07T08:57:59\",\"upload_time_iso_8601\":\"2024-01-07T08:57:59.146933Z\",\"url\":\"https://files.pythonhosted.org/packages/cb/f9/a3824bd30d7107aaca8d409165c0a3574a879efd7ca0fea755e903623b61/agentops-0.0.13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.14\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"252b1d8ee3b4ab02215eb1a52865a9f2c209d6d4cbf4a3444fb7faf23b02ca66\",\"md5\":\"a8ba77b0ec0d25072b2e0535a135cc40\",\"sha256\":\"d5bb4661642daf8fc63a257ef0f04ccc5c79a73e73d57ea04190e74d9a3e6df9\"},\"downloads\":-1,\"filename\":\"agentops-0.0.14-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a8ba77b0ec0d25072b2e0535a135cc40\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18710,\"upload_time\":\"2024-01-08T21:52:28\",\"upload_time_iso_8601\":\"2024-01-08T21:52:28.340899Z\",\"url\":\"https://files.pythonhosted.org/packages/25/2b/1d8ee3b4ab02215eb1a52865a9f2c209d6d4cbf4a3444fb7faf23b02ca66/agentops-0.0.14-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"bf3a1fdf85563c47c2fc6571a1406aecb772f644d53a2adabf4981012971587a\",\"md5\":\"1ecf7177ab57738c6663384de20887e5\",\"sha256\":\"c54cee1c9ed1b5b7829fd80d5d01278b1efb50e977e5a890627f4688d0f2afb2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.14.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1ecf7177ab57738c6663384de20887e5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19932,\"upload_time\":\"2024-01-08T21:52:29\",\"upload_time_iso_8601\":\"2024-01-08T21:52:29.988596Z\",\"url\":\"https://files.pythonhosted.org/packages/bf/3a/1fdf85563c47c2fc6571a1406aecb772f644d53a2adabf4981012971587a/agentops-0.0.14.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.15\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0c5374cbe5c78db9faa7c939d1a91eff111c4d3f13f4d8d18920ddd48f89f335\",\"md5\":\"c4528a66151e76c7b1abdcac3c3eaf52\",\"sha256\":\"aa8034dc9a0e9e56014a06fac521fc2a63a968d34f73e4d4c9bef4b0e87f8241\"},\"downloads\":-1,\"filename\":\"agentops-0.0.15-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c4528a66151e76c7b1abdcac3c3eaf52\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18734,\"upload_time\":\"2024-01-23T08:43:24\",\"upload_time_iso_8601\":\"2024-01-23T08:43:24.651479Z\",\"url\":\"https://files.pythonhosted.org/packages/0c/53/74cbe5c78db9faa7c939d1a91eff111c4d3f13f4d8d18920ddd48f89f335/agentops-0.0.15-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"da56c7d8189f4accc182be6729bc44a8006d981173e721ff4751ab784bbadfb3\",\"md5\":\"cd27bff6c943c6fcbed33ed8280ab5ea\",\"sha256\":\"71b0e048d2f1b86744105509436cbb6fa51e6b418a50a8253849dc6cdeda6cca\"},\"downloads\":-1,\"filename\":\"agentops-0.0.15.tar.gz\",\"has_sig\":false,\"md5_digest\":\"cd27bff6c943c6fcbed33ed8280ab5ea\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19985,\"upload_time\":\"2024-01-23T08:43:26\",\"upload_time_iso_8601\":\"2024-01-23T08:43:26.316265Z\",\"url\":\"https://files.pythonhosted.org/packages/da/56/c7d8189f4accc182be6729bc44a8006d981173e721ff4751ab784bbadfb3/agentops-0.0.15.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.16\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b694d78d43f49688829cab72b7326db1d9e3f436f71eed113f26d402fefa6856\",\"md5\":\"657c2cad11b3c8b97469524bff19b916\",\"sha256\":\"e9633dcbc419a47db8de13bd0dc4f5d55f0a50ef3434ffe8e1f8a3468561bd60\"},\"downloads\":-1,\"filename\":\"agentops-0.0.16-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"657c2cad11b3c8b97469524bff19b916\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18736,\"upload_time\":\"2024-01-23T09:03:05\",\"upload_time_iso_8601\":\"2024-01-23T09:03:05.799496Z\",\"url\":\"https://files.pythonhosted.org/packages/b6/94/d78d43f49688829cab72b7326db1d9e3f436f71eed113f26d402fefa6856/agentops-0.0.16-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ec353005c98c1e2642d61510a9977c2118d3baa72f50e3c45ef6a341bfd9a3b0\",\"md5\":\"2f9b28dd0953fdd2da606e19b9131006\",\"sha256\":\"469588d72734fc6e90c66cf9658613baf2a0b94c933a23cab16820435576c61f\"},\"downloads\":-1,\"filename\":\"agentops-0.0.16.tar.gz\",\"has_sig\":false,\"md5_digest\":\"2f9b28dd0953fdd2da606e19b9131006\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19986,\"upload_time\":\"2024-01-23T09:03:07\",\"upload_time_iso_8601\":\"2024-01-23T09:03:07.645949Z\",\"url\":\"https://files.pythonhosted.org/packages/ec/35/3005c98c1e2642d61510a9977c2118d3baa72f50e3c45ef6a341bfd9a3b0/agentops-0.0.16.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.17\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f3b2eff27fc5373097fc4f4d3d90f4d0fad1c3be7b923a6213750fe1cb022e6e\",\"md5\":\"20325afd9b9d9633b120b63967d4ae85\",\"sha256\":\"1a7c8d8fc8821e2e7eedbbe2683e076bfaca3434401b0d1ca6b830bf3230e61e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.17-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"20325afd9b9d9633b120b63967d4ae85\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18827,\"upload_time\":\"2024-01-23T17:12:19\",\"upload_time_iso_8601\":\"2024-01-23T17:12:19.300806Z\",\"url\":\"https://files.pythonhosted.org/packages/f3/b2/eff27fc5373097fc4f4d3d90f4d0fad1c3be7b923a6213750fe1cb022e6e/agentops-0.0.17-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ac2a2cb7548cce5b009bee9e6f9b46b26df1cca777830231e2d1603b83740053\",\"md5\":\"4ac65e38fa45946f1d382ce290b904e9\",\"sha256\":\"cc1e7f796a84c66a29b271d8f0faa4999c152c80195911b817502da002a3ae02\"},\"downloads\":-1,\"filename\":\"agentops-0.0.17.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4ac65e38fa45946f1d382ce290b904e9\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":20063,\"upload_time\":\"2024-01-23T17:12:20\",\"upload_time_iso_8601\":\"2024-01-23T17:12:20.558647Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/2a/2cb7548cce5b009bee9e6f9b46b26df1cca777830231e2d1603b83740053/agentops-0.0.17.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.18\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"321102c865df2245ab8cfaeb48a72ef7011a7bbbe1553a43791d68295ff7c20d\",\"md5\":\"ad10ec2bf28bf434d3d2f11500f5a396\",\"sha256\":\"df241f6a62368aa645d1599bb6885688fba0d49dcc26f97f7f65ab29a6af1a2a\"},\"downloads\":-1,\"filename\":\"agentops-0.0.18-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ad10ec2bf28bf434d3d2f11500f5a396\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18860,\"upload_time\":\"2024-01-24T04:39:06\",\"upload_time_iso_8601\":\"2024-01-24T04:39:06.952175Z\",\"url\":\"https://files.pythonhosted.org/packages/32/11/02c865df2245ab8cfaeb48a72ef7011a7bbbe1553a43791d68295ff7c20d/agentops-0.0.18-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7831bd4249dcf9a0cdcad5451ca62aa83187295bb9c16fd1b3034999bff7ceaf\",\"md5\":\"76dc30c0a2e68f09c0411c23dd5e3a36\",\"sha256\":\"47e071424247dbbb1b9aaf07ff60a7e376ae01666478d0305d62a9068d61c1c1\"},\"downloads\":-1,\"filename\":\"agentops-0.0.18.tar.gz\",\"has_sig\":false,\"md5_digest\":\"76dc30c0a2e68f09c0411c23dd5e3a36\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":20094,\"upload_time\":\"2024-01-24T04:39:09\",\"upload_time_iso_8601\":\"2024-01-24T04:39:09.795862Z\",\"url\":\"https://files.pythonhosted.org/packages/78/31/bd4249dcf9a0cdcad5451ca62aa83187295bb9c16fd1b3034999bff7ceaf/agentops-0.0.18.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.19\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9d48292d743b748eddc01b51747e1dac4b62dea0eb5f240877bae821c0049572\",\"md5\":\"a26178cdf9d5fc5b466a30e5990c16a1\",\"sha256\":\"0e663e26aad41bf0288d250685e88130430dd087d03ffc69aa7f43e587921b59\"},\"downloads\":-1,\"filename\":\"agentops-0.0.19-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a26178cdf9d5fc5b466a30e5990c16a1\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18380,\"upload_time\":\"2024-01-24T07:58:38\",\"upload_time_iso_8601\":\"2024-01-24T07:58:38.440021Z\",\"url\":\"https://files.pythonhosted.org/packages/9d/48/292d743b748eddc01b51747e1dac4b62dea0eb5f240877bae821c0049572/agentops-0.0.19-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"dfe6f3b3fc53b050ec70de947e27227d0ea1e7a75037d082fc5f4d914178d12f\",\"md5\":\"c62a69951acd19121b059215cf0ddb8b\",\"sha256\":\"3d46faabf2dad44bd4705279569c76240ab5c71f03f511ba9d363dfd033d453e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.19.tar.gz\",\"has_sig\":false,\"md5_digest\":\"c62a69951acd19121b059215cf0ddb8b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19728,\"upload_time\":\"2024-01-24T07:58:41\",\"upload_time_iso_8601\":\"2024-01-24T07:58:41.352463Z\",\"url\":\"https://files.pythonhosted.org/packages/df/e6/f3b3fc53b050ec70de947e27227d0ea1e7a75037d082fc5f4d914178d12f/agentops-0.0.19.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e593e3863d3c61a75e43a347d423f754bc57559989773af6a9c7bc696ff1d6b4\",\"md5\":\"8ff77b84c32a4e846ce50c6844664b49\",\"sha256\":\"3bea2bdd8a26c190675aaf2775d97bc2e3c52d7da05c04ae8ec46fed959e0c6e\"},\"downloads\":-1,\"filename\":\"agentops-0.0.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8ff77b84c32a4e846ce50c6844664b49\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":10452,\"upload_time\":\"2023-08-28T23:14:23\",\"upload_time_iso_8601\":\"2023-08-28T23:14:23.488523Z\",\"url\":\"https://files.pythonhosted.org/packages/e5/93/e3863d3c61a75e43a347d423f754bc57559989773af6a9c7bc696ff1d6b4/agentops-0.0.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"82dbea7088c3ba71d9882a8d09d896d8529100f3103d1fe58ff4b890f9d616f1\",\"md5\":\"02c4fed5ca014de524e5c1dfe3ec2dd2\",\"sha256\":\"dc183d28965a9514cb33d916b29b3159189f5be64c4a7d943be0cad1a00379f9\"},\"downloads\":-1,\"filename\":\"agentops-0.0.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02c4fed5ca014de524e5c1dfe3ec2dd2\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":11510,\"upload_time\":\"2023-08-28T23:14:24\",\"upload_time_iso_8601\":\"2023-08-28T23:14:24.882664Z\",\"url\":\"https://files.pythonhosted.org/packages/82/db/ea7088c3ba71d9882a8d09d896d8529100f3103d1fe58ff4b890f9d616f1/agentops-0.0.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.20\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ad68d8cc6d631618e04ec6988d0c3f4462a74b0b5849719b8373c2470cf9d533\",\"md5\":\"09b2866043abc3e5cb5dfc17b80068cb\",\"sha256\":\"ba20fc48902434858f28e3c4a7febe56d275a28bd33378868e7fcde2f53f2430\"},\"downloads\":-1,\"filename\":\"agentops-0.0.20-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"09b2866043abc3e5cb5dfc17b80068cb\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18367,\"upload_time\":\"2024-01-25T07:12:48\",\"upload_time_iso_8601\":\"2024-01-25T07:12:48.514177Z\",\"url\":\"https://files.pythonhosted.org/packages/ad/68/d8cc6d631618e04ec6988d0c3f4462a74b0b5849719b8373c2470cf9d533/agentops-0.0.20-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0ba37435a8ce7125c7d75b931a373a188acf1c9e793be28db1b5c5e5a57d7a10\",\"md5\":\"fb700178ad44a4697b696ecbd28d115c\",\"sha256\":\"d50623b03b410c8c88718c29ea271304681e1305b5c05ba824edb92d18aab4f8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.20.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fb700178ad44a4697b696ecbd28d115c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19707,\"upload_time\":\"2024-01-25T07:12:49\",\"upload_time_iso_8601\":\"2024-01-25T07:12:49.915462Z\",\"url\":\"https://files.pythonhosted.org/packages/0b/a3/7435a8ce7125c7d75b931a373a188acf1c9e793be28db1b5c5e5a57d7a10/agentops-0.0.20.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.21\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9182ceb8c12e05c0e56ea6c5ba7395c57764ffc5a8134fd045b247793873c172\",\"md5\":\"ce428cf01a0c1066d3f1f3c8ca6b4f9b\",\"sha256\":\"fdefe50d945ad669b33c90bf526f9af0e7dc4792b4443aeb907b0a36de2be186\"},\"downloads\":-1,\"filename\":\"agentops-0.0.21-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ce428cf01a0c1066d3f1f3c8ca6b4f9b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18483,\"upload_time\":\"2024-02-22T03:07:14\",\"upload_time_iso_8601\":\"2024-02-22T03:07:14.032143Z\",\"url\":\"https://files.pythonhosted.org/packages/91/82/ceb8c12e05c0e56ea6c5ba7395c57764ffc5a8134fd045b247793873c172/agentops-0.0.21-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"acbb361e3d7ed85fc4207ffbbe44ddfa7ee3b8f96b76c3712d4153d63ebb45e2\",\"md5\":\"360f00d330fa37ad10f687906e31e219\",\"sha256\":\"ec10f8e64c553a1c400f1d5c792c3daef383cd718747cabb8e5abc9ef685f25d\"},\"downloads\":-1,\"filename\":\"agentops-0.0.21.tar.gz\",\"has_sig\":false,\"md5_digest\":\"360f00d330fa37ad10f687906e31e219\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19787,\"upload_time\":\"2024-02-22T03:07:15\",\"upload_time_iso_8601\":\"2024-02-22T03:07:15.546312Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/bb/361e3d7ed85fc4207ffbbe44ddfa7ee3b8f96b76c3712d4153d63ebb45e2/agentops-0.0.21.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.22\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b9da29a808d5bd3045f80b5652737e94695056b4a7cf7830ed7de037b1fe941c\",\"md5\":\"d9e04a68f0b143432b9e34341e4f0a17\",\"sha256\":\"fbcd962ff08a2e216637341c36c558be74368fbfda0b2408e55388e4c96474ca\"},\"downloads\":-1,\"filename\":\"agentops-0.0.22-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9e04a68f0b143432b9e34341e4f0a17\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":18485,\"upload_time\":\"2024-02-29T21:16:00\",\"upload_time_iso_8601\":\"2024-02-29T21:16:00.124986Z\",\"url\":\"https://files.pythonhosted.org/packages/b9/da/29a808d5bd3045f80b5652737e94695056b4a7cf7830ed7de037b1fe941c/agentops-0.0.22-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4d842d1c5d80c69e6c9b8f3fd925c2f2fd084ad6eb29d93fdeadbdeca79e5eda\",\"md5\":\"8f3b286fd01c2c43f7f7b1e4aebe3594\",\"sha256\":\"397544ce90474fee59f1e8561c92f4923e9034842be593f1ac41437c5fca5841\"},\"downloads\":-1,\"filename\":\"agentops-0.0.22.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8f3b286fd01c2c43f7f7b1e4aebe3594\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":19784,\"upload_time\":\"2024-02-29T21:16:01\",\"upload_time_iso_8601\":\"2024-02-29T21:16:01.909583Z\",\"url\":\"https://files.pythonhosted.org/packages/4d/84/2d1c5d80c69e6c9b8f3fd925c2f2fd084ad6eb29d93fdeadbdeca79e5eda/agentops-0.0.22.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"324eda261865c2042eeb5da9827a350760e435896855d5480b8f3136212c3f65\",\"md5\":\"07a9f9f479a14e65b82054a145514e8d\",\"sha256\":\"35351701e3caab900243771bda19d6613bdcb84cc9ef2e1adde431a775c09af8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"07a9f9f479a14e65b82054a145514e8d\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":11872,\"upload_time\":\"2023-09-13T23:03:34\",\"upload_time_iso_8601\":\"2023-09-13T23:03:34.300564Z\",\"url\":\"https://files.pythonhosted.org/packages/32/4e/da261865c2042eeb5da9827a350760e435896855d5480b8f3136212c3f65/agentops-0.0.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"643485e455d4f411b56bef2a99c40e32f35f456c93deda0a3915231f1da92e56\",\"md5\":\"c637ee3cfa358b65ed14cfc20d5f803f\",\"sha256\":\"45a57492e4072f3f27b5e851f6e501b54c796f6ace5f65ecf70e51dbe18ca1a8\"},\"downloads\":-1,\"filename\":\"agentops-0.0.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"c637ee3cfa358b65ed14cfc20d5f803f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":12455,\"upload_time\":\"2023-09-13T23:03:35\",\"upload_time_iso_8601\":\"2023-09-13T23:03:35.513682Z\",\"url\":\"https://files.pythonhosted.org/packages/64/34/85e455d4f411b56bef2a99c40e32f35f456c93deda0a3915231f1da92e56/agentops-0.0.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"20cc12cf2391854ed588eaf6cdc87f60048f84e8dc7d15792850b7e90a0406b8\",\"md5\":\"7a3c11004517e22dc7cde83cf6d8d5e8\",\"sha256\":\"5a5cdcbe6e32c59237521182b83768e650b4519416b42f4e13929a115a0f20ee\"},\"downloads\":-1,\"filename\":\"agentops-0.0.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7a3c11004517e22dc7cde83cf6d8d5e8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":13520,\"upload_time\":\"2023-09-22T09:23:52\",\"upload_time_iso_8601\":\"2023-09-22T09:23:52.896099Z\",\"url\":\"https://files.pythonhosted.org/packages/20/cc/12cf2391854ed588eaf6cdc87f60048f84e8dc7d15792850b7e90a0406b8/agentops-0.0.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"98d2d9f9932d17711dd5d98af674c868686bdbdd9aaae9b8d69e9eecfd4c68f4\",\"md5\":\"712d3bc3b28703963f8f398845b1d17a\",\"sha256\":\"97743c6420bc5ba2655ac690041d5f5732fb950130cf61ab25ef6d44be6ecfb2\"},\"downloads\":-1,\"filename\":\"agentops-0.0.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"712d3bc3b28703963f8f398845b1d17a\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14050,\"upload_time\":\"2023-09-22T09:23:54\",\"upload_time_iso_8601\":\"2023-09-22T09:23:54.315467Z\",\"url\":\"https://files.pythonhosted.org/packages/98/d2/d9f9932d17711dd5d98af674c868686bdbdd9aaae9b8d69e9eecfd4c68f4/agentops-0.0.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e900cd903074a01932ded9a05dac7849a16c5850ed20c027b954b1eccfba54c1\",\"md5\":\"1bd4fd6cca14dac4947ecc6c4e3fe0a1\",\"sha256\":\"e39e1051ba8c58f222f3495196eb939ccc53f04bd279372ae01e694973dd25d6\"},\"downloads\":-1,\"filename\":\"agentops-0.0.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1bd4fd6cca14dac4947ecc6c4e3fe0a1\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14107,\"upload_time\":\"2023-10-07T00:22:48\",\"upload_time_iso_8601\":\"2023-10-07T00:22:48.714074Z\",\"url\":\"https://files.pythonhosted.org/packages/e9/00/cd903074a01932ded9a05dac7849a16c5850ed20c027b954b1eccfba54c1/agentops-0.0.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"08d5c29068ce4df9c85865b45e1cdb7be1df06e54fce087fad18ec390a7aea54\",\"md5\":\"4d8fc5553e3199fe24d6118337884a2b\",\"sha256\":\"8f3662e600ba57e9a102c6bf86a6a1e16c0e53e1f38a84fa1b9c01cc07ca4990\"},\"downloads\":-1,\"filename\":\"agentops-0.0.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4d8fc5553e3199fe24d6118337884a2b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14724,\"upload_time\":\"2023-10-07T00:22:50\",\"upload_time_iso_8601\":\"2023-10-07T00:22:50.304226Z\",\"url\":\"https://files.pythonhosted.org/packages/08/d5/c29068ce4df9c85865b45e1cdb7be1df06e54fce087fad18ec390a7aea54/agentops-0.0.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2f5b5f3bd8a5b2d96b6417fd4a3fc72ed484e3a4ffacac49035f17bb8df1dd5b\",\"md5\":\"b7e701ff7953ecca01ceec3a6b9374b2\",\"sha256\":\"05dea1d06f8f8d06a8f460d18d302febe91f4dad2e3fc0088d05b7017765f3b6\"},\"downloads\":-1,\"filename\":\"agentops-0.0.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b7e701ff7953ecca01ceec3a6b9374b2\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14236,\"upload_time\":\"2023-10-27T06:56:14\",\"upload_time_iso_8601\":\"2023-10-27T06:56:14.029277Z\",\"url\":\"https://files.pythonhosted.org/packages/2f/5b/5f3bd8a5b2d96b6417fd4a3fc72ed484e3a4ffacac49035f17bb8df1dd5b/agentops-0.0.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4af43743bf40518545c8906687038e5717b1bd33db7ba300a084ec4f6c9c59e0\",\"md5\":\"0a78dcafcbc6292cf0823181cdc226a7\",\"sha256\":\"0057cb5d6dc0dd2c444f3371faef40c844a1510700b31824a4fccf5302713361\"},\"downloads\":-1,\"filename\":\"agentops-0.0.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0a78dcafcbc6292cf0823181cdc226a7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14785,\"upload_time\":\"2023-10-27T06:56:15\",\"upload_time_iso_8601\":\"2023-10-27T06:56:15.069192Z\",\"url\":\"https://files.pythonhosted.org/packages/4a/f4/3743bf40518545c8906687038e5717b1bd33db7ba300a084ec4f6c9c59e0/agentops-0.0.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3cb1d15c39bbc95f66c64d01cca304f9b4b0c3503509ad92ef29f926c9163599\",\"md5\":\"f494f6c256899103a80666be68d136ad\",\"sha256\":\"6984429ca1a9013fd4386105516cb36a46dd7078f7ac81e0a4701f1700bd25b5\"},\"downloads\":-1,\"filename\":\"agentops-0.0.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f494f6c256899103a80666be68d136ad\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14370,\"upload_time\":\"2023-11-02T06:37:36\",\"upload_time_iso_8601\":\"2023-11-02T06:37:36.480189Z\",\"url\":\"https://files.pythonhosted.org/packages/3c/b1/d15c39bbc95f66c64d01cca304f9b4b0c3503509ad92ef29f926c9163599/agentops-0.0.7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ba709ae02fc635cab51b237dcc3657ec69aac61ee67ea5f903cfae07de19abc8\",\"md5\":\"b163eaaf9cbafbbd19ec3f91b2b56969\",\"sha256\":\"a6f36d94a82d8e481b406f040790cefd4d939f07108737c696327d97c0ccdaf4\"},\"downloads\":-1,\"filename\":\"agentops-0.0.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b163eaaf9cbafbbd19ec3f91b2b56969\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14895,\"upload_time\":\"2023-11-02T06:37:37\",\"upload_time_iso_8601\":\"2023-11-02T06:37:37.698159Z\",\"url\":\"https://files.pythonhosted.org/packages/ba/70/9ae02fc635cab51b237dcc3657ec69aac61ee67ea5f903cfae07de19abc8/agentops-0.0.7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.0.8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8147fa3ee8807ad961aa50a773b6567e3a624000936d3cc1a578af72d83e02e7\",\"md5\":\"20cffb5534b4545fa1e8b24a6a24b1da\",\"sha256\":\"5d50b2ab18a203dbb4555a2cd482dae8df5bf2aa3e771a9758ee28b540330da3\"},\"downloads\":-1,\"filename\":\"agentops-0.0.8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"20cffb5534b4545fa1e8b24a6a24b1da\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":14391,\"upload_time\":\"2023-11-23T06:17:56\",\"upload_time_iso_8601\":\"2023-11-23T06:17:56.154712Z\",\"url\":\"https://files.pythonhosted.org/packages/81/47/fa3ee8807ad961aa50a773b6567e3a624000936d3cc1a578af72d83e02e7/agentops-0.0.8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"707473dc640a3fecfbe84ab7da230f7c862f72f231514a2a488b43a896146ed6\",\"md5\":\"bba7e74b58849f15d50f4e1270cbd23f\",\"sha256\":\"3a625d2acc922d99563ce71c5032b0b3b0db57d1c6fade319cf1bb636608eca0\"},\"downloads\":-1,\"filename\":\"agentops-0.0.8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"bba7e74b58849f15d50f4e1270cbd23f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":14775,\"upload_time\":\"2023-11-23T06:17:58\",\"upload_time_iso_8601\":\"2023-11-23T06:17:58.768877Z\",\"url\":\"https://files.pythonhosted.org/packages/70/74/73dc640a3fecfbe84ab7da230f7c862f72f231514a2a488b43a896146ed6/agentops-0.0.8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c2a41dc8456edc9bccc0c560967cfdce23a4d7ab8162946be288b54391d80f7c\",\"md5\":\"5fb09f82b7eeb270c6644dcd3656953f\",\"sha256\":\"b480fd51fbffc76ae13bb885c2adb1236a7d3b0095b4dafb4a992f6e25647433\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"5fb09f82b7eeb270c6644dcd3656953f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25045,\"upload_time\":\"2024-04-03T02:01:56\",\"upload_time_iso_8601\":\"2024-04-03T02:01:56.936873Z\",\"url\":\"https://files.pythonhosted.org/packages/c2/a4/1dc8456edc9bccc0c560967cfdce23a4d7ab8162946be288b54391d80f7c/agentops-0.1.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a81756443f28de774cb7c863a2856e1b07658a9a772ba86dfb1cfbb19bc08fe3\",\"md5\":\"b93c602c1d1da5d8f7a2dcdaa70f8e21\",\"sha256\":\"22d3dc87dedf93b3b78a0dfdef8c685b2f3bff9fbab32016360e298a24d311dc\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b93c602c1d1da5d8f7a2dcdaa70f8e21\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24685,\"upload_time\":\"2024-04-03T02:01:58\",\"upload_time_iso_8601\":\"2024-04-03T02:01:58.623055Z\",\"url\":\"https://files.pythonhosted.org/packages/a8/17/56443f28de774cb7c863a2856e1b07658a9a772ba86dfb1cfbb19bc08fe3/agentops-0.1.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c03a329c59f001f50701e9e541775c79304a5ce4ffe34d717b1d2af555362e9e\",\"md5\":\"7c7e84b3b4448580bf5a7e9c08012477\",\"sha256\":\"825ab57ac5f7840f5a7f8ac195f4af75ec07a9c0972b17d1a57a595420d06208\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7c7e84b3b4448580bf5a7e9c08012477\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23258,\"upload_time\":\"2024-03-18T18:51:08\",\"upload_time_iso_8601\":\"2024-03-18T18:51:08.693772Z\",\"url\":\"https://files.pythonhosted.org/packages/c0/3a/329c59f001f50701e9e541775c79304a5ce4ffe34d717b1d2af555362e9e/agentops-0.1.0b1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"026ee44f1d5a49924867475f7d101abe40170c0674b4b395f28ce88552c1ba71\",\"md5\":\"9cf6699fe45f13f1893c8992405e7261\",\"sha256\":\"f5ce4b34999fe4b21a4ce3643980253d30f8ea9c55f01d96cd35631355fc7ac3\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9cf6699fe45f13f1893c8992405e7261\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23842,\"upload_time\":\"2024-03-18T18:51:10\",\"upload_time_iso_8601\":\"2024-03-18T18:51:10.250127Z\",\"url\":\"https://files.pythonhosted.org/packages/02/6e/e44f1d5a49924867475f7d101abe40170c0674b4b395f28ce88552c1ba71/agentops-0.1.0b1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6a25e9282f81c3f2615ef6543a0b5ca49dd14b03f311fc5a108ad1aff4f0b720\",\"md5\":\"1d3e736ef44c0ad8829c50f036ac807b\",\"sha256\":\"485362b9a68d2327da250f0681b30a9296f0b41e058672b023ae2a8ed924b4d3\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1d3e736ef44c0ad8829c50f036ac807b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23477,\"upload_time\":\"2024-03-21T23:31:20\",\"upload_time_iso_8601\":\"2024-03-21T23:31:20.022797Z\",\"url\":\"https://files.pythonhosted.org/packages/6a/25/e9282f81c3f2615ef6543a0b5ca49dd14b03f311fc5a108ad1aff4f0b720/agentops-0.1.0b2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3165f702684da6e01f8df74a4291be2914c382ec4cb6f8ed2c3dc6d5a9f177ff\",\"md5\":\"0d51a6f6bf7cb0d3651574404c9c703c\",\"sha256\":\"cf9a8b54cc4f76592b6380729c03ec7adfe2256e6b200876d7595e50015f5d62\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"0d51a6f6bf7cb0d3651574404c9c703c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23659,\"upload_time\":\"2024-03-21T23:31:21\",\"upload_time_iso_8601\":\"2024-03-21T23:31:21.330837Z\",\"url\":\"https://files.pythonhosted.org/packages/31/65/f702684da6e01f8df74a4291be2914c382ec4cb6f8ed2c3dc6d5a9f177ff/agentops-0.1.0b2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2e64bfe82911b8981ce57f86154915d53b45fffa83ccb9cd6cf4cc71af3f796b\",\"md5\":\"470bc56525c114dddd908628dcb4f267\",\"sha256\":\"45b5aaa9f38989cfbfcc4f64e3041050df6d417177874316839225085e60d18d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"470bc56525c114dddd908628dcb4f267\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23522,\"upload_time\":\"2024-03-25T19:34:58\",\"upload_time_iso_8601\":\"2024-03-25T19:34:58.102867Z\",\"url\":\"https://files.pythonhosted.org/packages/2e/64/bfe82911b8981ce57f86154915d53b45fffa83ccb9cd6cf4cc71af3f796b/agentops-0.1.0b3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0858e4b718e30a6bbe27d32b7128398cb3884f83f89b4121e36cbb7f979466ca\",\"md5\":\"8ddb13824d3636d841739479e02a12e6\",\"sha256\":\"9020daab306fe8c7ed0a98a9edcad9772eb1df0eacce7f936a5ed6bf0f7d2af1\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8ddb13824d3636d841739479e02a12e6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23641,\"upload_time\":\"2024-03-25T19:35:01\",\"upload_time_iso_8601\":\"2024-03-25T19:35:01.119334Z\",\"url\":\"https://files.pythonhosted.org/packages/08/58/e4b718e30a6bbe27d32b7128398cb3884f83f89b4121e36cbb7f979466ca/agentops-0.1.0b3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"67f860440d18b674b06c5a9f4f334bf1f1656dca9f6763d5dd3a2be9e5d2c256\",\"md5\":\"b11f47108926fb46964bbf28675c3e35\",\"sha256\":\"93a1f241c3fd7880c3d29ab64baa0661d9ba84e2071092aecb3e4fc574037900\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b11f47108926fb46964bbf28675c3e35\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":23512,\"upload_time\":\"2024-03-26T01:14:54\",\"upload_time_iso_8601\":\"2024-03-26T01:14:54.986869Z\",\"url\":\"https://files.pythonhosted.org/packages/67/f8/60440d18b674b06c5a9f4f334bf1f1656dca9f6763d5dd3a2be9e5d2c256/agentops-0.1.0b4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"10feabb836b04b7eae44383f5616ed1c4c6e9aee9beecc3df4617f69f7e3adc5\",\"md5\":\"fa4512f74baf9909544ebab021862740\",\"sha256\":\"4716b4e2a627d7a3846ddee3d334c8f5e8a1a2d231ec5286379c0f22920a2a9d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fa4512f74baf9909544ebab021862740\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":23668,\"upload_time\":\"2024-03-26T01:14:56\",\"upload_time_iso_8601\":\"2024-03-26T01:14:56.921017Z\",\"url\":\"https://files.pythonhosted.org/packages/10/fe/abb836b04b7eae44383f5616ed1c4c6e9aee9beecc3df4617f69f7e3adc5/agentops-0.1.0b4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3ac591c14d08000def551f70ccc1da9ab8b37f57561d24cf7fdf6cd3547610ee\",\"md5\":\"52a2212b79870ee48f0dbdad852dbb90\",\"sha256\":\"ed050e51137baa4f46769c77595e1cbe212bb86243f27a29b50218782a0d8242\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"52a2212b79870ee48f0dbdad852dbb90\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":24597,\"upload_time\":\"2024-04-02T00:56:17\",\"upload_time_iso_8601\":\"2024-04-02T00:56:17.570921Z\",\"url\":\"https://files.pythonhosted.org/packages/3a/c5/91c14d08000def551f70ccc1da9ab8b37f57561d24cf7fdf6cd3547610ee/agentops-0.1.0b5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"84d6f0bbe5883b86e749f2f02896d94054ebd84b4d66524e4b7004263ae21a6f\",\"md5\":\"89c6aa7864f45c17f42a38bb6fae904b\",\"sha256\":\"6ebe6a94f0898fd47521755b6c8083c5f6c0c8bb30d43441200b9ef67998ed01\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"89c6aa7864f45c17f42a38bb6fae904b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24624,\"upload_time\":\"2024-04-02T00:56:18\",\"upload_time_iso_8601\":\"2024-04-02T00:56:18.703411Z\",\"url\":\"https://files.pythonhosted.org/packages/84/d6/f0bbe5883b86e749f2f02896d94054ebd84b4d66524e4b7004263ae21a6f/agentops-0.1.0b5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.0b7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3cc4ebdb56f0ff88ad20ddba765093aa6c1fc655a8f2bbafbcb2057f998d814f\",\"md5\":\"d117591df22735d1dedbdc034c93bff6\",\"sha256\":\"0d4fdb036836dddcce770cffcb2d564b0011a3307224d9a4675fc9bf80ffa5d2\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d117591df22735d1dedbdc034c93bff6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":24592,\"upload_time\":\"2024-04-02T03:20:11\",\"upload_time_iso_8601\":\"2024-04-02T03:20:11.132539Z\",\"url\":\"https://files.pythonhosted.org/packages/3c/c4/ebdb56f0ff88ad20ddba765093aa6c1fc655a8f2bbafbcb2057f998d814f/agentops-0.1.0b7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cbf0c32014a8ee12df4596ec4d90428e73e0cc5277d1b9bd2b53f815a7f0ea1f\",\"md5\":\"20364eb7d493e6f9b46666f36be8fb2f\",\"sha256\":\"938b29cd894ff38c7b1dee02f6422458702ccf8f3b69b69bc0e4220e42a33629\"},\"downloads\":-1,\"filename\":\"agentops-0.1.0b7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"20364eb7d493e6f9b46666f36be8fb2f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24611,\"upload_time\":\"2024-04-02T03:20:12\",\"upload_time_iso_8601\":\"2024-04-02T03:20:12.490524Z\",\"url\":\"https://files.pythonhosted.org/packages/cb/f0/c32014a8ee12df4596ec4d90428e73e0cc5277d1b9bd2b53f815a7f0ea1f/agentops-0.1.0b7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ba13ff18b4ff72805bcbe7437aa445cde854a44b4b358564ed2b044678e270b9\",\"md5\":\"d4f77de8dd58468c6c307e735c1cfaa9\",\"sha256\":\"8afc0b7871d17f8cbe9996cab5ca10a8a3ed33a3406e1ddc257fadc214daa79a\"},\"downloads\":-1,\"filename\":\"agentops-0.1.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d4f77de8dd58468c6c307e735c1cfaa9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25189,\"upload_time\":\"2024-04-05T22:41:01\",\"upload_time_iso_8601\":\"2024-04-05T22:41:01.867983Z\",\"url\":\"https://files.pythonhosted.org/packages/ba/13/ff18b4ff72805bcbe7437aa445cde854a44b4b358564ed2b044678e270b9/agentops-0.1.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1dec1d2af6e33dd097feaf1e41a4d34c66d4e4e59ce35c5efac85c18614b9d4b\",\"md5\":\"f072d8700d4e22fc25eae8bb29a54d1f\",\"sha256\":\"001582703d5e6ffe67a51f9d67a303b5344e4ef8ca315f24aa43e0dd3d19f53b\"},\"downloads\":-1,\"filename\":\"agentops-0.1.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f072d8700d4e22fc25eae8bb29a54d1f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24831,\"upload_time\":\"2024-04-05T22:41:03\",\"upload_time_iso_8601\":\"2024-04-05T22:41:03.677234Z\",\"url\":\"https://files.pythonhosted.org/packages/1d/ec/1d2af6e33dd097feaf1e41a4d34c66d4e4e59ce35c5efac85c18614b9d4b/agentops-0.1.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cdf9a295ed62701dd4e56d5b57e45e0425db2bcea992c687534c9a2dd1e001f1\",\"md5\":\"8d82b9cb794b4b4a1e91ddece5447bcf\",\"sha256\":\"8b80800d4fa5a7a6c85c79f2bf39a50fb446ab8b209519bd51f44dee3b38517e\"},\"downloads\":-1,\"filename\":\"agentops-0.1.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8d82b9cb794b4b4a1e91ddece5447bcf\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":29769,\"upload_time\":\"2024-05-10T20:13:39\",\"upload_time_iso_8601\":\"2024-05-10T20:13:39.477237Z\",\"url\":\"https://files.pythonhosted.org/packages/cd/f9/a295ed62701dd4e56d5b57e45e0425db2bcea992c687534c9a2dd1e001f1/agentops-0.1.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f3788e027be4aa50f677a46bba1e0132f021e90d299c6eae093181a91679e378\",\"md5\":\"4dd3d1fd8c08efb1a08ae212ed9211d7\",\"sha256\":\"73fbd36cd5f3052d22e64dbea1fa9d70fb02658a901a600101801daa73f359f9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4dd3d1fd8c08efb1a08ae212ed9211d7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":30268,\"upload_time\":\"2024-05-10T20:14:25\",\"upload_time_iso_8601\":\"2024-05-10T20:14:25.258530Z\",\"url\":\"https://files.pythonhosted.org/packages/f3/78/8e027be4aa50f677a46bba1e0132f021e90d299c6eae093181a91679e378/agentops-0.1.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1ebfaaa31babe3bf687312592f99fe900e3808058658577bd1367b7df0332a08\",\"md5\":\"73c0b028248665a7927688fb8baa7680\",\"sha256\":\"e9411981a5d0b1190b93e3e1124db3ac6f17015c65a84b92a793f34d79b694c9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"73c0b028248665a7927688fb8baa7680\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":30952,\"upload_time\":\"2024-05-17T00:32:49\",\"upload_time_iso_8601\":\"2024-05-17T00:32:49.202597Z\",\"url\":\"https://files.pythonhosted.org/packages/1e/bf/aaa31babe3bf687312592f99fe900e3808058658577bd1367b7df0332a08/agentops-0.1.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6ee43f71a7d1d63595058cd6945e7b9e2de1b06ace04176a6723b7bfb37bf880\",\"md5\":\"36092e907e4f15a6bafd6788383df112\",\"sha256\":\"4a365ee56303b5b80d9de21fc13ccb7a3fe44544a6c165327bbfd9213bfe0191\"},\"downloads\":-1,\"filename\":\"agentops-0.1.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"36092e907e4f15a6bafd6788383df112\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":31256,\"upload_time\":\"2024-05-17T00:32:50\",\"upload_time_iso_8601\":\"2024-05-17T00:32:50.919974Z\",\"url\":\"https://files.pythonhosted.org/packages/6e/e4/3f71a7d1d63595058cd6945e7b9e2de1b06ace04176a6723b7bfb37bf880/agentops-0.1.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"67f5227dffbebeffd3b404db0dd71805f00814e458c0d081faf7a4e70c7e984f\",\"md5\":\"2591924de6f2e5580e4733b0e8336e2c\",\"sha256\":\"b4b47c990638b74810cc1c38624ada162094b46e3fdd63883642a16bc5258386\"},\"downloads\":-1,\"filename\":\"agentops-0.1.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2591924de6f2e5580e4733b0e8336e2c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":35605,\"upload_time\":\"2024-05-24T20:11:52\",\"upload_time_iso_8601\":\"2024-05-24T20:11:52.863109Z\",\"url\":\"https://files.pythonhosted.org/packages/67/f5/227dffbebeffd3b404db0dd71805f00814e458c0d081faf7a4e70c7e984f/agentops-0.1.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9f9ae6dc42ad8d40ad47c6116629b2cbda443d314327ab4d33e1044cb75ba88b\",\"md5\":\"4c2e76e7b6d4799ef4b464dee29e7255\",\"sha256\":\"c4f762482fb240fc3503907f52498f2d8d9e4f80236ee4a12bf039317a85fcd7\"},\"downloads\":-1,\"filename\":\"agentops-0.1.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"4c2e76e7b6d4799ef4b464dee29e7255\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35103,\"upload_time\":\"2024-05-24T20:11:54\",\"upload_time_iso_8601\":\"2024-05-24T20:11:54.846567Z\",\"url\":\"https://files.pythonhosted.org/packages/9f/9a/e6dc42ad8d40ad47c6116629b2cbda443d314327ab4d33e1044cb75ba88b/agentops-0.1.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e709193dfe68c2d23de2c60dd0af2af336cbf81d3a3f0c175705783b4c1da580\",\"md5\":\"588d9877b9767546606d3d6d76d247fc\",\"sha256\":\"ec79e56889eadd2bab04dfe2f6a899a1b90dc347a66cc80488297368386105b4\"},\"downloads\":-1,\"filename\":\"agentops-0.1.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"588d9877b9767546606d3d6d76d247fc\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25359,\"upload_time\":\"2024-04-09T23:00:51\",\"upload_time_iso_8601\":\"2024-04-09T23:00:51.897995Z\",\"url\":\"https://files.pythonhosted.org/packages/e7/09/193dfe68c2d23de2c60dd0af2af336cbf81d3a3f0c175705783b4c1da580/agentops-0.1.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8acc872aba374093481bb40ed6b7531b1500b00138baf6bfb9ca7c20fb889d58\",\"md5\":\"80f8f7c56b1e1a6ff4c48877fe12dd12\",\"sha256\":\"d213e1037d2d319743889c2bdbc10dc068b0591e2c6c156f69019302490336d5\"},\"downloads\":-1,\"filename\":\"agentops-0.1.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"80f8f7c56b1e1a6ff4c48877fe12dd12\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24968,\"upload_time\":\"2024-04-09T23:00:53\",\"upload_time_iso_8601\":\"2024-04-09T23:00:53.227389Z\",\"url\":\"https://files.pythonhosted.org/packages/8a/cc/872aba374093481bb40ed6b7531b1500b00138baf6bfb9ca7c20fb889d58/agentops-0.1.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9701aad65170506dcf29606e9e619d2c0caaee565e5e8b14a791c3e0e86c6356\",\"md5\":\"4dc967275c884e2a5a1de8df448ae1c6\",\"sha256\":\"f1ca0f2c5156d826381e9ebd634555215c67e1cb344683abddb382e594f483e4\"},\"downloads\":-1,\"filename\":\"agentops-0.1.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"4dc967275c884e2a5a1de8df448ae1c6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25393,\"upload_time\":\"2024-04-09T23:24:20\",\"upload_time_iso_8601\":\"2024-04-09T23:24:20.821465Z\",\"url\":\"https://files.pythonhosted.org/packages/97/01/aad65170506dcf29606e9e619d2c0caaee565e5e8b14a791c3e0e86c6356/agentops-0.1.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5e22afde273bcf52cfc6581fba804b44eeebea6ff2ae774f0e5917fa1dd3ee09\",\"md5\":\"624c9b63dbe56c8b1dd535e1b20ada81\",\"sha256\":\"dd65e80ec70accfac0692171199b6ecfa37a7d109a3c25f2191c0934b5004114\"},\"downloads\":-1,\"filename\":\"agentops-0.1.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"624c9b63dbe56c8b1dd535e1b20ada81\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":24994,\"upload_time\":\"2024-04-09T23:24:22\",\"upload_time_iso_8601\":\"2024-04-09T23:24:22.610198Z\",\"url\":\"https://files.pythonhosted.org/packages/5e/22/afde273bcf52cfc6581fba804b44eeebea6ff2ae774f0e5917fa1dd3ee09/agentops-0.1.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"50313e20afb169e707941cc3342cecb88060aa8746e95d72a202fd90ac4096b6\",\"md5\":\"3f64b736522ea40c35db6d2a609fc54f\",\"sha256\":\"476a5e795a6cc87858a0885be61b1e05eed21e4c6ab47f20348c48717c2ac454\"},\"downloads\":-1,\"filename\":\"agentops-0.1.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"3f64b736522ea40c35db6d2a609fc54f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25558,\"upload_time\":\"2024-04-11T19:26:01\",\"upload_time_iso_8601\":\"2024-04-11T19:26:01.162829Z\",\"url\":\"https://files.pythonhosted.org/packages/50/31/3e20afb169e707941cc3342cecb88060aa8746e95d72a202fd90ac4096b6/agentops-0.1.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e0688b1a21f72b85c9bdd56da4223c991bdfb5d0c2accd9ddd326616bf952795\",\"md5\":\"6f4601047f3e2080b4f7363ff84f15f3\",\"sha256\":\"d55e64953f84654d44557b496a3b3744a20449b854af84fa83a15be75b362b3d\"},\"downloads\":-1,\"filename\":\"agentops-0.1.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"6f4601047f3e2080b4f7363ff84f15f3\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25390,\"upload_time\":\"2024-04-11T19:26:02\",\"upload_time_iso_8601\":\"2024-04-11T19:26:02.991657Z\",\"url\":\"https://files.pythonhosted.org/packages/e0/68/8b1a21f72b85c9bdd56da4223c991bdfb5d0c2accd9ddd326616bf952795/agentops-0.1.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"641c742793fa77c803e5667830ccd34b8d313d11f361a105fe92ce68d871cc5f\",\"md5\":\"964421a604c67c07b5c72b70ceee6ce8\",\"sha256\":\"bc65dd4cd85d1ffcba195f2490b5a4380d0b565dd0f4a71ecc64ed96a7fe1eee\"},\"downloads\":-1,\"filename\":\"agentops-0.1.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"964421a604c67c07b5c72b70ceee6ce8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":25793,\"upload_time\":\"2024-04-20T01:56:23\",\"upload_time_iso_8601\":\"2024-04-20T01:56:23.089343Z\",\"url\":\"https://files.pythonhosted.org/packages/64/1c/742793fa77c803e5667830ccd34b8d313d11f361a105fe92ce68d871cc5f/agentops-0.1.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"62beabcb235daf34d4740961c4ad295b8dfb8a053ac6a1e341394e36f722ea89\",\"md5\":\"3ff7fa3135bc5c4254aaa99e3cc00dc8\",\"sha256\":\"17f0a573362d9c4770846874a4091662304d6889e21ca6a7dd747be48b9c8597\"},\"downloads\":-1,\"filename\":\"agentops-0.1.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3ff7fa3135bc5c4254aaa99e3cc00dc8\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25664,\"upload_time\":\"2024-04-20T01:56:24\",\"upload_time_iso_8601\":\"2024-04-20T01:56:24.303013Z\",\"url\":\"https://files.pythonhosted.org/packages/62/be/abcb235daf34d4740961c4ad295b8dfb8a053ac6a1e341394e36f722ea89/agentops-0.1.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"430b9f3fcfc2f9778dbbfc1fd68b223e9a91938505ef987e17b93a631bb6b2e4\",\"md5\":\"28ce2e6aa7a4598fa1e764d9762fd030\",\"sha256\":\"9dff841ef71f5fad2d897012a00f50011a706970e0e5eaae9d7b0540a637b128\"},\"downloads\":-1,\"filename\":\"agentops-0.1.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"28ce2e6aa7a4598fa1e764d9762fd030\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":26154,\"upload_time\":\"2024-04-20T03:48:58\",\"upload_time_iso_8601\":\"2024-04-20T03:48:58.494391Z\",\"url\":\"https://files.pythonhosted.org/packages/43/0b/9f3fcfc2f9778dbbfc1fd68b223e9a91938505ef987e17b93a631bb6b2e4/agentops-0.1.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a6c2b437246ce28bad9c2bbad9a9371f7008f76a979fb19699588212f653daf9\",\"md5\":\"fc81fd641ad630a17191d4a9cf77193b\",\"sha256\":\"48ddb49fc01eb83ce151d3f08ae670b3d603c454aa35b4ea145f2dc15e081b36\"},\"downloads\":-1,\"filename\":\"agentops-0.1.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"fc81fd641ad630a17191d4a9cf77193b\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":25792,\"upload_time\":\"2024-04-20T03:48:59\",\"upload_time_iso_8601\":\"2024-04-20T03:48:59.957150Z\",\"url\":\"https://files.pythonhosted.org/packages/a6/c2/b437246ce28bad9c2bbad9a9371f7008f76a979fb19699588212f653daf9/agentops-0.1.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1ca529570477f62973c6b835e09dc5bbda7498c1a26ba7a428cdb08a71ae86ca\",\"md5\":\"a1962d1bb72c6fd00e67e83fe56a3692\",\"sha256\":\"ce7a9e89dcf17507ee6db85017bef8f87fc4e8a23745f3f73e1fbda5489fb6f9\"},\"downloads\":-1,\"filename\":\"agentops-0.1.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a1962d1bb72c6fd00e67e83fe56a3692\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.10\",\"size\":27891,\"upload_time\":\"2024-05-03T19:21:38\",\"upload_time_iso_8601\":\"2024-05-03T19:21:38.018602Z\",\"url\":\"https://files.pythonhosted.org/packages/1c/a5/29570477f62973c6b835e09dc5bbda7498c1a26ba7a428cdb08a71ae86ca/agentops-0.1.7-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Introduced + breaking bug\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b2447ce75e71fcc9605a609b41adc52d517eba4356d15f7ca77d46f683ca07f1\",\"md5\":\"9a9bb22af4b30c454d46b9a01e8701a0\",\"sha256\":\"70d22e9a71ea13af6e6ad9c1cffe63c98f9dbccf91bda199825609379b2babaf\"},\"downloads\":-1,\"filename\":\"agentops-0.1.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9a9bb22af4b30c454d46b9a01e8701a0\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.10\",\"size\":28122,\"upload_time\":\"2024-05-03T19:21:39\",\"upload_time_iso_8601\":\"2024-05-03T19:21:39.415523Z\",\"url\":\"https://files.pythonhosted.org/packages/b2/44/7ce75e71fcc9605a609b41adc52d517eba4356d15f7ca77d46f683ca07f1/agentops-0.1.7.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Introduced + breaking bug\"}],\"0.1.8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"38c63d0d19eeae4c3c9e3ff5957b10c3c16a4a9fd2be6673fbfc965f8bb4fd08\",\"md5\":\"e12d3d92f51f5b2fed11a01742e5b5b5\",\"sha256\":\"d49d113028a891d50900bb4fae253218cc49519f7fe39f9ea15f8f2b29d6d7ef\"},\"downloads\":-1,\"filename\":\"agentops-0.1.8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"e12d3d92f51f5b2fed11a01742e5b5b5\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.10\",\"size\":27977,\"upload_time\":\"2024-05-04T03:01:53\",\"upload_time_iso_8601\":\"2024-05-04T03:01:53.905081Z\",\"url\":\"https://files.pythonhosted.org/packages/38/c6/3d0d19eeae4c3c9e3ff5957b10c3c16a4a9fd2be6673fbfc965f8bb4fd08/agentops-0.1.8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9269e51fa1714f169f692e4fad0a42ebeb77c7a27c48f62b751c869ad6441c69\",\"md5\":\"07dbdb45f9ec086b1bc314d6a8264423\",\"sha256\":\"5762137a84e2309e1b6ca9a0fd72c8b72c90f6f73ba49549980722221960cac8\"},\"downloads\":-1,\"filename\":\"agentops-0.1.8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"07dbdb45f9ec086b1bc314d6a8264423\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.10\",\"size\":28189,\"upload_time\":\"2024-05-04T03:01:55\",\"upload_time_iso_8601\":\"2024-05-04T03:01:55.328668Z\",\"url\":\"https://files.pythonhosted.org/packages/92/69/e51fa1714f169f692e4fad0a42ebeb77c7a27c48f62b751c869ad6441c69/agentops-0.1.8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.1.9\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eb5a920e71729bd1f06b002ee146b38b0d1862357a1f484628e6b20a7d3dcca1\",\"md5\":\"6ae4929d91c4bb8025edc86b5322630c\",\"sha256\":\"af7983ba4929b04a34714dd97d7e82c11384ebbe9d7d8bc7b673e1263c4c79a1\"},\"downloads\":-1,\"filename\":\"agentops-0.1.9-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"6ae4929d91c4bb8025edc86b5322630c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":28458,\"upload_time\":\"2024-05-07T07:07:30\",\"upload_time_iso_8601\":\"2024-05-07T07:07:30.798380Z\",\"url\":\"https://files.pythonhosted.org/packages/eb/5a/920e71729bd1f06b002ee146b38b0d1862357a1f484628e6b20a7d3dcca1/agentops-0.1.9-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"df2b8fc76d629d8a83b0796612a27b966426550114c930eee5d730654fcd9fe9\",\"md5\":\"43090632f87cd398ed77b57daa8c28d6\",\"sha256\":\"7f428bfda2db57a994029b1c9f72b63ca7660616635c9c671b2b729d112a833e\"},\"downloads\":-1,\"filename\":\"agentops-0.1.9.tar.gz\",\"has_sig\":false,\"md5_digest\":\"43090632f87cd398ed77b57daa8c28d6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":28596,\"upload_time\":\"2024-05-07T07:07:35\",\"upload_time_iso_8601\":\"2024-05-07T07:07:35.242350Z\",\"url\":\"https://files.pythonhosted.org/packages/df/2b/8fc76d629d8a83b0796612a27b966426550114c930eee5d730654fcd9fe9/agentops-0.1.9.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"483560ec38a81a7e9588d32730ed4f581621169216f968771d5f611388f68a9b\",\"md5\":\"bdda5480977cccd55628e117e8c8da04\",\"sha256\":\"bee84bf046c9b4346c5f0f50e2087a992e8d2eae80b3fe9f01c456b49c299bcc\"},\"downloads\":-1,\"filename\":\"agentops-0.2.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bdda5480977cccd55628e117e8c8da04\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":35921,\"upload_time\":\"2024-05-28T22:04:14\",\"upload_time_iso_8601\":\"2024-05-28T22:04:14.813154Z\",\"url\":\"https://files.pythonhosted.org/packages/48/35/60ec38a81a7e9588d32730ed4f581621169216f968771d5f611388f68a9b/agentops-0.2.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8d7591c79141d31da4e56d6c6a00737b50dcc2f1ce8a711c1293d2a1d70478fc\",\"md5\":\"71e3c3b9fe0286c9b58d81ba1c12a42d\",\"sha256\":\"ca340136abff6a3727729c3eda87f0768e5ba2b672ce03320cb52ad138b05598\"},\"downloads\":-1,\"filename\":\"agentops-0.2.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"71e3c3b9fe0286c9b58d81ba1c12a42d\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35498,\"upload_time\":\"2024-05-28T22:04:16\",\"upload_time_iso_8601\":\"2024-05-28T22:04:16.598374Z\",\"url\":\"https://files.pythonhosted.org/packages/8d/75/91c79141d31da4e56d6c6a00737b50dcc2f1ce8a711c1293d2a1d70478fc/agentops-0.2.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fa3b84032b7dca3d7315b329db6681bbfe0872c2a46d62ca992a05f2d6a078e1\",\"md5\":\"ce3fc46711fa8225a3d6a9566f95f875\",\"sha256\":\"7dde95db92c8306c0a17e193bfb5ee20e71e16630ccc629db685e148b3aca3f6\"},\"downloads\":-1,\"filename\":\"agentops-0.2.1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ce3fc46711fa8225a3d6a9566f95f875\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36375,\"upload_time\":\"2024-06-03T18:40:02\",\"upload_time_iso_8601\":\"2024-06-03T18:40:02.820700Z\",\"url\":\"https://files.pythonhosted.org/packages/fa/3b/84032b7dca3d7315b329db6681bbfe0872c2a46d62ca992a05f2d6a078e1/agentops-0.2.1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d6286ad330da5736588a54575fde95502006da58c3e9f4f15933f5876c1e1482\",\"md5\":\"faa972c26a3e59fb6ca04f253165da22\",\"sha256\":\"9f18a36a79c04e9c06f6e96aefe75f0fb1d08e562873315d6cb945488306e515\"},\"downloads\":-1,\"filename\":\"agentops-0.2.1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"faa972c26a3e59fb6ca04f253165da22\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":35784,\"upload_time\":\"2024-06-03T18:40:05\",\"upload_time_iso_8601\":\"2024-06-03T18:40:05.431174Z\",\"url\":\"https://files.pythonhosted.org/packages/d6/28/6ad330da5736588a54575fde95502006da58c3e9f4f15933f5876c1e1482/agentops-0.2.1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fbe73a57dd30e354b7bcc5a86908fc92aa16378035c69eb225ce254387940b5d\",\"md5\":\"c24e4656bb6de14ffb9d810fe7872829\",\"sha256\":\"57aab8a5d76a0dd7b1f0b14e90e778c42444eeaf5c48f2f387719735d7d840ee\"},\"downloads\":-1,\"filename\":\"agentops-0.2.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c24e4656bb6de14ffb9d810fe7872829\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36588,\"upload_time\":\"2024-06-05T19:30:29\",\"upload_time_iso_8601\":\"2024-06-05T19:30:29.208415Z\",\"url\":\"https://files.pythonhosted.org/packages/fb/e7/3a57dd30e354b7bcc5a86908fc92aa16378035c69eb225ce254387940b5d/agentops-0.2.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"89c51cbd038b9d2898b7f1b05943c338aa4aa9654d7e7763d8fa8d73a25fbfb6\",\"md5\":\"401bfce001638cc26d7975f6534b5bab\",\"sha256\":\"d4135c96ad7ec39c81015b3e33dfa977d2d846a685aba0d1922d2d6e3dca7fff\"},\"downloads\":-1,\"filename\":\"agentops-0.2.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"401bfce001638cc26d7975f6534b5bab\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":36012,\"upload_time\":\"2024-06-05T19:30:31\",\"upload_time_iso_8601\":\"2024-06-05T19:30:31.173781Z\",\"url\":\"https://files.pythonhosted.org/packages/89/c5/1cbd038b9d2898b7f1b05943c338aa4aa9654d7e7763d8fa8d73a25fbfb6/agentops-0.2.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.3\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b66fb36e2bb7158f45b6c496ce3cec50ef861e130cfa3ec8c62e709d63fa9e94\",\"md5\":\"b3f6a8d97cc0129a9e4730b7810509c6\",\"sha256\":\"a1829a21301223c26464cbc9da5bfba2f3750e21238912ee1d2f3097c358859a\"},\"downloads\":-1,\"filename\":\"agentops-0.2.3-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"b3f6a8d97cc0129a9e4730b7810509c6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":36986,\"upload_time\":\"2024-06-13T19:56:33\",\"upload_time_iso_8601\":\"2024-06-13T19:56:33.675807Z\",\"url\":\"https://files.pythonhosted.org/packages/b6/6f/b36e2bb7158f45b6c496ce3cec50ef861e130cfa3ec8c62e709d63fa9e94/agentops-0.2.3-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f4d34aed81a4ec4251131b94fb8ed4edf0823922bfda66ba0e4c43d9452111d2\",\"md5\":\"466abe04d466a950d4bcebbe9c3ccc27\",\"sha256\":\"b502b83bb4954386a28c4304028ba8cd2b45303f7e1f84720477b521267a3b4e\"},\"downloads\":-1,\"filename\":\"agentops-0.2.3.tar.gz\",\"has_sig\":false,\"md5_digest\":\"466abe04d466a950d4bcebbe9c3ccc27\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37024,\"upload_time\":\"2024-06-13T19:56:35\",\"upload_time_iso_8601\":\"2024-06-13T19:56:35.481794Z\",\"url\":\"https://files.pythonhosted.org/packages/f4/d3/4aed81a4ec4251131b94fb8ed4edf0823922bfda66ba0e4c43d9452111d2/agentops-0.2.3.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a4d4e91fb66bc2eb7effb53f7d9481da04e60809d10240306452a8307aca7985\",\"md5\":\"f1ba1befb6bd854d5fd6f670937dcb55\",\"sha256\":\"96162c28cc0391011c04e654273e5a96ec4dcf015e27a7ac12a1ea4077d38950\"},\"downloads\":-1,\"filename\":\"agentops-0.2.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"f1ba1befb6bd854d5fd6f670937dcb55\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37518,\"upload_time\":\"2024-06-24T19:31:58\",\"upload_time_iso_8601\":\"2024-06-24T19:31:58.838680Z\",\"url\":\"https://files.pythonhosted.org/packages/a4/d4/e91fb66bc2eb7effb53f7d9481da04e60809d10240306452a8307aca7985/agentops-0.2.4-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Potential + breaking change\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8e4b920629e08c956cdc74a31ab466d005eb13d86c2d58fa2d2bd261cf36c37b\",\"md5\":\"527c82f21f01f13b879a1fca90ddb209\",\"sha256\":\"d263de21eb40e15eb17adc31821fc0dee4ff4ca4501a9feb7ed376d473063208\"},\"downloads\":-1,\"filename\":\"agentops-0.2.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"527c82f21f01f13b879a1fca90ddb209\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37656,\"upload_time\":\"2024-06-24T19:32:01\",\"upload_time_iso_8601\":\"2024-06-24T19:32:01.155014Z\",\"url\":\"https://files.pythonhosted.org/packages/8e/4b/920629e08c956cdc74a31ab466d005eb13d86c2d58fa2d2bd261cf36c37b/agentops-0.2.4.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Potential + breaking change\"}],\"0.2.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"47c73ab9d7d971b664a9bdff6e6464afb6c1de8eb0f845d8de93eb036d5dcc60\",\"md5\":\"bed576cc1591da4783777920fb223761\",\"sha256\":\"ff87b82d1efaf50b10624e00c6e9334f4c16ffe08ec7f9889b4417c231c31471\"},\"downloads\":-1,\"filename\":\"agentops-0.2.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bed576cc1591da4783777920fb223761\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37529,\"upload_time\":\"2024-06-26T22:57:15\",\"upload_time_iso_8601\":\"2024-06-26T22:57:15.646328Z\",\"url\":\"https://files.pythonhosted.org/packages/47/c7/3ab9d7d971b664a9bdff6e6464afb6c1de8eb0f845d8de93eb036d5dcc60/agentops-0.2.5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"31c48f2af30ae75dbdb4697506f80f76ce786f79014deb8c6679fa62962fdd6f\",\"md5\":\"42def99798edfaf201fa6f62846e77c5\",\"sha256\":\"6bad7aca37af6174307769550a53ec00824049a57e97b8868a9a213b2272adb4\"},\"downloads\":-1,\"filename\":\"agentops-0.2.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"42def99798edfaf201fa6f62846e77c5\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37703,\"upload_time\":\"2024-06-26T22:57:17\",\"upload_time_iso_8601\":\"2024-06-26T22:57:17.337904Z\",\"url\":\"https://files.pythonhosted.org/packages/31/c4/8f2af30ae75dbdb4697506f80f76ce786f79014deb8c6679fa62962fdd6f/agentops-0.2.5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.2.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5af2f90538b00d887c04a5570e8a3af4aef27a600a67c058a0ee6befafd60748\",\"md5\":\"8ef3ed13ed582346b71648ca9df30f7c\",\"sha256\":\"59e88000a9f108931fd68056f22def7a7f4b3015906de5791e777c23ba7dee52\"},\"downloads\":-1,\"filename\":\"agentops-0.2.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8ef3ed13ed582346b71648ca9df30f7c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":37534,\"upload_time\":\"2024-06-28T21:41:56\",\"upload_time_iso_8601\":\"2024-06-28T21:41:56.933334Z\",\"url\":\"https://files.pythonhosted.org/packages/5a/f2/f90538b00d887c04a5570e8a3af4aef27a600a67c058a0ee6befafd60748/agentops-0.2.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"bcf412c388dccc301ad54a501843ba5b5dd359575dcef9ac24c18a619a32214d\",\"md5\":\"89a6b04f12801682b53ee0133593ce74\",\"sha256\":\"7906a08c9154355484deb173b82631f9acddec3775b2d5e8ca946abdee27183b\"},\"downloads\":-1,\"filename\":\"agentops-0.2.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"89a6b04f12801682b53ee0133593ce74\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":37874,\"upload_time\":\"2024-06-28T21:41:59\",\"upload_time_iso_8601\":\"2024-06-28T21:41:59.143953Z\",\"url\":\"https://files.pythonhosted.org/packages/bc/f4/12c388dccc301ad54a501843ba5b5dd359575dcef9ac24c18a619a32214d/agentops-0.2.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.0\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b8e996f12ac457f46c370c6f70f344e975d534f2c92853703ee29802f0127024\",\"md5\":\"d9c6995a843b49ac7eb6f500fa1f3c2a\",\"sha256\":\"22aeb3355e66b32a2b2a9f676048b81979b2488feddb088f9266034b3ed50539\"},\"downloads\":-1,\"filename\":\"agentops-0.3.0-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9c6995a843b49ac7eb6f500fa1f3c2a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39430,\"upload_time\":\"2024-07-17T18:38:24\",\"upload_time_iso_8601\":\"2024-07-17T18:38:24.763919Z\",\"url\":\"https://files.pythonhosted.org/packages/b8/e9/96f12ac457f46c370c6f70f344e975d534f2c92853703ee29802f0127024/agentops-0.3.0-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7e2d6fda9613562c0394d7ef3dd8f0cb9fc4ebaa8d413862fce33940c73564d6\",\"md5\":\"8fa67ca01ca726e3bfcd66898313f33f\",\"sha256\":\"6c0c08a57410fa5e826a7bafa1deeba9f7b3524709427d9e1abbd0964caaf76b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.0.tar.gz\",\"has_sig\":false,\"md5_digest\":\"8fa67ca01ca726e3bfcd66898313f33f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":41734,\"upload_time\":\"2024-07-17T18:38:26\",\"upload_time_iso_8601\":\"2024-07-17T18:38:26.447237Z\",\"url\":\"https://files.pythonhosted.org/packages/7e/2d/6fda9613562c0394d7ef3dd8f0cb9fc4ebaa8d413862fce33940c73564d6/agentops-0.3.0.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eb5e3ac36b33d3e95747d64effd509f66a9b3b76b47216b16f492e27d8d90b0c\",\"md5\":\"6fade0b81fc65b2c79a869b5f240590b\",\"sha256\":\"b304d366691281e08c1f02307aabdd551ae4f68b0de82bbbb4cf6f651af2dd16\"},\"downloads\":-1,\"filename\":\"agentops-0.3.10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"6fade0b81fc65b2c79a869b5f240590b\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":41201,\"upload_time\":\"2024-08-19T20:51:49\",\"upload_time_iso_8601\":\"2024-08-19T20:51:49.487947Z\",\"url\":\"https://files.pythonhosted.org/packages/eb/5e/3ac36b33d3e95747d64effd509f66a9b3b76b47216b16f492e27d8d90b0c/agentops-0.3.10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8367ca0cb01df6b529f0127d23ec661e92c95ff68faf544439d86ec2331f3a52\",\"md5\":\"639da9c2a3381cb3f62812bfe48a5e57\",\"sha256\":\"40f895019f29bc5a6c023110cbec32870e5edb3e3926f8100974db8d3e299e2a\"},\"downloads\":-1,\"filename\":\"agentops-0.3.10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"639da9c2a3381cb3f62812bfe48a5e57\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":45332,\"upload_time\":\"2024-08-19T20:51:50\",\"upload_time_iso_8601\":\"2024-08-19T20:51:50.714217Z\",\"url\":\"https://files.pythonhosted.org/packages/83/67/ca0cb01df6b529f0127d23ec661e92c95ff68faf544439d86ec2331f3a52/agentops-0.3.10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0b078e6a74f084463def9d79d2c84d79475adc0229bbfb2e57401b0616ba6d6a\",\"md5\":\"e760d867d9431d1bc13798024237ab99\",\"sha256\":\"75fe10b8fc86c7f5c2633139ac1c06959611f22434fc1aaa8688c3c223fde8b5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"e760d867d9431d1bc13798024237ab99\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50252,\"upload_time\":\"2024-09-17T21:57:23\",\"upload_time_iso_8601\":\"2024-09-17T21:57:23.085964Z\",\"url\":\"https://files.pythonhosted.org/packages/0b/07/8e6a74f084463def9d79d2c84d79475adc0229bbfb2e57401b0616ba6d6a/agentops-0.3.11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3746057c552ea7ded5c954bdcbaf8a7dca07b6109633e040bf33de5f97a1289b\",\"md5\":\"3b661fb76d343ec3bdef5b70fc9e5cc3\",\"sha256\":\"38a2ffeeac1d722cb72c32d70e1c840424902b57934c647ef10de15478fe8f27\"},\"downloads\":-1,\"filename\":\"agentops-0.3.11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3b661fb76d343ec3bdef5b70fc9e5cc3\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48018,\"upload_time\":\"2024-09-17T21:57:24\",\"upload_time_iso_8601\":\"2024-09-17T21:57:24.699442Z\",\"url\":\"https://files.pythonhosted.org/packages/37/46/057c552ea7ded5c954bdcbaf8a7dca07b6109633e040bf33de5f97a1289b/agentops-0.3.11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"ac0a9004d7a8c2865ed804ddd6968095ef100ac554bc51ada7a2f3c0b4e9142b\",\"md5\":\"be18cdad4333c6013d9584b84b4c7875\",\"sha256\":\"4767def30de5dd97397728efcb50398a4f6d6823c1b534846f0a9b0cb85a6d45\"},\"downloads\":-1,\"filename\":\"agentops-0.3.12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"be18cdad4333c6013d9584b84b4c7875\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50794,\"upload_time\":\"2024-09-23T19:30:49\",\"upload_time_iso_8601\":\"2024-09-23T19:30:49.050650Z\",\"url\":\"https://files.pythonhosted.org/packages/ac/0a/9004d7a8c2865ed804ddd6968095ef100ac554bc51ada7a2f3c0b4e9142b/agentops-0.3.12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2c6d4f640d9fadd22f8cd7cb9857eed1f56d422f11b130ba226b947454eb0f0b\",\"md5\":\"91aa981d4199ac73b4d7407547667e2f\",\"sha256\":\"11ce3048656b5d146d02a4890dd50c8d2801ca5ad5caccab17d573cd8eea6e83\"},\"downloads\":-1,\"filename\":\"agentops-0.3.12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"91aa981d4199ac73b4d7407547667e2f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48525,\"upload_time\":\"2024-09-23T19:30:50\",\"upload_time_iso_8601\":\"2024-09-23T19:30:50.568151Z\",\"url\":\"https://files.pythonhosted.org/packages/2c/6d/4f640d9fadd22f8cd7cb9857eed1f56d422f11b130ba226b947454eb0f0b/agentops-0.3.12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"68efa3b8adc0de2e7daa1e6e2734af9a0e37c90e3346b8a804e3fdc322c82b6c\",\"md5\":\"948e9278dfc02e1a6ba2ec563296779a\",\"sha256\":\"81bfdfedd990fbc3064ee42a67422ddbee07b6cd96c5fca7e124eb8c1e0cebdc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"948e9278dfc02e1a6ba2ec563296779a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50813,\"upload_time\":\"2024-10-02T18:32:59\",\"upload_time_iso_8601\":\"2024-10-02T18:32:59.208892Z\",\"url\":\"https://files.pythonhosted.org/packages/68/ef/a3b8adc0de2e7daa1e6e2734af9a0e37c90e3346b8a804e3fdc322c82b6c/agentops-0.3.13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"3511fb06b4cee96285a5f745809d0f4efddef70d2a82112a633ed53834d6fc64\",\"md5\":\"27a923eaceb4ae35abe2cf1aed1b8241\",\"sha256\":\"319b7325fb79004ce996191aa21f0982489be22cc1acc2f3f6d02cdff1db2429\"},\"downloads\":-1,\"filename\":\"agentops-0.3.13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"27a923eaceb4ae35abe2cf1aed1b8241\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48559,\"upload_time\":\"2024-10-02T18:33:00\",\"upload_time_iso_8601\":\"2024-10-02T18:33:00.614409Z\",\"url\":\"https://files.pythonhosted.org/packages/35/11/fb06b4cee96285a5f745809d0f4efddef70d2a82112a633ed53834d6fc64/agentops-0.3.13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.14\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"1c2775ab5bf99341a6a02775e3858f54a18cbcda0f35b5c6c0f114a829d62b8e\",\"md5\":\"ad2d676d293c4baa1f9afecc61654e50\",\"sha256\":\"f4a2fcf1a7caf1d5383bfb66d8a9d567f3cb88fc7495cfd81ade167b0c06a4ea\"},\"downloads\":-1,\"filename\":\"agentops-0.3.14-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"ad2d676d293c4baa1f9afecc61654e50\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50825,\"upload_time\":\"2024-10-14T23:53:48\",\"upload_time_iso_8601\":\"2024-10-14T23:53:48.464714Z\",\"url\":\"https://files.pythonhosted.org/packages/1c/27/75ab5bf99341a6a02775e3858f54a18cbcda0f35b5c6c0f114a829d62b8e/agentops-0.3.14-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"46cb183fdaf40ae97ac1806ba91f6f23d55dc0a1a5cdf0881a5c834c8ca7175a\",\"md5\":\"b90053253770c8e1c385b18e7172d58f\",\"sha256\":\"fcb515e5743d73efee851b687692bed74797dc88e29a8327b2bbfb21d73a7447\"},\"downloads\":-1,\"filename\":\"agentops-0.3.14.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b90053253770c8e1c385b18e7172d58f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48548,\"upload_time\":\"2024-10-14T23:53:50\",\"upload_time_iso_8601\":\"2024-10-14T23:53:50.306080Z\",\"url\":\"https://files.pythonhosted.org/packages/46/cb/183fdaf40ae97ac1806ba91f6f23d55dc0a1a5cdf0881a5c834c8ca7175a/agentops-0.3.14.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.15\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"eadebed95f173bd304abe219b2b0a6f4e1f8e38b6733b19f2444a30fe2e731e1\",\"md5\":\"7a46ccd127ffcd52eff26edaf5721bd9\",\"sha256\":\"d5617108bbd9871a4250415f4e536ba33c2a6a2d2bec9342046303fb9e839f9d\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7a46ccd127ffcd52eff26edaf5721bd9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55349,\"upload_time\":\"2024-11-09T01:18:40\",\"upload_time_iso_8601\":\"2024-11-09T01:18:40.622134Z\",\"url\":\"https://files.pythonhosted.org/packages/ea/de/bed95f173bd304abe219b2b0a6f4e1f8e38b6733b19f2444a30fe2e731e1/agentops-0.3.15-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"33a40ef511dc3f23bba2d345b464223b1e7acc3c2a29230a93abb8fbcb6faebf\",\"md5\":\"7af7abcf01e8d3ef64ac287e9300528f\",\"sha256\":\"4358f85929d55929002cae589323d36b68fc4d12d0ea5010a80bfc4c7addc0ec\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15.tar.gz\",\"has_sig\":false,\"md5_digest\":\"7af7abcf01e8d3ef64ac287e9300528f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51296,\"upload_time\":\"2024-11-09T01:18:42\",\"upload_time_iso_8601\":\"2024-11-09T01:18:42.358185Z\",\"url\":\"https://files.pythonhosted.org/packages/33/a4/0ef511dc3f23bba2d345b464223b1e7acc3c2a29230a93abb8fbcb6faebf/agentops-0.3.15.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.15rc1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"0978ac2f89ccb7b3a31742f5b70434953faff168da6cab67c0836f432919c762\",\"md5\":\"7f805adf76594ac4bc169b1a111817f4\",\"sha256\":\"86069387a265bc6c5fa00ffbb3f8a131254a51ee3a9b8b35af4aca823dee76f1\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15rc1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"7f805adf76594ac4bc169b1a111817f4\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":50798,\"upload_time\":\"2024-10-31T04:36:11\",\"upload_time_iso_8601\":\"2024-10-31T04:36:11.059082Z\",\"url\":\"https://files.pythonhosted.org/packages/09/78/ac2f89ccb7b3a31742f5b70434953faff168da6cab67c0836f432919c762/agentops-0.3.15rc1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4317d6950ad32c33317509ea05a64d01ab661515165ffbd4e120148826b69ffb\",\"md5\":\"5f131294c10c9b60b33ec93edc106f4f\",\"sha256\":\"897ab94ae4fca8f1711216f9317dbf6f14e5d018c866086ef0b8831dc125e4ad\"},\"downloads\":-1,\"filename\":\"agentops-0.3.15rc1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"5f131294c10c9b60b33ec93edc106f4f\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48739,\"upload_time\":\"2024-10-31T04:36:12\",\"upload_time_iso_8601\":\"2024-10-31T04:36:12.630857Z\",\"url\":\"https://files.pythonhosted.org/packages/43/17/d6950ad32c33317509ea05a64d01ab661515165ffbd4e120148826b69ffb/agentops-0.3.15rc1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.16\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b876e1c933480ec9ad093a841321e5c9f7f16a0af59f339ba2c840851b1af01d\",\"md5\":\"d57593bb32704fae1163656f03355a71\",\"sha256\":\"7763e65efe053fa81cea2a2e16f015c7603365280972e0c0709eec32c3c8569e\"},\"downloads\":-1,\"filename\":\"agentops-0.3.16-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d57593bb32704fae1163656f03355a71\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55351,\"upload_time\":\"2024-11-09T18:44:21\",\"upload_time_iso_8601\":\"2024-11-09T18:44:21.626158Z\",\"url\":\"https://files.pythonhosted.org/packages/b8/76/e1c933480ec9ad093a841321e5c9f7f16a0af59f339ba2c840851b1af01d/agentops-0.3.16-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"aa748e77e654b37a5e0c977eca4f7e92740c1e24be39c827815e7bd8da429003\",\"md5\":\"23078e1dc78ef459a667feeb904345c1\",\"sha256\":\"564163eb048939d64e848c7e6caf25d6c0aee31200623ef97efe492f090f8939\"},\"downloads\":-1,\"filename\":\"agentops-0.3.16.tar.gz\",\"has_sig\":false,\"md5_digest\":\"23078e1dc78ef459a667feeb904345c1\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51308,\"upload_time\":\"2024-11-09T18:44:23\",\"upload_time_iso_8601\":\"2024-11-09T18:44:23.037514Z\",\"url\":\"https://files.pythonhosted.org/packages/aa/74/8e77e654b37a5e0c977eca4f7e92740c1e24be39c827815e7bd8da429003/agentops-0.3.16.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.17\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6c3038a659671eec20fcae759bd69655ec45b08c4e875627b33e3b05bd46f299\",\"md5\":\"93bbe3bd4ee492e7e73780c07897b017\",\"sha256\":\"0d24dd082270a76c98ad0391101d5b5c3d01e389c5032389ecd551285e4b0662\"},\"downloads\":-1,\"filename\":\"agentops-0.3.17-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"93bbe3bd4ee492e7e73780c07897b017\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":55503,\"upload_time\":\"2024-11-10T02:39:28\",\"upload_time_iso_8601\":\"2024-11-10T02:39:28.884052Z\",\"url\":\"https://files.pythonhosted.org/packages/6c/30/38a659671eec20fcae759bd69655ec45b08c4e875627b33e3b05bd46f299/agentops-0.3.17-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"2131d9a3747df04b7915ee1cffaa4a5636f8ed0e1385e5236b0da085ccce936a\",\"md5\":\"49e8cf186203cadaa39301c4ce5fda42\",\"sha256\":\"a893cc7c37eda720ab59e8facaa2774cc23d125648aa00539ae485ff592e8b77\"},\"downloads\":-1,\"filename\":\"agentops-0.3.17.tar.gz\",\"has_sig\":false,\"md5_digest\":\"49e8cf186203cadaa39301c4ce5fda42\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":51469,\"upload_time\":\"2024-11-10T02:39:30\",\"upload_time_iso_8601\":\"2024-11-10T02:39:30.636907Z\",\"url\":\"https://files.pythonhosted.org/packages/21/31/d9a3747df04b7915ee1cffaa4a5636f8ed0e1385e5236b0da085ccce936a/agentops-0.3.17.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.18\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"978dbd4cad95dad722dc2d3e4179feab1058ef846828c0e15e51e8bfaea373ee\",\"md5\":\"d9afc3636cb969c286738ce02ed12196\",\"sha256\":\"8b48d8a1662f276653430fd541c77fa4f9a15a43e881b518ff88ea56925afcf7\"},\"downloads\":-1,\"filename\":\"agentops-0.3.18-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9afc3636cb969c286738ce02ed12196\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":58032,\"upload_time\":\"2024-11-19T19:06:19\",\"upload_time_iso_8601\":\"2024-11-19T19:06:19.068511Z\",\"url\":\"https://files.pythonhosted.org/packages/97/8d/bd4cad95dad722dc2d3e4179feab1058ef846828c0e15e51e8bfaea373ee/agentops-0.3.18-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c55246bb2f29b9e5f2e1d8b124296b7794934a9048de635d9e7d6a95e791ad7b\",\"md5\":\"02a4fc081499360aac58485a94a6ca33\",\"sha256\":\"4d509754df7be52579597cc9f53939c5218131a0379463e0ff6f6f40cde9fcc4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.18.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02a4fc081499360aac58485a94a6ca33\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":55394,\"upload_time\":\"2024-11-19T19:06:21\",\"upload_time_iso_8601\":\"2024-11-19T19:06:21.306448Z\",\"url\":\"https://files.pythonhosted.org/packages/c5/52/46bb2f29b9e5f2e1d8b124296b7794934a9048de635d9e7d6a95e791ad7b/agentops-0.3.18.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.19\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"fc1e48616d2db40717d560a561e13521009655d447388f944f12f2b3811e6d7d\",\"md5\":\"a9e23f1d31821585017e97633b058233\",\"sha256\":\"1888a47dd3d9b92c5f246cdeeab333def5acbd26833d3148c63e8793457405b3\"},\"downloads\":-1,\"filename\":\"agentops-0.3.19-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a9e23f1d31821585017e97633b058233\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38648,\"upload_time\":\"2024-12-04T00:54:00\",\"upload_time_iso_8601\":\"2024-12-04T00:54:00.173948Z\",\"url\":\"https://files.pythonhosted.org/packages/fc/1e/48616d2db40717d560a561e13521009655d447388f944f12f2b3811e6d7d/agentops-0.3.19-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency, please install 0.3.18\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"b319bb0e9895cb6da29f764f8d7b95b10ac8fde400bc17028f9bd486e9574dbe\",\"md5\":\"f6424c41464d438007e9628748a0bea6\",\"sha256\":\"ca0d4ba35ae699169ae20f74f72ca6a5780a8768ba2a2c32589fc5292ed81674\"},\"downloads\":-1,\"filename\":\"agentops-0.3.19.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f6424c41464d438007e9628748a0bea6\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48360,\"upload_time\":\"2024-12-04T00:54:01\",\"upload_time_iso_8601\":\"2024-12-04T00:54:01.418776Z\",\"url\":\"https://files.pythonhosted.org/packages/b3/19/bb0e9895cb6da29f764f8d7b95b10ac8fde400bc17028f9bd486e9574dbe/agentops-0.3.19.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency, please install 0.3.18\"}],\"0.3.2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9d2c23b745a61d48df788b8020e5ea37e94f9da59b322a17accafe18d8cb4006\",\"md5\":\"62d576d9518a627fe4232709c0721eff\",\"sha256\":\"b35988e04378624204572bb3d7a454094f879ea573f05b57d4e75ab0bfbb82af\"},\"downloads\":-1,\"filename\":\"agentops-0.3.2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"62d576d9518a627fe4232709c0721eff\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39527,\"upload_time\":\"2024-07-21T03:09:56\",\"upload_time_iso_8601\":\"2024-07-21T03:09:56.844372Z\",\"url\":\"https://files.pythonhosted.org/packages/9d/2c/23b745a61d48df788b8020e5ea37e94f9da59b322a17accafe18d8cb4006/agentops-0.3.2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d2a1cc21406646c065e83435fe30fa205b99b2204d8074eca31926a5f8ef4381\",\"md5\":\"30b247bcae25b181485a89213518241c\",\"sha256\":\"55559ac4a43634831dfa8937c2597c28e332809dc7c6bb3bc3c8b233442e224c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"30b247bcae25b181485a89213518241c\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":41894,\"upload_time\":\"2024-07-21T03:09:58\",\"upload_time_iso_8601\":\"2024-07-21T03:09:58.409826Z\",\"url\":\"https://files.pythonhosted.org/packages/d2/a1/cc21406646c065e83435fe30fa205b99b2204d8074eca31926a5f8ef4381/agentops-0.3.2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a854ae9147a490dd9bd03ab7bfc5af47f40ff675840a9aa143896b385a8f8d3a\",\"md5\":\"a13af8737ddff8a0c7c0f05cee70085f\",\"sha256\":\"b5396e11b0bfef46b85604e8e36ab17668057711edd56f1edb0a067b8676fdcc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a13af8737ddff8a0c7c0f05cee70085f\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38674,\"upload_time\":\"2024-12-07T00:06:31\",\"upload_time_iso_8601\":\"2024-12-07T00:06:31.901162Z\",\"url\":\"https://files.pythonhosted.org/packages/a8/54/ae9147a490dd9bd03ab7bfc5af47f40ff675840a9aa143896b385a8f8d3a/agentops-0.3.20-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Wrong + release\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c1eb19d04c801854ba75e235eb87c51a6a9c5b1a89e8579cb745c83f8bf84e08\",\"md5\":\"11754497191d8340eda7a831720d9b74\",\"sha256\":\"c71406294804a82795310a4afc492064a8884b1ba47e12607230975bc1291ce3\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20.tar.gz\",\"has_sig\":false,\"md5_digest\":\"11754497191d8340eda7a831720d9b74\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48332,\"upload_time\":\"2024-12-07T00:06:33\",\"upload_time_iso_8601\":\"2024-12-07T00:06:33.568362Z\",\"url\":\"https://files.pythonhosted.org/packages/c1/eb/19d04c801854ba75e235eb87c51a6a9c5b1a89e8579cb745c83f8bf84e08/agentops-0.3.20.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Wrong + release\"}],\"0.3.20rc1\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"073de7eba58e2a60c0136eee2760b20f99607001d372de26505feee891e0976b\",\"md5\":\"73c6ac515ee9d555e27a7ba7e26e3a46\",\"sha256\":\"079ea8138938e27a3e1319a235a6f4cf98c0d6846731d854aa83b8422d570bda\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc1-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"73c6ac515ee9d555e27a7ba7e26e3a46\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38718,\"upload_time\":\"2024-12-07T00:10:18\",\"upload_time_iso_8601\":\"2024-12-07T00:10:18.796963Z\",\"url\":\"https://files.pythonhosted.org/packages/07/3d/e7eba58e2a60c0136eee2760b20f99607001d372de26505feee891e0976b/agentops-0.3.20rc1-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"02ff111d618c21aad946caedb666030f1f374a0d558228b9061ea2b46acb6bcd\",\"md5\":\"17062e985b931dc85b4855922d7842ce\",\"sha256\":\"ef48447e07a3eded246b2f7e10bba74422a34563ffdc667ac16b2d3383475a3f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc1.tar.gz\",\"has_sig\":false,\"md5_digest\":\"17062e985b931dc85b4855922d7842ce\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48329,\"upload_time\":\"2024-12-07T00:10:20\",\"upload_time_iso_8601\":\"2024-12-07T00:10:20.510407Z\",\"url\":\"https://files.pythonhosted.org/packages/02/ff/111d618c21aad946caedb666030f1f374a0d558228b9061ea2b46acb6bcd/agentops-0.3.20rc1.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc10\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a7274706d8d9c8f4abecc1dda2b9b02cd02ffe895220bd39f58322a46ccc7254\",\"md5\":\"2c66a93c691c6b8cac2f2dc8fab9efae\",\"sha256\":\"3c10d77f2fe88b61d97ad007820c1ba968c62f692986ea2b2cbfd8b22ec9e5bc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc10-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"2c66a93c691c6b8cac2f2dc8fab9efae\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":57423,\"upload_time\":\"2024-12-10T03:41:04\",\"upload_time_iso_8601\":\"2024-12-10T03:41:04.579814Z\",\"url\":\"https://files.pythonhosted.org/packages/a7/27/4706d8d9c8f4abecc1dda2b9b02cd02ffe895220bd39f58322a46ccc7254/agentops-0.3.20rc10-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"efe9e304f465945f57e4c6d35cd35fff53dc2a2e36b9b32793fa57017467b0c2\",\"md5\":\"9882d32866b94d925ba36ac376c30bea\",\"sha256\":\"f0c72c20e7fe41054c22c6257420314863549dd91428a892ac9b47b81cdfcc8c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc10.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9882d32866b94d925ba36ac376c30bea\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":57564,\"upload_time\":\"2024-12-10T03:41:06\",\"upload_time_iso_8601\":\"2024-12-10T03:41:06.899043Z\",\"url\":\"https://files.pythonhosted.org/packages/ef/e9/e304f465945f57e4c6d35cd35fff53dc2a2e36b9b32793fa57017467b0c2/agentops-0.3.20rc10.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc11\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"8dbf598ec2532b713a228f4041c9b2c10358cd43e6aecf6128d0988a0b5f103e\",\"md5\":\"d9ab67a850aefcb5bf9467b48f74675d\",\"sha256\":\"3e5d4c19de6c58ae684693f47a2f03db35eaf4cd6d8aafc1e804a134462c2b55\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc11-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"d9ab67a850aefcb5bf9467b48f74675d\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":60280,\"upload_time\":\"2024-12-10T22:45:05\",\"upload_time_iso_8601\":\"2024-12-10T22:45:05.280119Z\",\"url\":\"https://files.pythonhosted.org/packages/8d/bf/598ec2532b713a228f4041c9b2c10358cd43e6aecf6128d0988a0b5f103e/agentops-0.3.20rc11-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"210642e51fff6a4537fb811a15bc22d00343145285c6246dc069433d61436e1b\",\"md5\":\"ca5279f4cb6ad82e06ef542a2d08d06e\",\"sha256\":\"9211489c6a01bc9cda4061826f8b80d0989cfcd7fbabe1dd2ed5a5cb76b3d6f0\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc11.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ca5279f4cb6ad82e06ef542a2d08d06e\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":59718,\"upload_time\":\"2024-12-10T22:45:09\",\"upload_time_iso_8601\":\"2024-12-10T22:45:09.616947Z\",\"url\":\"https://files.pythonhosted.org/packages/21/06/42e51fff6a4537fb811a15bc22d00343145285c6246dc069433d61436e1b/agentops-0.3.20rc11.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc12\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"dc281db6f49f10ac849683de1d7f5b5ef492be2a996325302167b8388f375d51\",\"md5\":\"8b2611d2510f0d4fac7ab824d7658ff7\",\"sha256\":\"9237652d28db89315c49c0705829b291c17280e07d41272f909e2609acec650b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc12-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"8b2611d2510f0d4fac7ab824d7658ff7\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":60282,\"upload_time\":\"2024-12-10T23:10:54\",\"upload_time_iso_8601\":\"2024-12-10T23:10:54.516317Z\",\"url\":\"https://files.pythonhosted.org/packages/dc/28/1db6f49f10ac849683de1d7f5b5ef492be2a996325302167b8388f375d51/agentops-0.3.20rc12-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"10c073cb9a55592f55bb44c9206f50f41d7b7a8a8d6fd67d42f40c8f9f184b0e\",\"md5\":\"02b3a68f3491564af2e29f0f216eea1e\",\"sha256\":\"d4d3a73ac34b2a00edb6e6b5b220cbb031bb76ff58d85e2096b536be24aee4fe\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc12.tar.gz\",\"has_sig\":false,\"md5_digest\":\"02b3a68f3491564af2e29f0f216eea1e\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":59731,\"upload_time\":\"2024-12-10T23:10:56\",\"upload_time_iso_8601\":\"2024-12-10T23:10:56.822803Z\",\"url\":\"https://files.pythonhosted.org/packages/10/c0/73cb9a55592f55bb44c9206f50f41d7b7a8a8d6fd67d42f40c8f9f184b0e/agentops-0.3.20rc12.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc13\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4ed48a97563074235f266281167c70ab90833c195e2b704087e414509ae3ec32\",\"md5\":\"c86fe22044483f94bc044a3bf7b054b7\",\"sha256\":\"2fbb3b55701d9aea64f622e7e29aa417772e897e2414f74ed3954d99009d224f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc13-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c86fe22044483f94bc044a3bf7b054b7\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":64724,\"upload_time\":\"2024-12-10T23:27:50\",\"upload_time_iso_8601\":\"2024-12-10T23:27:50.895316Z\",\"url\":\"https://files.pythonhosted.org/packages/4e/d4/8a97563074235f266281167c70ab90833c195e2b704087e414509ae3ec32/agentops-0.3.20rc13-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"767e59c6f34e9a067d9152021de7e3146e5c0f69f36434dcb3026ff03f382489\",\"md5\":\"152a70647d5ff28fe851e4cc406d8fb4\",\"sha256\":\"b7a6d1d7f603bbb2605cc747762ae866bdee53941c4c76087c9f0f0a5efad03b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc13.tar.gz\",\"has_sig\":false,\"md5_digest\":\"152a70647d5ff28fe851e4cc406d8fb4\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":63242,\"upload_time\":\"2024-12-10T23:27:53\",\"upload_time_iso_8601\":\"2024-12-10T23:27:53.657606Z\",\"url\":\"https://files.pythonhosted.org/packages/76/7e/59c6f34e9a067d9152021de7e3146e5c0f69f36434dcb3026ff03f382489/agentops-0.3.20rc13.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc2\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"cebbbca58531e21f4c1c92cbe6ba15d0f308ff8f3b27083cd0ce6358c7d1d117\",\"md5\":\"5a9fcd99e0b6e3b24e721b22c3ee5907\",\"sha256\":\"ada95d42e82abef16c1e83443dc42d02bb470ee48b1fa8f2d58a20703511a7be\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc2-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"5a9fcd99e0b6e3b24e721b22c3ee5907\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38716,\"upload_time\":\"2024-12-07T00:20:01\",\"upload_time_iso_8601\":\"2024-12-07T00:20:01.561074Z\",\"url\":\"https://files.pythonhosted.org/packages/ce/bb/bca58531e21f4c1c92cbe6ba15d0f308ff8f3b27083cd0ce6358c7d1d117/agentops-0.3.20rc2-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"124aec14492566949b7383ae321cb40c1edc18940712b277c08d32392566f7a8\",\"md5\":\"ff8db0075584474e35784b080fb9b6b1\",\"sha256\":\"60462b82390e78fd21312c5db45f0f48dfcc9c9ab354e6bf232db557ccf57c13\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc2.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ff8db0075584474e35784b080fb9b6b1\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48341,\"upload_time\":\"2024-12-07T00:20:02\",\"upload_time_iso_8601\":\"2024-12-07T00:20:02.519240Z\",\"url\":\"https://files.pythonhosted.org/packages/12/4a/ec14492566949b7383ae321cb40c1edc18940712b277c08d32392566f7a8/agentops-0.3.20rc2.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a1551125b2b3823fcb3f3afa3c6b9621541799ac329622ee21038babbfbedf39\",\"md5\":\"a82f1b73347d3a2fe33f31cec01ca376\",\"sha256\":\"72253950b46a11b5b1163b13bbb9d5b769e6cdb7b102acf46efac8cf02f7eaac\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"a82f1b73347d3a2fe33f31cec01ca376\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":38719,\"upload_time\":\"2024-12-07T00:53:45\",\"upload_time_iso_8601\":\"2024-12-07T00:53:45.212239Z\",\"url\":\"https://files.pythonhosted.org/packages/a1/55/1125b2b3823fcb3f3afa3c6b9621541799ac329622ee21038babbfbedf39/agentops-0.3.20rc4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a180420ef26926052b12d1c2010360b4037f6765321055ce7e09c6bfaeac3480\",\"md5\":\"1a314ff81d87a774e5e1cf338151a353\",\"sha256\":\"4218fcfa42644dd86ee50ac7806d08783e4629db30b127bc8011c9c3523eeb5c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1a314ff81d87a774e5e1cf338151a353\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":48332,\"upload_time\":\"2024-12-07T00:53:47\",\"upload_time_iso_8601\":\"2024-12-07T00:53:47.581677Z\",\"url\":\"https://files.pythonhosted.org/packages/a1/80/420ef26926052b12d1c2010360b4037f6765321055ce7e09c6bfaeac3480/agentops-0.3.20rc4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"7747e61c5387124f53a3095261427888ab88e192828e3bb8be92660bf4e008d0\",\"md5\":\"fd7343ddf99f077d1a159b87d84ed79c\",\"sha256\":\"97df38116ec7fe337fc04b800e423aa8b5e69681565c02dc4af3e9c60764827e\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"fd7343ddf99f077d1a159b87d84ed79c\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":44545,\"upload_time\":\"2024-12-07T01:38:17\",\"upload_time_iso_8601\":\"2024-12-07T01:38:17.177125Z\",\"url\":\"https://files.pythonhosted.org/packages/77/47/e61c5387124f53a3095261427888ab88e192828e3bb8be92660bf4e008d0/agentops-0.3.20rc5-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"145fa0bf5ee5b56dacf63b9712ac62169c585c6222efe043cc77f3148f709965\",\"md5\":\"20a32d514b5d51851dbcbdfb2c189491\",\"sha256\":\"48111083dab1fc30f0545e0812c4aab00fc9e9d48de42de95d254699396992a8\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"20a32d514b5d51851dbcbdfb2c189491\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":53243,\"upload_time\":\"2024-12-07T01:38:18\",\"upload_time_iso_8601\":\"2024-12-07T01:38:18.772880Z\",\"url\":\"https://files.pythonhosted.org/packages/14/5f/a0bf5ee5b56dacf63b9712ac62169c585c6222efe043cc77f3148f709965/agentops-0.3.20rc5.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"85f3a5ae3d8d47aa5160a5c805551d75077cad61bff9626abe44079d29d1c299\",\"md5\":\"30f87c628c530e82e27b8bc2d2a46d8a\",\"sha256\":\"d03f16832b3a5670d9c3273b95c9d9def772c203b2cd4ac52ae0e7f6d3b1b9e4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"30f87c628c530e82e27b8bc2d2a46d8a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":61844,\"upload_time\":\"2024-12-07T01:49:11\",\"upload_time_iso_8601\":\"2024-12-07T01:49:11.801219Z\",\"url\":\"https://files.pythonhosted.org/packages/85/f3/a5ae3d8d47aa5160a5c805551d75077cad61bff9626abe44079d29d1c299/agentops-0.3.20rc6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"060e24f42ed1de3d892355f3ba90f0b7f659855fafd18851e59aa7174fa30615\",\"md5\":\"384c60ee11b827b8bad31cef20a35a17\",\"sha256\":\"45aa4797269214d41858537d95050964f330651da5c7412b2895e714a81f30f5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"384c60ee11b827b8bad31cef20a35a17\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":61004,\"upload_time\":\"2024-12-07T01:49:13\",\"upload_time_iso_8601\":\"2024-12-07T01:49:13.917920Z\",\"url\":\"https://files.pythonhosted.org/packages/06/0e/24f42ed1de3d892355f3ba90f0b7f659855fafd18851e59aa7174fa30615/agentops-0.3.20rc6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d502edf7ba8aff1a994176da4c95688c9ba0428ac3bd9a0db2392fe5009162a9\",\"md5\":\"9b43c5e2df12abac01ffc5262e991825\",\"sha256\":\"95972115c5c753ceee477834de902afaf0664107048e44eee2c65e74e05656a2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"9b43c5e2df12abac01ffc5262e991825\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":40117,\"upload_time\":\"2024-12-07T02:12:48\",\"upload_time_iso_8601\":\"2024-12-07T02:12:48.512036Z\",\"url\":\"https://files.pythonhosted.org/packages/d5/02/edf7ba8aff1a994176da4c95688c9ba0428ac3bd9a0db2392fe5009162a9/agentops-0.3.20rc7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"5d7029d8d02fcf6db627c6b20ceab974c455e23a25fc0e991c0a8d0eaebda523\",\"md5\":\"9de760856bed3f7adbd1d0ab7ba0a63a\",\"sha256\":\"7c793b7b199a61ca61366ddb8fd94986fac262ef6514918c3baaa08184b86669\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"9de760856bed3f7adbd1d0ab7ba0a63a\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":49661,\"upload_time\":\"2024-12-07T02:12:50\",\"upload_time_iso_8601\":\"2024-12-07T02:12:50.120388Z\",\"url\":\"https://files.pythonhosted.org/packages/5d/70/29d8d02fcf6db627c6b20ceab974c455e23a25fc0e991c0a8d0eaebda523/agentops-0.3.20rc7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.20rc8\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"6d0f66418c0b20f40fe11de50f29481abdb266ff641ac6166eab9eac3d7364d2\",\"md5\":\"52a2cea48e48d1818169c07507a6c7a9\",\"sha256\":\"8cf2e9fe6400a4fb4367a039cacc5d76339a8fd2749a44243389547e928e545c\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc8-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"52a2cea48e48d1818169c07507a6c7a9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":57414,\"upload_time\":\"2024-12-07T02:17:51\",\"upload_time_iso_8601\":\"2024-12-07T02:17:51.404804Z\",\"url\":\"https://files.pythonhosted.org/packages/6d/0f/66418c0b20f40fe11de50f29481abdb266ff641ac6166eab9eac3d7364d2/agentops-0.3.20rc8-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"4d18250b066f23ccbb22f2bba8df101361abd5724ddcef59a4d63d4539c7cd82\",\"md5\":\"f7887176e88d4434e38e237850363b80\",\"sha256\":\"a06e7939dd4d59c9880ded1b129fd4548b34be5530a46cf043326740bdfeca56\"},\"downloads\":-1,\"filename\":\"agentops-0.3.20rc8.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f7887176e88d4434e38e237850363b80\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":57521,\"upload_time\":\"2024-12-07T02:17:53\",\"upload_time_iso_8601\":\"2024-12-07T02:17:53.055737Z\",\"url\":\"https://files.pythonhosted.org/packages/4d/18/250b066f23ccbb22f2bba8df101361abd5724ddcef59a4d63d4539c7cd82/agentops-0.3.20rc8.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.21\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c4cb3b6cc5a08d11d9e56501f980222da0fa41814b7d6948a7f6354f31739af6\",\"md5\":\"c7592f9e7993dbe307fbffd7e4da1e51\",\"sha256\":\"4f98beecdce4c7cbee80ec26658a9657ba307a1fb2910b589f85325d3259b75b\"},\"downloads\":-1,\"filename\":\"agentops-0.3.21-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c7592f9e7993dbe307fbffd7e4da1e51\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":64701,\"upload_time\":\"2024-12-11T12:24:00\",\"upload_time_iso_8601\":\"2024-12-11T12:24:00.934724Z\",\"url\":\"https://files.pythonhosted.org/packages/c4/cb/3b6cc5a08d11d9e56501f980222da0fa41814b7d6948a7f6354f31739af6/agentops-0.3.21-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"83f6bfd27fa4b948c353eaff579dafdf4eb54833f5c526e00c6f2faee4b467a8\",\"md5\":\"83d7666511cccf3b0d4354cebd99b110\",\"sha256\":\"d8e8d1f6d154554dba64ec5b139905bf76c68f21575af9fa2ca1697277fe36f2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.21.tar.gz\",\"has_sig\":false,\"md5_digest\":\"83d7666511cccf3b0d4354cebd99b110\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":63185,\"upload_time\":\"2024-12-11T12:24:02\",\"upload_time_iso_8601\":\"2024-12-11T12:24:02.068404Z\",\"url\":\"https://files.pythonhosted.org/packages/83/f6/bfd27fa4b948c353eaff579dafdf4eb54833f5c526e00c6f2faee4b467a8/agentops-0.3.21.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.22\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"11e721b42168ecfd0a9fff9dea51201646b6e62c4f52c8cd9c2a6400125d7234\",\"md5\":\"26061ab467e358b63251f9547275bbbd\",\"sha256\":\"992f4f31d80e8b0b2098abf58ae2707c60538e4b66e5aec8cf49fb269d5a2adc\"},\"downloads\":-1,\"filename\":\"agentops-0.3.22-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"26061ab467e358b63251f9547275bbbd\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":39539,\"upload_time\":\"2025-01-11T03:21:39\",\"upload_time_iso_8601\":\"2025-01-11T03:21:39.093169Z\",\"url\":\"https://files.pythonhosted.org/packages/11/e7/21b42168ecfd0a9fff9dea51201646b6e62c4f52c8cd9c2a6400125d7234/agentops-0.3.22-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e067e61aa4c2e329da10b5e95d325091e599d8a00a28843a54bdcefa7a2eef8d\",\"md5\":\"bcf45b6c4c56884ed2409f835571af62\",\"sha256\":\"705d772b6994f8bab0cd163b24602009353f7906c72d9db008af11683f6e9341\"},\"downloads\":-1,\"filename\":\"agentops-0.3.22.tar.gz\",\"has_sig\":false,\"md5_digest\":\"bcf45b6c4c56884ed2409f835571af62\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":52845,\"upload_time\":\"2025-01-11T03:21:41\",\"upload_time_iso_8601\":\"2025-01-11T03:21:41.762282Z\",\"url\":\"https://files.pythonhosted.org/packages/e0/67/e61aa4c2e329da10b5e95d325091e599d8a00a28843a54bdcefa7a2eef8d/agentops-0.3.22.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Broken + dependency\"}],\"0.3.23\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"e67de1434765cf0a3d62372b74f47919aa17c0b01909823f7d3ee705edf821a9\",\"md5\":\"1f0f02509b8ba713db72e57a072f01a6\",\"sha256\":\"ecfff77d8f9006361ef2a2e8593271e97eb54b7b504abfb8abd6504006baca56\"},\"downloads\":-1,\"filename\":\"agentops-0.3.23-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"1f0f02509b8ba713db72e57a072f01a6\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":70098,\"upload_time\":\"2025-01-12T02:11:56\",\"upload_time_iso_8601\":\"2025-01-12T02:11:56.319763Z\",\"url\":\"https://files.pythonhosted.org/packages/e6/7d/e1434765cf0a3d62372b74f47919aa17c0b01909823f7d3ee705edf821a9/agentops-0.3.23-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"5c7fa4fd91f8fd819e1ecfdc608d1c7ade83de0f9dddd868e2c2c139a2fdae25\",\"md5\":\"b7922399f81fb26517eb69fc7fef97c9\",\"sha256\":\"4e4de49caeaf567b8746082f84a8cdd65afe2c698720f6f40251bbc4fdffe4c9\"},\"downloads\":-1,\"filename\":\"agentops-0.3.23.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b7922399f81fb26517eb69fc7fef97c9\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":64225,\"upload_time\":\"2025-01-12T02:11:59\",\"upload_time_iso_8601\":\"2025-01-12T02:11:59.360077Z\",\"url\":\"https://files.pythonhosted.org/packages/5c/7f/a4fd91f8fd819e1ecfdc608d1c7ade83de0f9dddd868e2c2c139a2fdae25/agentops-0.3.23.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.24\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"254ea7d131802bac2ece5302ebf78dcef1ba1ba2f8b3a51fbe44c7f52bae6a53\",\"md5\":\"39c39d8a7f1285add0fec21830a89a4a\",\"sha256\":\"c5dfc8098b0dd49ddd819aa55280d07f8bfbf2f8fa088fc51ff5849b65062b10\"},\"downloads\":-1,\"filename\":\"agentops-0.3.24-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"39c39d8a7f1285add0fec21830a89a4a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":71957,\"upload_time\":\"2025-01-18T19:08:02\",\"upload_time_iso_8601\":\"2025-01-18T19:08:02.053316Z\",\"url\":\"https://files.pythonhosted.org/packages/25/4e/a7d131802bac2ece5302ebf78dcef1ba1ba2f8b3a51fbe44c7f52bae6a53/agentops-0.3.24-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"71fee96e22c4bf762f34cd5ba435880470dad4576ab357ee61742fe053752322\",\"md5\":\"3e1b7e0a31197936e099a7509128f794\",\"sha256\":\"c97a3af959b728bcfbfb1ac2494cef82d8804defc9dac858648b39a9ecdcd2e4\"},\"downloads\":-1,\"filename\":\"agentops-0.3.24.tar.gz\",\"has_sig\":false,\"md5_digest\":\"3e1b7e0a31197936e099a7509128f794\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":233974,\"upload_time\":\"2025-01-18T19:08:04\",\"upload_time_iso_8601\":\"2025-01-18T19:08:04.121618Z\",\"url\":\"https://files.pythonhosted.org/packages/71/fe/e96e22c4bf762f34cd5ba435880470dad4576ab357ee61742fe053752322/agentops-0.3.24.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.25\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"e6e39cff4ed65c5deac34f427ed60cd7af3604ec7ed8a999c351f6411e190d3b\",\"md5\":\"328dedc417be02fc28f8a4c7ed7b52e9\",\"sha256\":\"4faebf73a62aa0bcac8578428277ca5b9af5e828f49f2cb03a9695b8426e6b9d\"},\"downloads\":-1,\"filename\":\"agentops-0.3.25-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"328dedc417be02fc28f8a4c7ed7b52e9\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":71971,\"upload_time\":\"2025-01-22T10:43:16\",\"upload_time_iso_8601\":\"2025-01-22T10:43:16.070593Z\",\"url\":\"https://files.pythonhosted.org/packages/e6/e3/9cff4ed65c5deac34f427ed60cd7af3604ec7ed8a999c351f6411e190d3b/agentops-0.3.25-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"2fdfeb00eaabebb51feae0724a5928f25df4d71d1c8392204f4f849351fd748c\",\"md5\":\"a40bc7037baf6dbba92d63331f561a28\",\"sha256\":\"868d855b6531d1fa2d1047db2cb03ddb1121062fd51c44b564dc626f15cc1e40\"},\"downloads\":-1,\"filename\":\"agentops-0.3.25.tar.gz\",\"has_sig\":false,\"md5_digest\":\"a40bc7037baf6dbba92d63331f561a28\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234024,\"upload_time\":\"2025-01-22T10:43:17\",\"upload_time_iso_8601\":\"2025-01-22T10:43:17.986230Z\",\"url\":\"https://files.pythonhosted.org/packages/2f/df/eb00eaabebb51feae0724a5928f25df4d71d1c8392204f4f849351fd748c/agentops-0.3.25.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.26\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"f521671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b\",\"md5\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"sha256\":\"20948f52e3ffb4ba1d52301c3a82e59490182c4dad22774ad831dce0181eb5c2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":72090,\"upload_time\":\"2025-01-24T23:44:06\",\"upload_time_iso_8601\":\"2025-01-24T23:44:06.828461Z\",\"url\":\"https://files.pythonhosted.org/packages/f5/21/671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b/agentops-0.3.26-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"76a1b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d\",\"md5\":\"ba4d0f2411ec72828677b38a395465cc\",\"sha256\":\"bc824bf8727332f59bf803cf84440d13e9e398406222ab29f45909ac1e39f815\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ba4d0f2411ec72828677b38a395465cc\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234235,\"upload_time\":\"2025-01-24T23:44:08\",\"upload_time_iso_8601\":\"2025-01-24T23:44:08.541961Z\",\"url\":\"https://files.pythonhosted.org/packages/76/a1/b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d/agentops-0.3.26.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.4\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"52f32bd714234ec345153c0fcbc9e4896c306c347f3fb66a3aa6d6fc109a7243\",\"md5\":\"c7a975a86900f7dbe6861a21fdd3c2d8\",\"sha256\":\"126f7aed4ba43c1399b5488d67a03d10cb4c531e619c650776f826ca00c1aa24\"},\"downloads\":-1,\"filename\":\"agentops-0.3.4-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c7a975a86900f7dbe6861a21fdd3c2d8\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39915,\"upload_time\":\"2024-07-24T23:15:03\",\"upload_time_iso_8601\":\"2024-07-24T23:15:03.892439Z\",\"url\":\"https://files.pythonhosted.org/packages/52/f3/2bd714234ec345153c0fcbc9e4896c306c347f3fb66a3aa6d6fc109a7243/agentops-0.3.4-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"d28b88a2c9c2df655de806adbb5deebb12c64d19d6aa3cfa759da642953525e0\",\"md5\":\"f48a2ab7fcaf9cf11a25805ac5300e26\",\"sha256\":\"a92c9cb7c511197f0ecb8cb5aca15d35022c15a3d2fd2aaaa34cd7e5dc59393f\"},\"downloads\":-1,\"filename\":\"agentops-0.3.4.tar.gz\",\"has_sig\":false,\"md5_digest\":\"f48a2ab7fcaf9cf11a25805ac5300e26\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42063,\"upload_time\":\"2024-07-24T23:15:05\",\"upload_time_iso_8601\":\"2024-07-24T23:15:05.586475Z\",\"url\":\"https://files.pythonhosted.org/packages/d2/8b/88a2c9c2df655de806adbb5deebb12c64d19d6aa3cfa759da642953525e0/agentops-0.3.4.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.5\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"f253f9672c6aa3c79b6a5b64321e93d2316f126add867ceb2e3e95ea8b4bf1b0\",\"md5\":\"bd45dc8100fd3974dff11014d12424ff\",\"sha256\":\"687cb938ecf9d1bf7650afc910e2b2e1b8b6d9e969215aeb49e57f1555a2a756\"},\"downloads\":-1,\"filename\":\"agentops-0.3.5-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"bd45dc8100fd3974dff11014d12424ff\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39177,\"upload_time\":\"2024-08-01T19:32:19\",\"upload_time_iso_8601\":\"2024-08-01T19:32:19.765946Z\",\"url\":\"https://files.pythonhosted.org/packages/f2/53/f9672c6aa3c79b6a5b64321e93d2316f126add867ceb2e3e95ea8b4bf1b0/agentops-0.3.5-py3-none-any.whl\",\"yanked\":true,\"yanked_reason\":\"Introduces + FileNotFoundError impacting OpenAI and LiteLLM integrations\"},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"235508ce5915f1ceb86ea6f7a6e8c8dc025b34981408a1b638316b5140fad525\",\"md5\":\"53ef2f5230de09260f4ead09633dde62\",\"sha256\":\"ae98540355ce9b892a630e61a7224a9175657cad1b7e799269238748ca7bc0ea\"},\"downloads\":-1,\"filename\":\"agentops-0.3.5.tar.gz\",\"has_sig\":false,\"md5_digest\":\"53ef2f5230de09260f4ead09633dde62\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42699,\"upload_time\":\"2024-08-01T19:32:21\",\"upload_time_iso_8601\":\"2024-08-01T19:32:21.259555Z\",\"url\":\"https://files.pythonhosted.org/packages/23/55/08ce5915f1ceb86ea6f7a6e8c8dc025b34981408a1b638316b5140fad525/agentops-0.3.5.tar.gz\",\"yanked\":true,\"yanked_reason\":\"Introduces + FileNotFoundError impacting OpenAI and LiteLLM integrations\"}],\"0.3.6\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"be89412afc864df3715d377cff9fe15deadaccdc0902b0a242f742f286e6d84b\",\"md5\":\"149922f5cd986a8641b6e88c991af0cc\",\"sha256\":\"413f812eb015fb31175a507784afe08123adfa9e227870e315899b059f42b443\"},\"downloads\":-1,\"filename\":\"agentops-0.3.6-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"149922f5cd986a8641b6e88c991af0cc\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39431,\"upload_time\":\"2024-08-02T06:48:19\",\"upload_time_iso_8601\":\"2024-08-02T06:48:19.594149Z\",\"url\":\"https://files.pythonhosted.org/packages/be/89/412afc864df3715d377cff9fe15deadaccdc0902b0a242f742f286e6d84b/agentops-0.3.6-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"c3bf85f1439c3951ef69c81dbd7ef6df8a11df957e8d1180d835d71c11fa5131\",\"md5\":\"b68d3124e365867f891bec4fb211a398\",\"sha256\":\"0941f2486f3a561712ba6f77d560b49e2df55be141f243da0f9dc97ed43e6968\"},\"downloads\":-1,\"filename\":\"agentops-0.3.6.tar.gz\",\"has_sig\":false,\"md5_digest\":\"b68d3124e365867f891bec4fb211a398\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":42933,\"upload_time\":\"2024-08-02T06:48:21\",\"upload_time_iso_8601\":\"2024-08-02T06:48:21.508300Z\",\"url\":\"https://files.pythonhosted.org/packages/c3/bf/85f1439c3951ef69c81dbd7ef6df8a11df957e8d1180d835d71c11fa5131/agentops-0.3.6.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.7\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"a34d05ba61e4fbd976dabe736d74fb2bb14d064ca758f05f084c0dadb6ac5cb1\",\"md5\":\"551df1e89278270e0f5522d41f5c28ae\",\"sha256\":\"7eeec5bef41e9ba397b3d880bcec8cd0818209ab31665c85e8b97615011a23d9\"},\"downloads\":-1,\"filename\":\"agentops-0.3.7-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"551df1e89278270e0f5522d41f5c28ae\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":39816,\"upload_time\":\"2024-08-08T23:21:45\",\"upload_time_iso_8601\":\"2024-08-08T23:21:45.035395Z\",\"url\":\"https://files.pythonhosted.org/packages/a3/4d/05ba61e4fbd976dabe736d74fb2bb14d064ca758f05f084c0dadb6ac5cb1/agentops-0.3.7-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"9f31034c3e062287f4fe9f57f2448e9508617a26bbb8a16b11c77cda9b28e1c0\",\"md5\":\"1c48a797903a25988bae9b72559307ec\",\"sha256\":\"048ee3caa5edf01b98c994e4e3ff90c09d83f820a43a70f07db96032c3386750\"},\"downloads\":-1,\"filename\":\"agentops-0.3.7.tar.gz\",\"has_sig\":false,\"md5_digest\":\"1c48a797903a25988bae9b72559307ec\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":43495,\"upload_time\":\"2024-08-08T23:21:46\",\"upload_time_iso_8601\":\"2024-08-08T23:21:46.798531Z\",\"url\":\"https://files.pythonhosted.org/packages/9f/31/034c3e062287f4fe9f57f2448e9508617a26bbb8a16b11c77cda9b28e1c0/agentops-0.3.7.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"0.3.9\":[{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"660ce931f892e0cedd40d861c3deff4134e1af1d226d6dc9762b32514d6dbc9f\",\"md5\":\"82792de7bccabed058a24d3bd47443db\",\"sha256\":\"582c9ddb30a9bb951b4d3ee2fd0428ba77d4a4367950b9cc6043f45b10bf12d8\"},\"downloads\":-1,\"filename\":\"agentops-0.3.9-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"82792de7bccabed058a24d3bd47443db\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\">=3.7\",\"size\":40235,\"upload_time\":\"2024-08-15T21:21:33\",\"upload_time_iso_8601\":\"2024-08-15T21:21:33.468748Z\",\"url\":\"https://files.pythonhosted.org/packages/66/0c/e931f892e0cedd40d861c3deff4134e1af1d226d6dc9762b32514d6dbc9f/agentops-0.3.9-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":\"\",\"digests\":{\"blake2b_256\":\"e17b68cef3aaf44d423046b7779e9325e4feef5257e6d784a55c9dadf84bd61a\",\"md5\":\"470f3b2663b71eb2f1597903bf8922e7\",\"sha256\":\"7c999edbc64196924acdb06da09ec664a09d9fec8e73ba4e0f89e5f3dafc79e5\"},\"downloads\":-1,\"filename\":\"agentops-0.3.9.tar.gz\",\"has_sig\":false,\"md5_digest\":\"470f3b2663b71eb2f1597903bf8922e7\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\">=3.7\",\"size\":43796,\"upload_time\":\"2024-08-15T21:21:34\",\"upload_time_iso_8601\":\"2024-08-15T21:21:34.591272Z\",\"url\":\"https://files.pythonhosted.org/packages/e1/7b/68cef3aaf44d423046b7779e9325e4feef5257e6d784a55c9dadf84bd61a/agentops-0.3.9.tar.gz\",\"yanked\":false,\"yanked_reason\":null}]},\"urls\":[{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"f521671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b\",\"md5\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"sha256\":\"20948f52e3ffb4ba1d52301c3a82e59490182c4dad22774ad831dce0181eb5c2\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26-py3-none-any.whl\",\"has_sig\":false,\"md5_digest\":\"c3f8fa92ff5a94a37516e774c7f58b9a\",\"packagetype\":\"bdist_wheel\",\"python_version\":\"py3\",\"requires_python\":\"<3.14,>=3.9\",\"size\":72090,\"upload_time\":\"2025-01-24T23:44:06\",\"upload_time_iso_8601\":\"2025-01-24T23:44:06.828461Z\",\"url\":\"https://files.pythonhosted.org/packages/f5/21/671c458951850bd3a445aa09eafd2793aae1104fa68351a5c3976cdf762b/agentops-0.3.26-py3-none-any.whl\",\"yanked\":false,\"yanked_reason\":null},{\"comment_text\":null,\"digests\":{\"blake2b_256\":\"76a1b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d\",\"md5\":\"ba4d0f2411ec72828677b38a395465cc\",\"sha256\":\"bc824bf8727332f59bf803cf84440d13e9e398406222ab29f45909ac1e39f815\"},\"downloads\":-1,\"filename\":\"agentops-0.3.26.tar.gz\",\"has_sig\":false,\"md5_digest\":\"ba4d0f2411ec72828677b38a395465cc\",\"packagetype\":\"sdist\",\"python_version\":\"source\",\"requires_python\":\"<3.14,>=3.9\",\"size\":234235,\"upload_time\":\"2025-01-24T23:44:08\",\"upload_time_iso_8601\":\"2025-01-24T23:44:08.541961Z\",\"url\":\"https://files.pythonhosted.org/packages/76/a1/b03c6348a77798e750bde4eec03b4af620d71b9e4b64ff7dcf0860025a2d/agentops-0.3.26.tar.gz\",\"yanked\":false,\"yanked_reason\":null}],\"vulnerabilities\":[]}\n" + headers: + Accept-Ranges: + - bytes + Connection: + - keep-alive + Content-Length: + - '33610' + Date: + - Fri, 21 Feb 2025 23:21:04 GMT + Permissions-Policy: + - publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + X-Cache: + - MISS, HIT, HIT + X-Cache-Hits: + - 0, 8895, 1 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-Permitted-Cross-Domain-Policies: + - none + X-Served-By: + - cache-iad-kjyo7100032-IAD, cache-iad-kjyo7100044-IAD, cache-sjc1000085-SJC + X-Timer: + - S1740180065.523459,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + access-control-allow-headers: + - Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since + access-control-allow-methods: + - GET + access-control-allow-origin: + - '*' + access-control-expose-headers: + - X-PyPI-Last-Serial + access-control-max-age: + - '86400' + cache-control: + - max-age=900, public + content-encoding: + - gzip + content-security-policy: + - base-uri 'self'; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues + https://gitlab.com/api/ https://*.google-analytics.com https://*.analytics.google.com + https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io + https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ + https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; + form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src + 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com + https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; + script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com + https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' + https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' + 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com + *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' + 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' + 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; + worker-src *.fastly-insights.com + content-type: + - application/json + etag: + - '"5Jjf0qcbSYoU2b9dDGH/Nw"' + referrer-policy: + - origin-when-cross-origin + x-pypi-last-serial: + - '27123795' + status: + code: 200 + message: OK +- request: + body: !!binary | + CvUJCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSzAkKEgoQY3Jld2FpLnRl + bGVtZXRyeRKkBwoQu0KzdCRGEO7eeOMa1vixvxIIurHV3nw68i0qDENyZXcgQ3JlYXRlZDABOYiV + kDmMXCYYQWgLmjmMXCYYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTAyLjBKGgoOcHl0aG9uX3Zl + cnNpb24SCAoGMy4xMi44Si4KCGNyZXdfa2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhj + NzQ2MjhjSjEKB2NyZXdfaWQSJgokNzE2YjA3ZDYtMjIxOS00YjE1LWJhZWYtMTQ3NTU2YTk0ZjI0 + ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 + X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUrRAgoLY3Jl + d19hZ2VudHMSwQIKvgJbeyJrZXkiOiAiYWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIyNDljNGM2NGEi + LCAiaWQiOiAiMTdjZjFjNjctZjhhZC00MzM2LWFjN2UtYzQ1MDBiNWVjMmE2IiwgInJvbGUiOiAi + YmFzZV9hZ2VudCIsICJ2ZXJib3NlPyI6IGZhbHNlLCAibWF4X2l0ZXIiOiAyNSwgIm1heF9ycG0i + OiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8tbWluaSIs + ICJkZWxlZ2F0aW9uX2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBm + YWxzZSwgIm1heF9yZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfV1K/wEKCmNyZXdf + dGFza3MS8AEK7QFbeyJrZXkiOiAiMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDIiLCAi + aWQiOiAiNjQxOTE4NDMtMjkyZS00MDBjLWI5OTktMWJjOTgzMGYxMDY0IiwgImFzeW5jX2V4ZWN1 + dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNlLCAiYWdlbnRfcm9sZSI6ICJiYXNl + X2FnZW50IiwgImFnZW50X2tleSI6ICJhZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIs + ICJ0b29sc19uYW1lcyI6IFtdfV16AhgBhQEAAQAAEo4CChD9Gbohxvo1xEZoAFWQyhIWEghHveai + JhMNsioMVGFzayBDcmVhdGVkMAE5sPeve4xcJhhBaHqxe4xcJhhKLgoIY3Jld19rZXkSIgogZTU4 + MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiQ3MTZiMDdkNi0yMjE5 + LTRiMTUtYmFlZi0xNDc1NTZhOTRmMjRKLgoIdGFza19rZXkSIgogMWIxNWVmMjM5MTViMjc1NWU4 + OWEwZWMzYjI2YTEzZDJKMQoHdGFza19pZBImCiQ2NDE5MTg0My0yOTJlLTQwMGMtYjk5OS0xYmM5 + ODMwZjEwNjR6AhgBhQEAAQAA + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1272' Content-Type: - application/x-protobuf User-Agent: @@ -220,36 +1176,22 @@ interactions: Content-Type: - application/x-protobuf Date: - - Tue, 04 Feb 2025 20:24:47 GMT + - Fri, 21 Feb 2025 23:21:07 GMT status: code: 200 message: OK - request: - body: '{"messages": [{"role": "user", "content": "Assess the quality of the task - completed based on the description, expected output, and actual results.\n\nTask - Description:\nJust say hi\n\nExpected Output:\nhi\n\nActual Output:\nhi\n\nPlease - provide:\n- Bullet points suggestions to improve future similar tasks\n- A score - from 0 to 10 evaluating on completion, quality, and overall performance- Entities - extracted from the task output, if any, their type, description, and relationships"}], - "model": "gpt-4o-mini", "tool_choice": {"type": "function", "function": {"name": - "TaskEvaluation"}}, "tools": [{"type": "function", "function": {"name": "TaskEvaluation", - "description": "Correctly extracted `TaskEvaluation` with all the required parameters - with correct types", "parameters": {"$defs": {"Entity": {"properties": {"name": - {"description": "The name of the entity.", "title": "Name", "type": "string"}, - "type": {"description": "The type of the entity.", "title": "Type", "type": - "string"}, "description": {"description": "Description of the entity.", "title": - "Description", "type": "string"}, "relationships": {"description": "Relationships - of the entity.", "items": {"type": "string"}, "title": "Relationships", "type": - "array"}}, "required": ["name", "type", "description", "relationships"], "title": - "Entity", "type": "object"}}, "properties": {"suggestions": {"description": - "Suggestions to improve future similar tasks.", "items": {"type": "string"}, - "title": "Suggestions", "type": "array"}, "quality": {"description": "A score - from 0 to 10 evaluating on completion, quality, and overall performance, all - taking into account the task description, expected output, and the result of - the task.", "title": "Quality", "type": "number"}, "entities": {"description": - "Entities extracted from the task output.", "items": {"$ref": "#/$defs/Entity"}, - "title": "Entities", "type": "array"}}, "required": ["entities", "quality", - "suggestions"], "type": "object"}}}]}' + body: '{"messages": [{"role": "system", "content": "You are base_agent. You are + a helpful assistant that just says hi\nYour personal goal is: Just say hi\nTo + give my best complete final answer to the task respond using the exact following + format:\n\nThought: I now can give a great answer\nFinal Answer: Your final + answer must be the great and the most complete as possible, it must be outcome + described.\n\nI MUST use these formats, my job depends on it!"}, {"role": "user", + "content": "\nCurrent Task: Just say hi\n\nThis is the expected criteria for + your final answer: hi\nyou MUST return the actual complete content as the final + answer, not a summary.\n\nBegin! This is VERY important to you, use the tools + available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' headers: accept: - application/json @@ -258,12 +1200,9 @@ interactions: connection: - keep-alive content-length: - - '1962' + - '838' content-type: - application/json - cookie: - - __cf_bm=nedOdWE1YnKQYt1kSbrcA.zhwa3bZDzmZqTOjZYER0c-1738700521-1.0.1.1-xQk9iXOvqvyXNhkIOgc8Ws2WYcT1mJFkDCvCC8xA5joFD8QfNrBIAr_Qs6sIxt2EzXyeFwBA6gA8ZgWApCHx0Q; - _cfuvid=Cl48aI8.jSRja0Pqr6Jrh3mAnigd4rDn6lhGicyjMPY-1738698987673-0.0.1.1-604800000 host: - api.openai.com user-agent: @@ -289,29 +1228,20 @@ interactions: method: POST uri: https://api.openai.com/v1/chat/completions response: - content: "{\n \"id\": \"chatcmpl-AxJlLVC3gCB9gRI0ZSkoPCZY7EwpQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1738700683,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + content: "{\n \"id\": \"chatcmpl-B3WcOTAw4n8RGgETMgyOwuM7LeDwl\",\n \"object\": + \"chat.completion\",\n \"created\": 1740180068,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_mgwImOITW8lkjzAyf9Pp76cL\",\n \"type\": - \"function\",\n \"function\": {\n \"name\": \"TaskEvaluation\",\n - \ \"arguments\": \"{\\\"suggestions\\\":[\\\"Provide context or - additional information to make tasks more engaging.\\\",\\\"Encourage variations - in responses to make the interaction more dynamic.\\\"],\\\"quality\\\":10,\\\"entities\\\":[{\\\"name\\\":\\\"hi\\\",\\\"type\\\":\\\"greeting\\\",\\\"description\\\":\\\"A - common word used to initiate a conversation or express friendliness.\\\",\\\"relationships\\\":[\\\"initiates - conversation\\\",\\\"expresses friendliness\\\"]}]}\"\n }\n }\n - \ ],\n \"refusal\": null\n },\n \"logprobs\": null,\n + \"assistant\",\n \"content\": \"I now can give a great answer \\nFinal + Answer: hi\",\n \"refusal\": null\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 273,\n \"completion_tokens\": 71,\n \"total_tokens\": 344,\n \"prompt_tokens_details\": + 161,\n \"completion_tokens\": 12,\n \"total_tokens\": 173,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_bd83329f63\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_7fcd609668\"\n}\n" headers: - CF-Cache-Status: - - DYNAMIC CF-RAY: - - 90cd62c4ba41fa6a-SJC + - 915a787b998d7ae0-SJC Connection: - keep-alive Content-Encoding: @@ -319,9 +1249,15 @@ interactions: Content-Type: - application/json Date: - - Tue, 04 Feb 2025 20:24:50 GMT + - Fri, 21 Feb 2025 23:21:09 GMT Server: - cloudflare + Set-Cookie: + - __cf_bm=0H21Wn0CeGjOmoBvLGq5vA5PWqB4cl6amZ0kGCbr1GQ-1740180069-1.0.1.1-EyrBFAql8hm1Qvm_pxKvb44bkrYkLBzoqxYSaawboicVQfkfquQPEhqVhNXSh15L8Aiqn.WLHKOnSii45FMlXA; + path=/; expires=Fri, 21-Feb-25 23:51:09 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=pgWR9g.y6i.3_EHHkfdBfvv5isYFU_joRq3kXvX2IE4-1740180069173-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Transfer-Encoding: - chunked X-Content-Type-Options: @@ -330,10 +1266,12 @@ interactions: - X-Request-ID alt-svc: - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC openai-organization: - crewai-iuxna1 openai-processing-ms: - - '7347' + - '470' openai-version: - '2020-10-01' strict-transport-security: @@ -345,13 +1283,257 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999876' + - '149999808' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_aec28dd3fe998d628754e8429623bf9e + - req_fae46f9af88047f2e43f54ce7f6cf3af http_version: HTTP/1.1 status_code: 200 +- request: + body: '{"events": [{"id": "a5f1e046-b0e5-41d1-b5bc-3715c2c7874f", "event_type": + "llms", "init_timestamp": "2025-02-21T23:21:04.468272+00:00", "end_timestamp": + "2025-02-21T23:21:09.342708+00:00", "params": {"model": "gpt-4o-mini", "messages": + [{"role": "system", "content": "You are base_agent. You are a helpful assistant + that just says hi\nYour personal goal is: Just say hi\nTo give my best complete + final answer to the task respond using the exact following format:\n\nThought: + I now can give a great answer\nFinal Answer: Your final answer must be the great + and the most complete as possible, it must be outcome described.\n\nI MUST use + these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent + Task: Just say hi\n\nThis is the expected criteria for your final answer: hi\nyou + MUST return the actual complete content as the final answer, not a summary.\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "stop": ["\nObservation:"], + "stream": false}, "returns": "", "agent_id": null, "session_id": "73534e48-dd5a-4ef4-a702-fbbba9d00f27", + "thread_id": null, "prompt": [{"role": "system", "content": "You are base_agent. + You are a helpful assistant that just says hi\nYour personal goal is: Just say + hi\nTo give my best complete final answer to the task respond using the exact + following format:\n\nThought: I now can give a great answer\nFinal Answer: Your + final answer must be the great and the most complete as possible, it must be + outcome described.\n\nI MUST use these formats, my job depends on it!"}, {"role": + "user", "content": "\nCurrent Task: Just say hi\n\nThis is the expected criteria + for your final answer: hi\nyou MUST return the actual complete content as the + final answer, not a summary.\n\nBegin! This is VERY important to you, use the + tools available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "prompt_tokens": 161, "completion": {"content": "I now can give a great answer \nFinal + Answer: hi", "role": "assistant", "tool_calls": null, "function_call": null, + "refusal": null}, "completion_tokens": 12, "cost": null, "model": "gpt-4o-mini-2024-07-18"}]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '2203' + Content-Type: + - application/json; charset=UTF-8 + Keep-Alive: + - timeout=10, max=1000 + User-Agent: + - python-requests/2.32.3 + X-Agentops-Api-Key: + - e6568f10-56cf-4e37-9415-86e979a7f309 + method: POST + uri: https://api.agentops.ai/v2/create_events + response: + body: + string: '"Success"' + headers: + Content-Length: + - '9' + Content-Type: + - application/json + Date: + - Fri, 21 Feb 2025 23:21:09 GMT + Server: + - railway-edge + X-Railway-Request-Id: + - bIWFwVQkTF6rf7HxjcZWsA_603909319 + status: + code: 200 + message: OK +- request: + body: '{"session": {"end_timestamp": "2025-02-21T23:21:09.676222+00:00", "end_state": + "Success", "session_id": "73534e48-dd5a-4ef4-a702-fbbba9d00f27", "init_timestamp": + "2025-02-21T23:21:03.681822+00:00", "tags": ["crewai"], "video": null, "end_state_reason": + "Finished Execution", "host_env": {"SDK": {"AgentOps SDK Version": "0.3.26", + "Python Version": "3.12.8", "System Packages": {"pluggy": "1.5.0", "importlib.resources": + "6.4.5", "importlib.metadata": "8.4.0", "iniconfig": "2.0.0", "pytest": "8.3.3", + "pytest_asyncio": "0.24.0", "wrapt": "1.16.0", "urllib3": "2.2.3", "charset_normalizer": + "3.4.0", "idna": "3.10", "certifi": "2024.8.30", "requests": "2.32.3", "multidict": + "6.1.0", "propcache": "0.2.0", "yarl": "1.18.3", "aiohappyeyeballs": "2.4.3", + "frozenlist": "1.5.0", "aiosignal": "1.3.1", "aiohttp": "3.11.11", "sniffio": + "1.3.1", "anyio": "4.6.2.post1", "h11": "0.14.0", "h2": "4.2.0", "hpack": "4.1.0", + "hyperframe": "6.1.0", "httpcore": "1.0.6", "click": "8.1.8", "pygments": "2.18.0", + "rich": "13.9.3", "httpx": "0.27.0", "pytest_vcr": "1.0.2", "pytest_subprocess": + "1.5.2", "typing_extensions": "4.12.2", "pydantic": "2.10.4", "annotated_types": + "0.7.0", "pydantic_core": "2.27.2", "json_repair": "0.30.0", "overrides": "7.7.0", + "numpy": "1.26.4", "tenacity": "9.0.0", "onnxruntime": "1.19.2", "tokenizers": + "0.20.1", "tqdm": "4.66.5", "deprecated": "1.2.14", "zipp": "3.20.2", "importlib_metadata": + "8.4.0", "opentelemetry.sdk": "1.27.0", "psutil": "6.0.0", "opentelemetry.exporter.otlp.proto.grpc": + "1.27.0", "opentelemetry.exporter.otlp.proto.common": "1.27.0", "opentelemetry.proto": + "1.27.0", "chromadb": "0.5.23", "crewai.tools": "0.33.0", "appdirs": "1.4.4", + "blinker": "1.9.0", "opentelemetry.exporter.otlp.proto.http": "1.27.0", "termcolor": + "2.4.0", "packaging": "23.2", "langchain_core": "0.3.36", "langsmith": "0.1.147", + "requests_toolbelt": "1.0.0", "orjson": "3.10.10", "jsonpointer": "3.0.0", "jsonpatch": + "1.33", "agentops": "0.3.26", "distro": "1.9.0", "jiter": "0.5.0", "openai": + "1.61.0", "regex": "2024.9.11", "tiktoken": "0.7.0", "markupsafe": "3.0.2", + "jinja2": "3.1.4", "litellm": "1.60.2", "json5": "0.10.0", "jsonpickle": "3.3.0", + "networkx": "3.4.2", "traitlets": "5.14.3", "executing": "2.1.0", "six": "1.16.0", + "asttokens": "2.4.1", "pure_eval": "0.2.3", "stack_data": "0.6.3", "decorator": + "5.1.1", "wcwidth": "0.2.13", "prompt_toolkit": "3.0.48", "parso": "0.8.4", + "colorama": "0.4.6", "jedi": "0.19.1", "IPython": "8.28.0", "pyvis": "0.3.2", + "crewai": "0.102.0"}}, "OS": {"Hostname": "Lorenzes-MacBook-Pro.local", "OS": + "Darwin", "OS Version": "Darwin Kernel Version 24.0.0: Mon Aug 12 20:51:54 PDT + 2024; root:xnu-11215.1.10~2/RELEASE_ARM64_T6000", "OS Release": "24.0.0"}, "CPU": + {"Physical cores": 10, "Total cores": 10, "CPU Usage": "21.8%"}, "RAM": {"Total": + "32.00 GB", "Available": "9.89 GB", "Used": "12.38 GB", "Percentage": "69.1%"}, + "Disk": {"/dev/disk3s1s1": {"Mountpoint": "/", "Total": "926.35 GB", "Used": + "9.94 GB", "Free": "2.64 GB", "Percentage": "79.0%"}, "/dev/disk3s6": {"Mountpoint": + "/System/Volumes/VM", "Total": "926.35 GB", "Used": "1.00 GB", "Free": "2.64 + GB", "Percentage": "27.5%"}, "/dev/disk3s2": {"Mountpoint": "/System/Volumes/Preboot", + "Total": "926.35 GB", "Used": "6.75 GB", "Free": "2.64 GB", "Percentage": "71.9%"}, + "/dev/disk3s4": {"Mountpoint": "/System/Volumes/Update", "Total": "926.35 GB", + "Used": "0.00 GB", "Free": "2.64 GB", "Percentage": "0.1%"}, "/dev/disk1s2": + {"Mountpoint": "/System/Volumes/xarts", "Total": "0.49 GB", "Used": "0.01 GB", + "Free": "0.47 GB", "Percentage": "1.2%"}, "/dev/disk1s1": {"Mountpoint": "/System/Volumes/iSCPreboot", + "Total": "0.49 GB", "Used": "0.01 GB", "Free": "0.47 GB", "Percentage": "1.1%"}, + "/dev/disk1s3": {"Mountpoint": "/System/Volumes/Hardware", "Total": "0.49 GB", + "Used": "0.00 GB", "Free": "0.47 GB", "Percentage": "0.8%"}, "/dev/disk3s5": + {"Mountpoint": "/System/Volumes/Data", "Total": "926.35 GB", "Used": "904.02 + GB", "Free": "2.64 GB", "Percentage": "99.7%"}, "/dev/disk5s1": {"Mountpoint": + "/Library/Developer/CoreSimulator/Volumes/iOS_21A342", "Total": "15.95 GB", + "Used": "15.45 GB", "Free": "0.46 GB", "Percentage": "97.1%"}}, "Installed Packages": + {"Installed Packages": {"flatbuffers": "24.3.25", "google-api-core": "2.24.1", + "shellingham": "1.5.4", "mkdocs": "1.6.1", "mergedeep": "1.3.4", "opencv-python-headless": + "4.11.0.86", "pyright": "1.1.393", "shapely": "2.0.7", "tomli": "2.0.2", "ruff": + "0.8.2", "coloredlogs": "15.0.1", "Rtree": "1.3.0", "pytest-asyncio": "0.24.0", + "humanfriendly": "10.0", "executing": "2.1.0", "uv": "0.4.26", "pexpect": "4.9.0", + "pandas": "2.2.3", "pyyaml_env_tag": "0.1", "lazy_loader": "0.4", "PyJWT": "2.9.0", + "decorator": "5.1.1", "filelock": "3.16.1", "idna": "3.10", "embedchain": "0.1.126", + "traitlets": "5.14.3", "ipython": "8.28.0", "tomli_w": "1.1.0", "opentelemetry-exporter-otlp-proto-http": + "1.27.0", "pyasn1_modules": "0.4.1", "Markdown": "3.7", "distlib": "0.3.9", + "pyvis": "0.3.2", "termcolor": "2.4.0", "watchdog": "5.0.3", "tifffile": "2025.2.18", + "multidict": "6.1.0", "ptyprocess": "0.7.0", "langchain": "0.3.19", "aiosignal": + "1.3.1", "cssselect2": "0.7.0", "griffe": "1.5.1", "grpc-google-iam-v1": "0.14.0", + "zipp": "3.20.2", "mkdocs-get-deps": "0.2.0", "importlib_resources": "6.4.5", + "litellm": "1.60.2", "google-auth": "2.35.0", "Mako": "1.3.9", "mkdocs-material-extensions": + "1.3.1", "latex2mathml": "3.77.0", "urllib3": "2.2.3", "overrides": "7.7.0", + "parso": "0.8.4", "pytest": "8.3.3", "webencodings": "0.5.1", "colorama": "0.4.6", + "orjson": "3.10.10", "langchain-community": "0.3.17", "lancedb": "0.18.0", "langchain-openai": + "0.2.14", "google-cloud-resource-manager": "1.14.0", "rich": "13.9.3", "schema": + "0.7.7", "propcache": "0.2.0", "python-docx": "1.1.2", "defusedxml": "0.7.1", + "referencing": "0.35.1", "paginate": "0.5.7", "semchunk": "2.2.2", "requests": + "2.32.3", "frozenlist": "1.5.0", "multiprocess": "0.70.17", "openpyxl": "3.1.5", + "Jinja2": "3.1.4", "httpx-sse": "0.4.0", "cryptography": "43.0.3", "transformers": + "4.49.0", "docling": "2.24.0", "websockets": "13.1", "chromadb": "0.5.23", "blinker": + "1.9.0", "soupsieve": "2.6", "ninja": "1.11.1.3", "tqdm": "4.66.5", "qdrant-client": + "1.13.2", "markdown-it-py": "3.0.0", "sympy": "1.13.3", "six": "1.16.0", "mypy-extensions": + "1.0.0", "posthog": "3.7.0", "h11": "0.14.0", "googleapis-common-protos": "1.65.0", + "fsspec": "2024.10.0", "networkx": "3.4.2", "grpcio": "1.67.0", "python-pptx": + "1.0.2", "marko": "2.1.2", "et_xmlfile": "2.0.0", "typing-inspect": "0.9.0", + "protobuf": "4.25.5", "ghp-import": "2.1.0", "grpcio-status": "1.70.0", "auth0-python": + "4.7.2", "pymdown-extensions": "10.11.2", "iniconfig": "2.0.0", "beautifulsoup4": + "4.13.3", "SQLAlchemy": "2.0.38", "crewai-tools": "0.33.0", "google-resumable-media": + "2.7.2", "grpcio-tools": "1.70.0", "uvicorn": "0.32.0", "chroma-hnswlib": "0.7.6", + "jsonpatch": "1.33", "click": "8.1.8", "jsonpointer": "3.0.0", "lxml": "5.3.1", + "numpy": "1.26.4", "docstring_parser": "0.16", "attrs": "24.2.0", "mkdocstrings-python": + "1.12.2", "crewai": "0.102.0", "cairocffi": "1.7.1", "packaging": "23.2", "kubernetes": + "31.0.0", "appdirs": "1.4.4", "certifi": "2024.8.30", "h2": "4.2.0", "starlette": + "0.41.0", "tenacity": "9.0.0", "cffi": "1.17.1", "pytest-vcr": "1.0.2", "aiohttp": + "3.11.11", "jsonschema": "4.23.0", "google-crc32c": "1.6.0", "pdfminer.six": + "20231228", "mypy": "1.13.0", "opentelemetry-exporter-otlp-proto-common": "1.27.0", + "pyasn1": "0.6.1", "stack-data": "0.6.3", "asttokens": "2.4.1", "cachetools": + "5.5.0", "portalocker": "2.10.1", "asgiref": "3.8.1", "pypdfium2": "4.30.0", + "typer": "0.12.5", "dataclasses-json": "0.6.7", "pathspec": "0.12.1", "oauthlib": + "3.2.2", "identify": "2.6.1", "psutil": "6.0.0", "docling-core": "2.20.0", "mpire": + "2.10.2", "pylance": "0.22.0", "jedi": "0.19.1", "alembic": "1.14.1", "python-dotenv": + "1.0.1", "mkdocs-material": "9.5.42", "aiohappyeyeballs": "2.4.3", "opentelemetry-instrumentation": + "0.48b0", "loguru": "0.7.3", "docling-parse": "3.4.0", "langchain-text-splitters": + "0.3.6", "watchfiles": "0.24.0", "bcrypt": "4.2.0", "sniffio": "1.3.1", "nodeenv": + "1.9.1", "docling-ibm-models": "3.4.0", "jsonpickle": "3.3.0", "safetensors": + "0.5.2", "google-cloud-storage": "2.19.0", "jsonschema-specifications": "2024.10.1", + "mdurl": "0.1.2", "fastavro": "1.10.0", "cfgv": "3.4.0", "python-dateutil": + "2.9.0.post0", "mpmath": "1.3.0", "json_repair": "0.30.0", "build": "1.2.2.post1", + "types-requests": "2.32.0.20241016", "pytz": "2024.2", "huggingface-hub": "0.26.1", + "yarl": "1.18.3", "jsonref": "1.1.0", "rsa": "4.9", "wcwidth": "0.2.13", "google-cloud-aiplatform": + "1.81.0", "torch": "2.6.0", "langchain-cohere": "0.3.5", "langchain-experimental": + "0.3.4", "scipy": "1.15.2", "json5": "0.10.0", "opentelemetry-sdk": "1.27.0", + "opentelemetry-util-http": "0.48b0", "tzdata": "2025.1", "babel": "2.16.0", + "langchain-core": "0.3.36", "virtualenv": "20.27.0", "importlib_metadata": "8.4.0", + "easyocr": "1.7.2", "pydantic_core": "2.27.2", "cohere": "5.13.12", "prompt_toolkit": + "3.0.48", "pycparser": "2.22", "proto-plus": "1.26.0", "pydantic": "2.10.4", + "pluggy": "1.5.0", "torchvision": "0.21.0", "pypdf": "5.3.0", "py_rust_stemmers": + "0.1.3", "tiktoken": "0.7.0", "opentelemetry-instrumentation-fastapi": "0.48b0", + "agentops": "0.3.26", "setuptools": "75.2.0", "google-cloud-core": "2.4.1", + "imageio": "2.37.0", "pure_eval": "0.2.3", "pdfplumber": "0.11.4", "deprecation": + "2.1.0", "distro": "1.9.0", "fastembed": "0.5.1", "pillow": "10.4.0", "pydantic-settings": + "2.7.1", "requests-toolbelt": "1.0.0", "mem0ai": "0.1.52", "docker": "7.1.0", + "httptools": "0.6.4", "mkdocs-autorefs": "1.2.0", "httpx": "0.27.0", "typing_extensions": + "4.12.2", "jiter": "0.5.0", "PyYAML": "6.0.2", "matplotlib-inline": "0.1.7", + "weaviate-client": "3.26.7", "tokenizers": "0.20.1", "opentelemetry-exporter-otlp-proto-grpc": + "1.27.0", "rpds-py": "0.20.0", "monotonic": "1.6", "charset-normalizer": "3.4.0", + "backoff": "2.2.1", "pytube": "15.0.0", "Deprecated": "1.2.14", "regex": "2024.9.11", + "onnxruntime": "1.19.2", "hpack": "4.1.0", "tinycss2": "1.3.0", "instructor": + "1.6.3", "filetype": "1.2.0", "opentelemetry-instrumentation-asgi": "0.48b0", + "Authlib": "1.4.1", "google-cloud-bigquery": "3.29.0", "pyproject_hooks": "1.2.0", + "opentelemetry-api": "1.27.0", "pyclipper": "1.3.0.post6", "vcrpy": "5.1.0", + "pre_commit": "4.0.1", "uvloop": "0.21.0", "platformdirs": "4.3.6", "openai": + "1.61.0", "marshmallow": "3.26.1", "annotated-types": "0.7.0", "mkdocstrings": + "0.26.2", "opentelemetry-proto": "1.27.0", "anyio": "4.6.2.post1", "opentelemetry-semantic-conventions": + "0.48b0", "grpcio-health-checking": "1.67.0", "PyPika": "0.48.9", "gptcache": + "0.1.44", "pysbd": "0.3.4", "scikit-image": "0.25.2", "httpcore": "1.0.6", "Pygments": + "2.18.0", "XlsxWriter": "3.2.2", "hyperframe": "6.1.0", "langsmith": "0.1.147", + "requests-oauthlib": "2.0.0", "durationpy": "0.9", "validators": "0.34.0", "CairoSVG": + "2.7.1", "fastapi": "0.115.3", "jsonlines": "3.1.0", "tabulate": "0.9.0", "pyarrow": + "19.0.0", "python-bidi": "0.6.6", "dill": "0.3.9", "pytest-subprocess": "1.5.2", + "wrapt": "1.16.0", "mmh3": "4.1.0", "websocket-client": "1.8.0", "MarkupSafe": + "3.0.2"}}, "Project Working Directory": {"Project Working Directory": "/Users/lorenzejay/Documents/Uplift + Digital Solutions/clients/crewai-org/crewAI"}, "Virtual Environment": {"Virtual + Environment": "/Users/lorenzejay/Documents/Uplift Digital Solutions/clients/crewai-org/crewAI/.venv"}}, + "config": "", "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uX2lkIjoiNzM1MzRlNDgtZGQ1YS00ZWY0LWE3MDItZmJiYmE5ZDAwZjI3IiwiZXhwIjoxNzQwMjY2NDY0LjE3MDgwN30.gkiHROHd6xvHJ5IK83zGZQqIezGFCMsKbmGUer3QdrM", + "_lock": "", "_end_session_lock": "", "token_cost": "", "_session_url": "", + "event_counts": {"llms": 1, "tools": 0, "actions": 0, "errors": 0, "apis": 0}, + "is_running": false, "_tracer_provider": "", "_otel_tracer": "", "_otel_exporter": + ""}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '11938' + Content-Type: + - application/json; charset=UTF-8 + Keep-Alive: + - timeout=10, max=1000 + User-Agent: + - python-requests/2.32.3 + X-Agentops-Api-Key: + - e6568f10-56cf-4e37-9415-86e979a7f309 + method: POST + uri: https://api.agentops.ai/v2/update_session + response: + body: + string: '{"session_url":"https://app.agentops.ai/drilldown?session_id=73534e48-dd5a-4ef4-a702-fbbba9d00f27","status":"success","token_cost":3.135e-05}' + headers: + Content-Length: + - '141' + Content-Type: + - application/json + Date: + - Fri, 21 Feb 2025 23:21:09 GMT + Server: + - railway-edge + X-Railway-Request-Id: + - IPxx0Dd2SjClZseCNNXQkQ_1861343781 + status: + code: 200 + message: OK version: 1 diff --git a/tests/utilities/cassettes/test_crew_emits_test_kickoff_type_event.yaml b/tests/utilities/cassettes/test_crew_emits_test_kickoff_type_event.yaml new file mode 100644 index 000000000..5905cf66c --- /dev/null +++ b/tests/utilities/cassettes/test_crew_emits_test_kickoff_type_event.yaml @@ -0,0 +1,236 @@ +interactions: +- request: + body: '{"messages": [{"role": "system", "content": "You are base_agent. You are + a helpful assistant that just says hi\nYour personal goal is: Just say hi\nTo + give my best complete final answer to the task respond using the exact following + format:\n\nThought: I now can give a great answer\nFinal Answer: Your final + answer must be the great and the most complete as possible, it must be outcome + described.\n\nI MUST use these formats, my job depends on it!"}, {"role": "user", + "content": "\nCurrent Task: Just say hi\n\nThis is the expected criteria for + your final answer: hi\nyou MUST return the actual complete content as the final + answer, not a summary.\n\nBegin! This is VERY important to you, use the tools + available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '838' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.61.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.61.0 + x-stainless-raw-response: + - 'true' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.8 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + content: "{\n \"id\": \"chatcmpl-B4VsaBZ4ec4b0ab4pkqWgyxTFVVfc\",\n \"object\": + \"chat.completion\",\n \"created\": 1740415556,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"I now can give a great answer \\nFinal + Answer: hi\",\n \"refusal\": null\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 161,\n \"completion_tokens\": 12,\n \"total_tokens\": 173,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_7fcd609668\"\n}\n" + headers: + CF-RAY: + - 9170edc5da6f230e-SJC + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Mon, 24 Feb 2025 16:45:57 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=lvRw4Nyef7N35to64fj2_kHDfbZp0KSFbwgF5chYMRI-1740415557-1.0.1.1-o5BaN1FpBwv5Wq6zIlv0rCB28lk5hVI9wZQWU3pig1jgyAKDkYzTwZ0MlSR6v6TPIX9RfepjrO3.Gk3FEmcVRw; + path=/; expires=Mon, 24-Feb-25 17:15:57 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=ySaVoTQvAcQyH5QoJQJDj75e5j8HwGFPOlFMAWEvXJk-1740415557302-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '721' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999808' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_fc3b3bcd4382cddaa3c04ce7003e4857 + http_version: HTTP/1.1 + status_code: 200 +- request: + body: '{"messages": [{"role": "system", "content": "You are Task Execution Evaluator. + Evaluator agent for crew evaluation with precise capabilities to evaluate the + performance of the agents in the crew based on the tasks they have performed\nYour + personal goal is: Your goal is to evaluate the performance of the agents in + the crew based on the tasks they have performed using score from 1 to 10 evaluating + on completion, quality, and overall performance.\nTo give my best complete final + answer to the task respond using the exact following format:\n\nThought: I now + can give a great answer\nFinal Answer: Your final answer must be the great and + the most complete as possible, it must be outcome described.\n\nI MUST use these + formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent Task: + Based on the task description and the expected output, compare and evaluate + the performance of the agents in the crew based on the Task Output they have + performed using score from 1 to 10 evaluating on completion, quality, and overall + performance.task_description: Just say hi task_expected_output: hi agent: base_agent + agent_goal: Just say hi Task Output: hi\n\nThis is the expected criteria for + your final answer: Evaluation Score from 1 to 10 based on the performance of + the agents on the tasks\nyou MUST return the actual complete content as the + final answer, not a summary.\nEnsure your final answer contains only the content + in the following format: {\n \"quality\": float\n}\n\nEnsure the final output + does not include any code block markers like ```json or ```python.\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o-mini", "stop": + ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '1765' + content-type: + - application/json + cookie: + - __cf_bm=lvRw4Nyef7N35to64fj2_kHDfbZp0KSFbwgF5chYMRI-1740415557-1.0.1.1-o5BaN1FpBwv5Wq6zIlv0rCB28lk5hVI9wZQWU3pig1jgyAKDkYzTwZ0MlSR6v6TPIX9RfepjrO3.Gk3FEmcVRw; + _cfuvid=ySaVoTQvAcQyH5QoJQJDj75e5j8HwGFPOlFMAWEvXJk-1740415557302-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.61.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.61.0 + x-stainless-raw-response: + - 'true' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.8 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + content: "{\n \"id\": \"chatcmpl-B4Vsbd9AsRaJ2exDtWnHAwC8rIjfi\",\n \"object\": + \"chat.completion\",\n \"created\": 1740415557,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"I now can give a great answer \\nFinal + Answer: { \\n \\\"quality\\\": 10 \\n} \",\n \"refusal\": null\n + \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n + \ ],\n \"usage\": {\n \"prompt_tokens\": 338,\n \"completion_tokens\": + 22,\n \"total_tokens\": 360,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n + \ \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_7fcd609668\"\n}\n" + headers: + CF-RAY: + - 9170edd15bb5230e-SJC + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Mon, 24 Feb 2025 16:45:58 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '860' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999578' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_fad452c2d10b5fc95809130912b08837 + http_version: HTTP/1.1 + status_code: 200 +version: 1 diff --git a/tests/utilities/cassettes/test_llm_emits_call_failed_event.yaml b/tests/utilities/cassettes/test_llm_emits_call_failed_event.yaml new file mode 100644 index 000000000..2222ad933 --- /dev/null +++ b/tests/utilities/cassettes/test_llm_emits_call_failed_event.yaml @@ -0,0 +1,103 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": "Hello, how are you?"}], "model": + "gpt-4o-mini", "stop": []}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '102' + content-type: + - application/json + cookie: + - _cfuvid=IY8ppO70AMHr2skDSUsGh71zqHHdCQCZ3OvkPi26NBc-1740424913267-0.0.1.1-604800000; + __cf_bm=fU6K5KZoDmgcEuF8_yWAYKUO5fKHh6q5.wDPnna393g-1740424913-1.0.1.1-2iOaq3JVGWs439V0HxJee0IC9HdJm7dPkeJorD.AGw0YwkngRPM8rrTzn_7ht1BkbOauEezj.wPKcBz18gIYUg + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.61.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.61.0 + x-stainless-raw-response: + - 'true' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.8 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + content: "{\n \"id\": \"chatcmpl-B4YLA2SrC2rwdVQ3U87G5a0P5lsLw\",\n \"object\": + \"chat.completion\",\n \"created\": 1740425016,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"Hello! I'm just a computer program, so + I don't have feelings, but I'm here and ready to help you. How can I assist + you today?\",\n \"refusal\": null\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 13,\n \"completion_tokens\": 30,\n \"total_tokens\": 43,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_709714d124\"\n}\n" + headers: + CF-RAY: + - 9171d4c0ed44236e-SJC + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Mon, 24 Feb 2025 19:23:38 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '1954' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999978' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_ea2703502b8827e4297cd2a7bae9d9c8 + http_version: HTTP/1.1 + status_code: 200 +version: 1 diff --git a/tests/utilities/cassettes/test_llm_emits_call_started_event.yaml b/tests/utilities/cassettes/test_llm_emits_call_started_event.yaml new file mode 100644 index 000000000..0120aa1b3 --- /dev/null +++ b/tests/utilities/cassettes/test_llm_emits_call_started_event.yaml @@ -0,0 +1,108 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": "Hello, how are you?"}], "model": + "gpt-4o-mini", "stop": []}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '102' + content-type: + - application/json + cookie: + - _cfuvid=GefCcEtb_Gem93E4a9Hvt3Xyof1YQZVJAXBb9I6pEUs-1739398417375-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.61.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.61.0 + x-stainless-raw-response: + - 'true' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.8 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + content: "{\n \"id\": \"chatcmpl-B4YJU8IWKGyBQtAyPDRd3SFI2flYR\",\n \"object\": + \"chat.completion\",\n \"created\": 1740424912,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"Hello! I'm just a computer program, so + I don't have feelings, but I'm here and ready to help you. How can I assist + you today?\",\n \"refusal\": null\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 13,\n \"completion_tokens\": 30,\n \"total_tokens\": 43,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_7fcd609668\"\n}\n" + headers: + CF-RAY: + - 9171d230d8ed7ae0-SJC + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Mon, 24 Feb 2025 19:21:53 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=fU6K5KZoDmgcEuF8_yWAYKUO5fKHh6q5.wDPnna393g-1740424913-1.0.1.1-2iOaq3JVGWs439V0HxJee0IC9HdJm7dPkeJorD.AGw0YwkngRPM8rrTzn_7ht1BkbOauEezj.wPKcBz18gIYUg; + path=/; expires=Mon, 24-Feb-25 19:51:53 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=IY8ppO70AMHr2skDSUsGh71zqHHdCQCZ3OvkPi26NBc-1740424913267-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '993' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999978' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_d9c4d49185e97b1797061efc1e55d811 + http_version: HTTP/1.1 + status_code: 200 +version: 1 diff --git a/tests/utilities/test_events.py b/tests/utilities/test_events.py index 68bda7bec..f46b635d3 100644 --- a/tests/utilities/test_events.py +++ b/tests/utilities/test_events.py @@ -1,6 +1,5 @@ -import json from datetime import datetime -from unittest.mock import MagicMock, patch +from unittest.mock import Mock, patch import pytest from pydantic import Field @@ -9,9 +8,9 @@ from crewai.agent import Agent from crewai.agents.crew_agent_executor import CrewAgentExecutor from crewai.crew import Crew from crewai.flow.flow import Flow, listen, start +from crewai.llm import LLM from crewai.task import Task from crewai.tools.base_tool import BaseTool -from crewai.tools.tool_usage import ToolUsage from crewai.utilities.events.agent_events import ( AgentExecutionCompletedEvent, AgentExecutionErrorEvent, @@ -21,8 +20,11 @@ from crewai.utilities.events.crew_events import ( CrewKickoffCompletedEvent, CrewKickoffFailedEvent, CrewKickoffStartedEvent, + CrewTestCompletedEvent, + CrewTestStartedEvent, ) from crewai.utilities.events.crewai_event_bus import crewai_event_bus +from crewai.utilities.events.event_listener import EventListener from crewai.utilities.events.event_types import ToolUsageFinishedEvent from crewai.utilities.events.flow_events import ( FlowCreatedEvent, @@ -31,6 +33,12 @@ from crewai.utilities.events.flow_events import ( MethodExecutionFailedEvent, MethodExecutionStartedEvent, ) +from crewai.utilities.events.llm_events import ( + LLMCallCompletedEvent, + LLMCallFailedEvent, + LLMCallStartedEvent, + LLMCallType, +) from crewai.utilities.events.task_events import ( TaskCompletedEvent, TaskFailedEvent, @@ -52,26 +60,35 @@ base_task = Task( expected_output="hi", agent=base_agent, ) +event_listener = EventListener() @pytest.mark.vcr(filter_headers=["authorization"]) def test_crew_emits_start_kickoff_event(): received_events = [] + mock_span = Mock() - with crewai_event_bus.scoped_handlers(): - - @crewai_event_bus.on(CrewKickoffStartedEvent) - def handle_crew_start(source, event): - received_events.append(event) - - crew = Crew(agents=[base_agent], tasks=[base_task], name="TestCrew") + @crewai_event_bus.on(CrewKickoffStartedEvent) + def handle_crew_start(source, event): + received_events.append(event) + crew = Crew(agents=[base_agent], tasks=[base_task], name="TestCrew") + with ( + patch.object( + event_listener._telemetry, "crew_execution_span", return_value=mock_span + ) as mock_crew_execution_span, + patch.object( + event_listener._telemetry, "end_crew", return_value=mock_span + ) as mock_crew_ended, + ): crew.kickoff() + mock_crew_execution_span.assert_called_once_with(crew, None) + mock_crew_ended.assert_called_once_with(crew, "hi") - assert len(received_events) == 1 - assert received_events[0].crew_name == "TestCrew" - assert isinstance(received_events[0].timestamp, datetime) - assert received_events[0].type == "crew_kickoff_started" + assert len(received_events) == 1 + assert received_events[0].crew_name == "TestCrew" + assert isinstance(received_events[0].timestamp, datetime) + assert received_events[0].type == "crew_kickoff_started" @pytest.mark.vcr(filter_headers=["authorization"]) @@ -92,6 +109,45 @@ def test_crew_emits_end_kickoff_event(): assert received_events[0].type == "crew_kickoff_completed" +@pytest.mark.vcr(filter_headers=["authorization"]) +def test_crew_emits_test_kickoff_type_event(): + received_events = [] + mock_span = Mock() + + @crewai_event_bus.on(CrewTestStartedEvent) + def handle_crew_end(source, event): + received_events.append(event) + + @crewai_event_bus.on(CrewTestCompletedEvent) + def handle_crew_test_end(source, event): + received_events.append(event) + + eval_llm = LLM(model="gpt-4o-mini") + with ( + patch.object( + event_listener._telemetry, "test_execution_span", return_value=mock_span + ) as mock_crew_execution_span, + ): + crew = Crew(agents=[base_agent], tasks=[base_task], name="TestCrew") + crew.test(n_iterations=1, eval_llm=eval_llm) + + # Verify the call was made with correct argument types and values + assert mock_crew_execution_span.call_count == 1 + args = mock_crew_execution_span.call_args[0] + assert isinstance(args[0], Crew) + assert args[1] == 1 + assert args[2] is None + assert args[3] == eval_llm + + assert len(received_events) == 2 + assert received_events[0].crew_name == "TestCrew" + assert isinstance(received_events[0].timestamp, datetime) + assert received_events[0].type == "crew_test_started" + assert received_events[1].crew_name == "TestCrew" + assert isinstance(received_events[1].timestamp, datetime) + assert received_events[1].type == "crew_test_completed" + + @pytest.mark.vcr(filter_headers=["authorization"]) def test_crew_emits_kickoff_failed_event(): received_events = [] @@ -142,9 +198,20 @@ def test_crew_emits_end_task_event(): def handle_task_end(source, event): received_events.append(event) + mock_span = Mock() crew = Crew(agents=[base_agent], tasks=[base_task], name="TestCrew") + with ( + patch.object( + event_listener._telemetry, "task_started", return_value=mock_span + ) as mock_task_started, + patch.object( + event_listener._telemetry, "task_ended", return_value=mock_span + ) as mock_task_ended, + ): + crew.kickoff() - crew.kickoff() + mock_task_started.assert_called_once_with(crew=crew, task=base_task) + mock_task_ended.assert_called_once_with(mock_span, base_task, crew) assert len(received_events) == 1 assert isinstance(received_events[0].timestamp, datetime) @@ -334,24 +401,29 @@ def test_tools_emits_error_events(): def test_flow_emits_start_event(): received_events = [] + mock_span = Mock() - with crewai_event_bus.scoped_handlers(): + @crewai_event_bus.on(FlowStartedEvent) + def handle_flow_start(source, event): + received_events.append(event) - @crewai_event_bus.on(FlowStartedEvent) - def handle_flow_start(source, event): - received_events.append(event) - - class TestFlow(Flow[dict]): - @start() - def begin(self): - return "started" + class TestFlow(Flow[dict]): + @start() + def begin(self): + return "started" + with ( + patch.object( + event_listener._telemetry, "flow_execution_span", return_value=mock_span + ) as mock_flow_execution_span, + ): flow = TestFlow() flow.kickoff() - assert len(received_events) == 1 - assert received_events[0].flow_name == "TestFlow" - assert received_events[0].type == "flow_started" + mock_flow_execution_span.assert_called_once_with("TestFlow", ["begin"]) + assert len(received_events) == 1 + assert received_events[0].flow_name == "TestFlow" + assert received_events[0].type == "flow_started" def test_flow_emits_finish_event(): @@ -455,6 +527,7 @@ def test_multiple_handlers_for_same_event(): def test_flow_emits_created_event(): received_events = [] + mock_span = Mock() @crewai_event_bus.on(FlowCreatedEvent) def handle_flow_created(source, event): @@ -465,8 +538,15 @@ def test_flow_emits_created_event(): def begin(self): return "started" - flow = TestFlow() - flow.kickoff() + with ( + patch.object( + event_listener._telemetry, "flow_creation_span", return_value=mock_span + ) as mock_flow_creation_span, + ): + flow = TestFlow() + flow.kickoff() + + mock_flow_creation_span.assert_called_once_with("TestFlow") assert len(received_events) == 1 assert received_events[0].flow_name == "TestFlow" @@ -495,3 +575,43 @@ def test_flow_emits_method_execution_failed_event(): assert received_events[0].flow_name == "TestFlow" assert received_events[0].type == "method_execution_failed" assert received_events[0].error == error + + +@pytest.mark.vcr(filter_headers=["authorization"]) +def test_llm_emits_call_started_event(): + received_events = [] + + @crewai_event_bus.on(LLMCallStartedEvent) + def handle_llm_call_started(source, event): + received_events.append(event) + + @crewai_event_bus.on(LLMCallCompletedEvent) + def handle_llm_call_completed(source, event): + received_events.append(event) + + llm = LLM(model="gpt-4o-mini") + llm.call("Hello, how are you?") + + assert len(received_events) == 2 + assert received_events[0].type == "llm_call_started" + assert received_events[1].type == "llm_call_completed" + + +@pytest.mark.vcr(filter_headers=["authorization"]) +def test_llm_emits_call_failed_event(): + received_events = [] + + @crewai_event_bus.on(LLMCallFailedEvent) + def handle_llm_call_failed(source, event): + received_events.append(event) + + error_message = "Simulated LLM call failure" + with patch("crewai.llm.litellm.completion", side_effect=Exception(error_message)): + llm = LLM(model="gpt-4o-mini") + with pytest.raises(Exception) as exc_info: + llm.call("Hello, how are you?") + + assert str(exc_info.value) == error_message + assert len(received_events) == 1 + assert received_events[0].type == "llm_call_failed" + assert received_events[0].error == error_message