diff --git a/Makefile b/Makefile index d9bdd27..faaade5 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ help: @echo "" @echo "Code Quality:" @echo " format - Format code with ruff" - @echo " lint - Lint code with ruff and pylint" + @echo " lint - Lint code with ruff" @echo " type-check - Run type checking with mypy and pyright" @echo " security - Run security checks with bandit" @echo " check-all - Run all code quality checks" @@ -36,8 +36,6 @@ format: lint: @echo "🔍 Linting code with ruff..." uv run ruff check . --fix - @echo "📝 Running additional linting with pylint..." - uv run pylint strix/ --score=no --reports=no @echo "✅ Linting complete!" type-check: diff --git a/pyproject.toml b/pyproject.toml index 0ded14f..30142fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,8 +40,6 @@ dependencies = [ "textual>=6.0.0", "requests>=2.32.0", "cvss>=3.2", - "traceloop-sdk>=0.53.0", - "opentelemetry-exporter-otlp-proto-http>=1.40.0", "scrubadub>=2.0.1", ] @@ -64,7 +62,6 @@ dev = [ "mypy>=1.16.0", "ruff>=0.11.13", "pyright>=1.1.401", - "pylint>=3.3.7", "bandit>=1.8.3", "pre-commit>=4.2.0", "pyinstaller>=6.17.0; python_version >= '3.12' and python_version < '3.15'", @@ -121,9 +118,7 @@ module = [ "pyte.*", "libtmux.*", "cvss.*", - "opentelemetry.*", "scrubadub.*", - "traceloop.*", "docker.*", ] ignore_missing_imports = true diff --git a/strix/config/config.py b/strix/config/config.py index 39dee07..d2e0554 100644 --- a/strix/config/config.py +++ b/strix/config/config.py @@ -42,11 +42,7 @@ class Config: # Telemetry strix_telemetry = "1" - strix_otel_telemetry = None strix_posthog_telemetry = None - traceloop_base_url = None - traceloop_api_key = None - traceloop_headers = None # Config file override (set via --config CLI arg) _config_file_override: Path | None = None diff --git a/strix/entry.py b/strix/entry.py index 8ac3548..c00408a 100644 --- a/strix/entry.py +++ b/strix/entry.py @@ -21,6 +21,7 @@ from pathlib import Path from typing import TYPE_CHECKING, Any, Literal from agents import Runner +from agents.memory import SQLiteSession from agents.tracing import add_trace_processor from strix.agents.factory import build_strix_agent, make_child_factory @@ -276,10 +277,22 @@ async def run_strix_scan( reasoning_effort=reasoning_effort, ) + # Native SDK session: persists conversation history to + # ``strix_runs//session.db`` so a second invocation + # with the same ``scan_id`` resumes from where we left off. + session_db = ( + (tracer.get_run_dir() / "session.db") + if tracer is not None and hasattr(tracer, "get_run_dir") + else Path.cwd() / "strix_runs" / scan_id / "session.db" + ) + session_db.parent.mkdir(parents=True, exist_ok=True) + session = SQLiteSession(session_id=scan_id, db_path=session_db) + task_text = _build_root_task(scan_config) return await Runner.run( root_agent, input=task_text, + session=session, run_config=run_config, context=context, hooks=StrixOrchestrationHooks(), diff --git a/strix/orchestration/hooks.py b/strix/orchestration/hooks.py index c479a9e..7c8ae26 100644 --- a/strix/orchestration/hooks.py +++ b/strix/orchestration/hooks.py @@ -3,6 +3,7 @@ from __future__ import annotations import logging +from datetime import UTC, datetime from typing import Any from agents.items import ModelResponse @@ -105,10 +106,16 @@ class StrixOrchestrationHooks(RunHooks[Any]): context: AgentHookContext[Any], agent: Any, ) -> None: - # The CaidoCapability is bound to the sandbox session, not the - # Agent (we use plain ``Agent``, not ``SandboxAgent``). We stash - # it in the context dict at scan-bring-up time so the hook can - # await its healthcheck before the first LLM call. + # Two concerns wired together because they fire at the same + # moment in the lifecycle: + # + # 1. CaidoCapability is bound to the sandbox session, not the + # Agent (we use plain ``Agent``, not ``SandboxAgent``), so + # the healthcheck task gets stashed in the context dict at + # scan bring-up and we await it on first agent start. + # 2. The TUI reads ``tracer.agents`` to render the agent tree. + # We mirror the bus state into the tracer here so the tree + # actually shows live and historical agents. del agent try: ctx = context.context @@ -118,6 +125,24 @@ class StrixOrchestrationHooks(RunHooks[Any]): task = getattr(cap, "_healthcheck_task", None) if task is not None: await task + + tracer = ctx.get("tracer") + bus = ctx.get("bus") + me = ctx.get("agent_id") + if tracer is None or bus is None or me is None: + return + now = datetime.now(UTC).isoformat() + tracer.agents.setdefault( + me, + { + "id": me, + "name": bus.names.get(me, me), + "parent_id": bus.parent_of.get(me), + "status": bus.statuses.get(me, "running"), + "created_at": now, + "updated_at": now, + }, + ) except Exception: logger.exception("on_agent_start failed") @@ -136,6 +161,12 @@ class StrixOrchestrationHooks(RunHooks[Any]): if bus is None or me is None: return crashed = (output is None) or not ctx.get("agent_finish_called", False) + final_status = "crashed" if crashed else "completed" + + tracer = ctx.get("tracer") + if tracer is not None and me in tracer.agents: + tracer.agents[me]["status"] = final_status + tracer.agents[me]["updated_at"] = datetime.now(UTC).isoformat() parent = bus.parent_of.get(me) if crashed and parent is not None: await bus.send( @@ -150,7 +181,7 @@ class StrixOrchestrationHooks(RunHooks[Any]): "type": "crash", }, ) - await bus.finalize(me, "crashed" if crashed else "completed") + await bus.finalize(me, final_status) except Exception: logger.exception("on_agent_end failed") diff --git a/strix/telemetry/flags.py b/strix/telemetry/flags.py index bae9427..c605d90 100644 --- a/strix/telemetry/flags.py +++ b/strix/telemetry/flags.py @@ -9,10 +9,8 @@ def _is_enabled(raw_value: str | None, default: str = "1") -> bool: return value not in _DISABLED_VALUES -def is_otel_enabled() -> bool: - explicit = Config.get("strix_otel_telemetry") - if explicit is not None: - return _is_enabled(explicit) +def is_telemetry_enabled() -> bool: + """Master gate — controls JSONL event emission and posthog.""" return _is_enabled(Config.get("strix_telemetry"), default="1") @@ -20,4 +18,4 @@ def is_posthog_enabled() -> bool: explicit = Config.get("strix_posthog_telemetry") if explicit is not None: return _is_enabled(explicit) - return _is_enabled(Config.get("strix_telemetry"), default="1") + return is_telemetry_enabled() diff --git a/strix/telemetry/tracer.py b/strix/telemetry/tracer.py index 88edbde..902bea4 100644 --- a/strix/telemetry/tracer.py +++ b/strix/telemetry/tracer.py @@ -1,42 +1,19 @@ -import json import logging -import threading from collections.abc import Callable from datetime import UTC, datetime from pathlib import Path from typing import Any, Optional from uuid import uuid4 -from opentelemetry import trace -from opentelemetry.trace import SpanContext, SpanKind - -from strix.config import Config from strix.telemetry import posthog -from strix.telemetry.flags import is_otel_enabled -from strix.telemetry.utils import ( - TelemetrySanitizer, - append_jsonl_record, - bootstrap_otel, - format_span_id, - format_trace_id, - get_events_write_lock, -) - - -try: - from traceloop.sdk import Traceloop -except ImportError: # pragma: no cover - exercised when dependency is absent - Traceloop = None # type: ignore[assignment,unused-ignore] +from strix.telemetry.flags import is_telemetry_enabled +from strix.telemetry.utils import TelemetrySanitizer, append_jsonl_record logger = logging.getLogger(__name__) _global_tracer: Optional["Tracer"] = None -_OTEL_BOOTSTRAP_LOCK = threading.Lock() -_OTEL_BOOTSTRAPPED = False -_OTEL_REMOTE_ENABLED = False - def get_global_tracer() -> Optional["Tracer"]: return _global_tracer @@ -86,16 +63,12 @@ class Tracer: self._next_message_id = 1 self._saved_vuln_ids: set[str] = set() self._run_completed_emitted = False - self._telemetry_enabled = is_otel_enabled() + self._telemetry_enabled = is_telemetry_enabled() self._sanitizer = TelemetrySanitizer() - self._otel_tracer: Any = None - self._remote_export_enabled = False - self.caido_url: str | None = None self.vulnerability_found_callback: Callable[[dict[str, Any]], None] | None = None - self._setup_telemetry() self._emit_run_started_event() @property @@ -104,65 +77,6 @@ class Tracer: self._events_file_path = self.get_run_dir() / "events.jsonl" return self._events_file_path - def _active_events_file_path(self) -> Path: - active = get_global_tracer() - if active and active._events_file_path is not None: - return active._events_file_path - return self.events_file_path - - def _get_events_write_lock(self, output_path: Path | None = None) -> threading.Lock: - path = output_path or self.events_file_path - return get_events_write_lock(path) - - def _active_run_metadata(self) -> dict[str, Any]: - active = get_global_tracer() - if active: - return active.run_metadata - return self.run_metadata - - def _setup_telemetry(self) -> None: - global _OTEL_BOOTSTRAPPED, _OTEL_REMOTE_ENABLED - - if not self._telemetry_enabled: - self._otel_tracer = None - self._remote_export_enabled = False - return - - run_dir = self.get_run_dir() - self._events_file_path = run_dir / "events.jsonl" - base_url = (Config.get("traceloop_base_url") or "").strip() - api_key = (Config.get("traceloop_api_key") or "").strip() - headers_raw = Config.get("traceloop_headers") or "" - - ( - self._otel_tracer, - self._remote_export_enabled, - _OTEL_BOOTSTRAPPED, - _OTEL_REMOTE_ENABLED, - ) = bootstrap_otel( - bootstrapped=_OTEL_BOOTSTRAPPED, - remote_enabled_state=_OTEL_REMOTE_ENABLED, - bootstrap_lock=_OTEL_BOOTSTRAP_LOCK, - traceloop=Traceloop, - base_url=base_url, - api_key=api_key, - headers_raw=headers_raw, - output_path_getter=self._active_events_file_path, - run_metadata_getter=self._active_run_metadata, - sanitizer=self._sanitize_data, - write_lock_getter=self._get_events_write_lock, - tracer_name="strix.telemetry.tracer", - ) - - def _set_association_properties(self, properties: dict[str, Any]) -> None: - if Traceloop is None: - return - sanitized = self._sanitize_data(properties) - try: - Traceloop.set_association_properties(sanitized) - except Exception: # noqa: BLE001 - logger.debug("Failed to set Traceloop association properties") - def _sanitize_data(self, data: Any, key_hint: str | None = None) -> Any: return self._sanitizer.sanitize(data, key_hint=key_hint) @@ -209,61 +123,12 @@ class Tracer: sanitized_payload = self._sanitize_data(payload) if payload is not None else None sanitized_error = self._sanitize_data(error) if error is not None else None - trace_id: str | None = None - span_id: str | None = None - parent_span_id: str | None = None - - current_context = trace.get_current_span().get_span_context() - if isinstance(current_context, SpanContext) and current_context.is_valid: - parent_span_id = format_span_id(current_context.span_id) - - if self._otel_tracer is not None: - try: - with self._otel_tracer.start_as_current_span( - f"strix.{event_type}", - kind=SpanKind.INTERNAL, - ) as span: - span_context = span.get_span_context() - trace_id = format_trace_id(span_context.trace_id) - span_id = format_span_id(span_context.span_id) - - span.set_attribute("strix.event_type", event_type) - span.set_attribute("strix.source", source) - span.set_attribute("strix.run_id", self.run_id) - span.set_attribute("strix.run_name", self.run_name or "") - - if status: - span.set_attribute("strix.status", status) - if sanitized_actor is not None: - span.set_attribute( - "strix.actor", - json.dumps(sanitized_actor, ensure_ascii=False), - ) - if sanitized_payload is not None: - span.set_attribute( - "strix.payload", - json.dumps(sanitized_payload, ensure_ascii=False), - ) - if sanitized_error is not None: - span.set_attribute( - "strix.error", - json.dumps(sanitized_error, ensure_ascii=False), - ) - except Exception: # noqa: BLE001 - logger.debug("Failed to create OTEL span for event type '%s'", event_type) - - if trace_id is None: - trace_id = format_trace_id(uuid4().int & ((1 << 128) - 1)) or uuid4().hex - if span_id is None: - span_id = format_span_id(uuid4().int & ((1 << 64) - 1)) or uuid4().hex[:16] - record = { "timestamp": datetime.now(UTC).isoformat(), "event_type": event_type, "run_id": self.run_id, - "trace_id": trace_id, - "span_id": span_id, - "parent_span_id": parent_span_id, + "trace_id": uuid4().hex, + "span_id": uuid4().hex[:16], "actor": sanitized_actor, "payload": sanitized_payload, "status": status, @@ -282,7 +147,6 @@ class Tracer: self._run_dir = None self._events_file_path = None self._run_completed_emitted = False - self._set_association_properties({"run_id": self.run_id, "run_name": self.run_name or ""}) self._emit_run_started_event() def _emit_run_started_event(self) -> None: @@ -295,7 +159,6 @@ class Tracer: "run_name": self.run_name, "start_time": self.start_time, "local_jsonl_path": str(self.events_file_path), - "remote_export_enabled": self._remote_export_enabled, }, status="running", include_run_metadata=True, @@ -472,14 +335,6 @@ class Tracer: "max_iterations": config.get("max_iterations", 200), } ) - self._set_association_properties( - { - "run_id": self.run_id, - "run_name": self.run_name or "", - "targets": config.get("targets", []), - "max_iterations": config.get("max_iterations", 200), - } - ) self._emit_event( "run.configured", payload={"scan_config": config}, diff --git a/strix/telemetry/utils.py b/strix/telemetry/utils.py index 826a46f..a5d7ea4 100644 --- a/strix/telemetry/utils.py +++ b/strix/telemetry/utils.py @@ -2,19 +2,9 @@ import json import logging import re import threading -from collections.abc import Callable, Sequence -from datetime import UTC, datetime from pathlib import Path from typing import Any -from opentelemetry import trace -from opentelemetry.sdk.trace import ReadableSpan, TracerProvider -from opentelemetry.sdk.trace.export import ( - BatchSpanProcessor, - SimpleSpanProcessor, - SpanExporter, - SpanExportResult, -) from scrubadub import Scrubber from scrubadub.detectors import RegexDetector from scrubadub.filth import Filth @@ -40,18 +30,6 @@ _SENSITIVE_TOKEN_PATTERN = re.compile( _SCRUBADUB_PLACEHOLDER_PATTERN = re.compile(r"\{\{[^}]+\}\}") _EVENTS_FILE_LOCKS_LOCK = threading.Lock() _EVENTS_FILE_LOCKS: dict[str, threading.Lock] = {} -_NOISY_OTEL_CONTENT_PREFIXES = ( - "gen_ai.prompt.", - "gen_ai.completion.", - "llm.input_messages.", - "llm.output_messages.", -) -_NOISY_OTEL_EXACT_KEYS = { - "llm.input", - "llm.output", - "llm.prompt", - "llm.completion", -} class _SecretFilth(Filth): # type: ignore[misc] @@ -103,27 +81,6 @@ class TelemetrySanitizer: return str(data) -def format_trace_id(trace_id: int | None) -> str | None: - if trace_id is None or trace_id == 0: - return None - return f"{trace_id:032x}" - - -def format_span_id(span_id: int | None) -> str | None: - if span_id is None or span_id == 0: - return None - return f"{span_id:016x}" - - -def iso_from_unix_ns(unix_ns: int | None) -> str | None: - if unix_ns is None: - return None - try: - return datetime.fromtimestamp(unix_ns / 1_000_000_000, tz=UTC).isoformat() - except (OSError, OverflowError, ValueError): - return None - - def get_events_write_lock(output_path: Path) -> threading.Lock: path_key = str(output_path.resolve(strict=False)) with _EVENTS_FILE_LOCKS_LOCK: @@ -143,270 +100,3 @@ def append_jsonl_record(output_path: Path, record: dict[str, Any]) -> None: output_path.parent.mkdir(parents=True, exist_ok=True) with get_events_write_lock(output_path), output_path.open("a", encoding="utf-8") as f: f.write(json.dumps(record, ensure_ascii=False) + "\n") - - -def default_resource_attributes() -> dict[str, str]: - return { - "service.name": "strix-agent", - "service.namespace": "strix", - } - - -def parse_traceloop_headers(raw_headers: str) -> dict[str, str]: - headers = raw_headers.strip() - if not headers: - return {} - - if headers.startswith("{"): - try: - parsed = json.loads(headers) - except json.JSONDecodeError: - logger.warning("Invalid TRACELOOP_HEADERS JSON, ignoring custom headers") - return {} - if isinstance(parsed, dict): - return {str(key): str(value) for key, value in parsed.items() if value is not None} - logger.warning("TRACELOOP_HEADERS JSON must be an object, ignoring custom headers") - return {} - - result: dict[str, str] = {} - for part in headers.split(","): - key, sep, value = part.partition("=") - if not sep: - continue - key = key.strip() - value = value.strip() - if key and value: - result[key] = value - return result - - -def prune_otel_span_attributes(attributes: dict[str, Any]) -> dict[str, Any]: - """Drop high-volume LLM payload attributes to keep JSONL event files compact.""" - filtered: dict[str, Any] = {} - filtered_count = 0 - - for key, value in attributes.items(): - key_str = str(key) - if key_str in _NOISY_OTEL_EXACT_KEYS: - filtered_count += 1 - continue - - if key_str.endswith(".content") and key_str.startswith(_NOISY_OTEL_CONTENT_PREFIXES): - filtered_count += 1 - continue - - filtered[key_str] = value - - if filtered_count: - filtered["strix.filtered_attributes_count"] = filtered_count - - return filtered - - -class JsonlSpanExporter(SpanExporter): # type: ignore[misc] - """Append OTEL spans to JSONL for local run artifacts.""" - - def __init__( - self, - output_path_getter: Callable[[], Path], - run_metadata_getter: Callable[[], dict[str, Any]], - sanitizer: Callable[[Any], Any], - write_lock_getter: Callable[[Path], threading.Lock], - ): - self._output_path_getter = output_path_getter - self._run_metadata_getter = run_metadata_getter - self._sanitize = sanitizer - self._write_lock_getter = write_lock_getter - - def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult: - records: list[dict[str, Any]] = [] - for span in spans: - attributes = prune_otel_span_attributes(dict(span.attributes or {})) - if "strix.event_type" in attributes: - # Tracer events are written directly in Tracer._emit_event. - continue - records.append(self._span_to_record(span, attributes)) - - if not records: - return SpanExportResult.SUCCESS - - try: - output_path = self._output_path_getter() - output_path.parent.mkdir(parents=True, exist_ok=True) - with self._write_lock_getter(output_path), output_path.open("a", encoding="utf-8") as f: - for record in records: - f.write(json.dumps(record, ensure_ascii=False) + "\n") - except OSError: - logger.exception("Failed to write OTEL span records to JSONL") - return SpanExportResult.FAILURE - - return SpanExportResult.SUCCESS - - def shutdown(self) -> None: - return None - - def force_flush(self, timeout_millis: int = 30_000) -> bool: # noqa: ARG002 - return True - - def _span_to_record( - self, - span: ReadableSpan, - attributes: dict[str, Any], - ) -> dict[str, Any]: - span_context = span.get_span_context() - parent_context = span.parent - - status = None - if span.status and span.status.status_code: - status = span.status.status_code.name.lower() - - event_type = str(attributes.get("gen_ai.operation.name", span.name)) - run_metadata = self._run_metadata_getter() - run_id_attr = ( - attributes.get("strix.run_id") - or attributes.get("strix_run_id") - or run_metadata.get("run_id") - or span.resource.attributes.get("strix.run_id") - ) - - record: dict[str, Any] = { - "timestamp": iso_from_unix_ns(span.end_time) or datetime.now(UTC).isoformat(), - "event_type": event_type, - "run_id": str(run_id_attr or run_metadata.get("run_id") or ""), - "trace_id": format_trace_id(span_context.trace_id), - "span_id": format_span_id(span_context.span_id), - "parent_span_id": format_span_id(parent_context.span_id if parent_context else None), - "actor": None, - "payload": None, - "status": status, - "error": None, - "source": "otel.span", - "span_name": span.name, - "span_kind": span.kind.name.lower(), - "attributes": self._sanitize(attributes), - } - - if span.events: - record["otel_events"] = self._sanitize( - [ - { - "name": event.name, - "timestamp": iso_from_unix_ns(event.timestamp), - "attributes": dict(event.attributes or {}), - } - for event in span.events - ] - ) - - return record - - -def bootstrap_otel( - *, - bootstrapped: bool, - remote_enabled_state: bool, - bootstrap_lock: threading.Lock, - traceloop: Any, - base_url: str, - api_key: str, - headers_raw: str, - output_path_getter: Callable[[], Path], - run_metadata_getter: Callable[[], dict[str, Any]], - sanitizer: Callable[[Any], Any], - write_lock_getter: Callable[[Path], threading.Lock], - tracer_name: str = "strix.telemetry.tracer", -) -> tuple[Any, bool, bool, bool]: - with bootstrap_lock: - if bootstrapped: - return ( - trace.get_tracer(tracer_name), - remote_enabled_state, - bootstrapped, - remote_enabled_state, - ) - - local_exporter = JsonlSpanExporter( - output_path_getter=output_path_getter, - run_metadata_getter=run_metadata_getter, - sanitizer=sanitizer, - write_lock_getter=write_lock_getter, - ) - local_processor = SimpleSpanProcessor(local_exporter) - - headers = parse_traceloop_headers(headers_raw) - remote_enabled = bool(base_url and api_key) - otlp_headers = headers - if remote_enabled: - otlp_headers = {"Authorization": f"Bearer {api_key}"} - otlp_headers.update(headers) - - otel_init_ok = False - if traceloop: - try: - from traceloop.sdk.instruments import Instruments - - init_kwargs: dict[str, Any] = { - "app_name": "strix-agent", - "processor": local_processor, - "telemetry_enabled": False, - "resource_attributes": default_resource_attributes(), - "block_instruments": { - Instruments.URLLIB3, - Instruments.REQUESTS, - }, - } - if remote_enabled: - init_kwargs.update( - { - "api_endpoint": base_url, - "api_key": api_key, - "headers": headers, - } - ) - import io - import sys - - _stdout = sys.stdout - sys.stdout = io.StringIO() - try: - traceloop.init(**init_kwargs) - finally: - sys.stdout = _stdout - otel_init_ok = True - except Exception: - logger.exception("Failed to initialize Traceloop/OpenLLMetry") - remote_enabled = False - - if not otel_init_ok: - from opentelemetry.sdk.resources import Resource - - provider = TracerProvider(resource=Resource.create(default_resource_attributes())) - provider.add_span_processor(local_processor) - if remote_enabled: - try: - from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( - OTLPSpanExporter, - ) - - endpoint = base_url.rstrip("/") + "/v1/traces" - provider.add_span_processor( - BatchSpanProcessor( - OTLPSpanExporter(endpoint=endpoint, headers=otlp_headers) - ) - ) - except Exception: - logger.exception("Failed to configure OTLP HTTP exporter") - remote_enabled = False - - try: - trace.set_tracer_provider(provider) - otel_init_ok = True - except Exception: - logger.exception("Failed to set OpenTelemetry tracer provider") - remote_enabled = False - - otel_tracer = trace.get_tracer(tracer_name) - if otel_init_ok: - return otel_tracer, remote_enabled, True, remote_enabled - - return otel_tracer, remote_enabled, bootstrapped, remote_enabled_state diff --git a/uv.lock b/uv.lock index ada6305..3687e68 100644 --- a/uv.lock +++ b/uv.lock @@ -147,25 +147,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] -[[package]] -name = "anthropic" -version = "0.86.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "docstring-parser" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/37/7a/8b390dc47945d3169875d342847431e5f7d5fa716b2e37494d57cfc1db10/anthropic-0.86.0.tar.gz", hash = "sha256:60023a7e879aa4fbb1fed99d487fe407b2ebf6569603e5047cfe304cebdaa0e5", size = 583820, upload-time = "2026-03-18T18:43:08.017Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/5f/67db29c6e5d16c8c9c4652d3efb934d89cb750cad201539141781d8eae14/anthropic-0.86.0-py3-none-any.whl", hash = "sha256:9d2bbd339446acce98858c5627d33056efe01f70435b22b63546fe7edae0cd57", size = 469400, upload-time = "2026-03-18T18:43:06.526Z" }, -] - [[package]] name = "anyio" version = "4.12.1" @@ -179,15 +160,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] -[[package]] -name = "astroid" -version = "4.0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/63/0adf26577da5eff6eb7a177876c1cfa213856be9926a000f65c4add9692b/astroid-4.0.4.tar.gz", hash = "sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0", size = 406358, upload-time = "2026-02-07T23:35:07.509Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/cf/1c5f42b110e57bc5502eb80dbc3b03d256926062519224835ef08134f1f9/astroid-4.0.4-py3-none-any.whl", hash = "sha256:52f39653876c7dec3e3afd4c2696920e05c83832b9737afc21928f2d2eb7a753", size = 276445, upload-time = "2026-02-07T23:35:05.344Z" }, -] - [[package]] name = "asttokens" version = "3.0.1" @@ -626,12 +598,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026, upload-time = "2024-10-18T15:58:11.916Z" }, ] -[[package]] -name = "cuid" -version = "0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/55/ca/d323556e2bf9bfb63219fbb849ce61bb830cc42d1b25b91cde3815451b91/cuid-0.4.tar.gz", hash = "sha256:74eaba154916a2240405c3631acee708c263ef8fa05a86820b87d0f59f84e978", size = 4986, upload-time = "2023-03-06T00:41:12.708Z" } - [[package]] name = "cvss" version = "3.6" @@ -683,27 +649,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] -[[package]] -name = "deprecated" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, -] - -[[package]] -name = "dill" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, -] - [[package]] name = "distlib" version = "0.4.0" @@ -736,15 +681,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, ] -[[package]] -name = "docstring-parser" -version = "0.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, -] - [[package]] name = "et-xmlfile" version = "2.0.0" @@ -1017,18 +953,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl", hash = "sha256:79812ed143d9d25b6d176a10bb511de0f9c67b1fa641d82097b0ab90398a2058", size = 208620, upload-time = "2026-01-01T15:37:30.574Z" }, ] -[[package]] -name = "googleapis-common-protos" -version = "1.73.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/96/a0205167fa0154f4a542fd6925bdc63d039d88dab3588b875078107e6f06/googleapis_common_protos-1.73.0.tar.gz", hash = "sha256:778d07cd4fbeff84c6f7c72102f0daf98fa2bfd3fa8bea426edc545588da0b5a", size = 147323, upload-time = "2026-03-06T21:53:09.727Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/28/23eea8acd65972bbfe295ce3666b28ac510dfcb115fac089d3edb0feb00a/googleapis_common_protos-1.73.0-py3-none-any.whl", hash = "sha256:dfdaaa2e860f242046be561e6d6cb5c5f1541ae02cfbcb034371aadb2942b4e8", size = 297578, upload-time = "2026-03-06T21:52:33.933Z" }, -] - [[package]] name = "gql" version = "4.0.0" @@ -1124,47 +1048,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/11/8c/c9138d881c79aa0ea9ed83cbd58d5ca75624378b38cee225dcf5c42cc91f/griffelib-2.0.2-py3-none-any.whl", hash = "sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1", size = 142357, upload-time = "2026-03-27T11:34:46.275Z" }, ] -[[package]] -name = "grpcio" -version = "1.78.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload-time = "2026-02-06T09:57:18.093Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload-time = "2026-02-06T09:55:26.832Z" }, - { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload-time = "2026-02-06T09:55:29.224Z" }, - { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload-time = "2026-02-06T09:55:31.825Z" }, - { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload-time = "2026-02-06T09:55:34.7Z" }, - { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload-time = "2026-02-06T09:55:36.902Z" }, - { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload-time = "2026-02-06T09:55:39.824Z" }, - { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload-time = "2026-02-06T09:55:42.353Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload-time = "2026-02-06T09:55:44.629Z" }, - { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload-time = "2026-02-06T09:55:47.644Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload-time = "2026-02-06T09:55:49.86Z" }, - { url = "https://files.pythonhosted.org/packages/05/a9/8f75894993895f361ed8636cd9237f4ab39ef87fd30db17467235ed1c045/grpcio-1.78.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ce3a90455492bf8bfa38e56fbbe1dbd4f872a3d8eeaf7337dc3b1c8aa28c271b", size = 5920143, upload-time = "2026-02-06T09:55:52.035Z" }, - { url = "https://files.pythonhosted.org/packages/55/06/0b78408e938ac424100100fd081189451b472236e8a3a1f6500390dc4954/grpcio-1.78.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:2bf5e2e163b356978b23652c4818ce4759d40f4712ee9ec5a83c4be6f8c23a3a", size = 11803926, upload-time = "2026-02-06T09:55:55.494Z" }, - { url = "https://files.pythonhosted.org/packages/88/93/b59fe7832ff6ae3c78b813ea43dac60e295fa03606d14d89d2e0ec29f4f3/grpcio-1.78.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8f2ac84905d12918e4e55a16da17939eb63e433dc11b677267c35568aa63fc84", size = 6478628, upload-time = "2026-02-06T09:55:58.533Z" }, - { url = "https://files.pythonhosted.org/packages/ed/df/e67e3734527f9926b7d9c0dde6cd998d1d26850c3ed8eeec81297967ac67/grpcio-1.78.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b58f37edab4a3881bc6c9bca52670610e0c9ca14e2ea3cf9debf185b870457fb", size = 7173574, upload-time = "2026-02-06T09:56:01.786Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/cc03fffb07bfba982a9ec097b164e8835546980aec25ecfa5f9c1a47e022/grpcio-1.78.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:735e38e176a88ce41840c21bb49098ab66177c64c82426e24e0082500cc68af5", size = 6692639, upload-time = "2026-02-06T09:56:04.529Z" }, - { url = "https://files.pythonhosted.org/packages/bf/9a/289c32e301b85bdb67d7ec68b752155e674ee3ba2173a1858f118e399ef3/grpcio-1.78.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2045397e63a7a0ee7957c25f7dbb36ddc110e0cfb418403d110c0a7a68a844e9", size = 7268838, upload-time = "2026-02-06T09:56:08.397Z" }, - { url = "https://files.pythonhosted.org/packages/0e/79/1be93f32add280461fa4773880196572563e9c8510861ac2da0ea0f892b6/grpcio-1.78.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9f136fbafe7ccf4ac7e8e0c28b31066e810be52d6e344ef954a3a70234e1702", size = 8251878, upload-time = "2026-02-06T09:56:10.914Z" }, - { url = "https://files.pythonhosted.org/packages/65/65/793f8e95296ab92e4164593674ae6291b204bb5f67f9d4a711489cd30ffa/grpcio-1.78.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:748b6138585379c737adc08aeffd21222abbda1a86a0dca2a39682feb9196c20", size = 7695412, upload-time = "2026-02-06T09:56:13.593Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9f/1e233fe697ecc82845942c2822ed06bb522e70d6771c28d5528e4c50f6a4/grpcio-1.78.0-cp313-cp313-win32.whl", hash = "sha256:271c73e6e5676afe4fc52907686670c7cea22ab2310b76a59b678403ed40d670", size = 4064899, upload-time = "2026-02-06T09:56:15.601Z" }, - { url = "https://files.pythonhosted.org/packages/4d/27/d86b89e36de8a951501fb06a0f38df19853210f341d0b28f83f4aa0ffa08/grpcio-1.78.0-cp313-cp313-win_amd64.whl", hash = "sha256:f2d4e43ee362adfc05994ed479334d5a451ab7bc3f3fee1b796b8ca66895acb4", size = 4797393, upload-time = "2026-02-06T09:56:17.882Z" }, - { url = "https://files.pythonhosted.org/packages/29/f2/b56e43e3c968bfe822fa6ce5bca10d5c723aa40875b48791ce1029bb78c7/grpcio-1.78.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:e87cbc002b6f440482b3519e36e1313eb5443e9e9e73d6a52d43bd2004fcfd8e", size = 5920591, upload-time = "2026-02-06T09:56:20.758Z" }, - { url = "https://files.pythonhosted.org/packages/5d/81/1f3b65bd30c334167bfa8b0d23300a44e2725ce39bba5b76a2460d85f745/grpcio-1.78.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:c41bc64626db62e72afec66b0c8a0da76491510015417c127bfc53b2fe6d7f7f", size = 11813685, upload-time = "2026-02-06T09:56:24.315Z" }, - { url = "https://files.pythonhosted.org/packages/0e/1c/bbe2f8216a5bd3036119c544d63c2e592bdf4a8ec6e4a1867592f4586b26/grpcio-1.78.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8dfffba826efcf366b1e3ccc37e67afe676f290e13a3b48d31a46739f80a8724", size = 6487803, upload-time = "2026-02-06T09:56:27.367Z" }, - { url = "https://files.pythonhosted.org/packages/16/5c/a6b2419723ea7ddce6308259a55e8e7593d88464ce8db9f4aa857aba96fa/grpcio-1.78.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74be1268d1439eaaf552c698cdb11cd594f0c49295ae6bb72c34ee31abbe611b", size = 7173206, upload-time = "2026-02-06T09:56:29.876Z" }, - { url = "https://files.pythonhosted.org/packages/df/1e/b8801345629a415ea7e26c83d75eb5dbe91b07ffe5210cc517348a8d4218/grpcio-1.78.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be63c88b32e6c0f1429f1398ca5c09bc64b0d80950c8bb7807d7d7fb36fb84c7", size = 6693826, upload-time = "2026-02-06T09:56:32.305Z" }, - { url = "https://files.pythonhosted.org/packages/34/84/0de28eac0377742679a510784f049738a80424b17287739fc47d63c2439e/grpcio-1.78.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:3c586ac70e855c721bda8f548d38c3ca66ac791dc49b66a8281a1f99db85e452", size = 7277897, upload-time = "2026-02-06T09:56:34.915Z" }, - { url = "https://files.pythonhosted.org/packages/ca/9c/ad8685cfe20559a9edb66f735afdcb2b7d3de69b13666fdfc542e1916ebd/grpcio-1.78.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:35eb275bf1751d2ffbd8f57cdbc46058e857cf3971041521b78b7db94bdaf127", size = 8252404, upload-time = "2026-02-06T09:56:37.553Z" }, - { url = "https://files.pythonhosted.org/packages/3c/05/33a7a4985586f27e1de4803887c417ec7ced145ebd069bc38a9607059e2b/grpcio-1.78.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:207db540302c884b8848036b80db352a832b99dfdf41db1eb554c2c2c7800f65", size = 7696837, upload-time = "2026-02-06T09:56:40.173Z" }, - { url = "https://files.pythonhosted.org/packages/73/77/7382241caf88729b106e49e7d18e3116216c778e6a7e833826eb96de22f7/grpcio-1.78.0-cp314-cp314-win32.whl", hash = "sha256:57bab6deef2f4f1ca76cc04565df38dc5713ae6c17de690721bdf30cb1e0545c", size = 4142439, upload-time = "2026-02-06T09:56:43.258Z" }, - { url = "https://files.pythonhosted.org/packages/48/b2/b096ccce418882fbfda4f7496f9357aaa9a5af1896a9a7f60d9f2b275a06/grpcio-1.78.0-cp314-cp314-win_amd64.whl", hash = "sha256:dce09d6116df20a96acfdbf85e4866258c3758180e8c49845d6ba8248b6d0bbb", size = 4929852, upload-time = "2026-02-06T09:56:45.885Z" }, -] - [[package]] name = "h11" version = "0.16.0" @@ -1293,15 +1176,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514, upload-time = "2024-09-11T14:56:07.019Z" }, ] -[[package]] -name = "inflection" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04/inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", size = 15091, upload-time = "2020-08-22T08:16:29.139Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2", size = 9454, upload-time = "2020-08-22T08:16:27.816Z" }, -] - [[package]] name = "ipython" version = "9.11.0" @@ -1335,15 +1209,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] -[[package]] -name = "isort" -version = "8.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/7c/ec4ab396d31b3b395e2e999c8f46dec78c5e29209fac49d1f4dace04041d/isort-8.0.1.tar.gz", hash = "sha256:171ac4ff559cdc060bcfff550bc8404a486fee0caab245679c2abe7cb253c78d", size = 769592, upload-time = "2026-02-28T10:08:20.685Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/95/c7c34aa53c16353c56d0b802fba48d5f5caa2cdee7958acbcb795c830416/isort-8.0.1-py3-none-any.whl", hash = "sha256:28b89bc70f751b559aeca209e6120393d43fbe2490de0559662be7a9787e3d75", size = 89733, upload-time = "2026-02-28T10:08:19.466Z" }, -] - [[package]] name = "jedi" version = "0.19.2" @@ -2335,700 +2200,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, ] -[[package]] -name = "opentelemetry-api" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2c/1d/4049a9e8698361cc1a1aa03a6c59e4fa4c71e0c0f94a30f988a6876a2ae6/opentelemetry_api-1.40.0.tar.gz", hash = "sha256:159be641c0b04d11e9ecd576906462773eb97ae1b657730f0ecf64d32071569f", size = 70851, upload-time = "2026-03-04T14:17:21.555Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/bf/93795954016c522008da367da292adceed71cca6ee1717e1d64c83089099/opentelemetry_api-1.40.0-py3-none-any.whl", hash = "sha256:82dd69331ae74b06f6a874704be0cfaa49a1650e1537d4a813b86ecef7d0ecf9", size = 68676, upload-time = "2026-03-04T14:17:01.24Z" }, -] - -[[package]] -name = "opentelemetry-exporter-otlp-proto-common" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-proto" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/51/bc/1559d46557fe6eca0b46c88d4c2676285f1f3be2e8d06bb5d15fbffc814a/opentelemetry_exporter_otlp_proto_common-1.40.0.tar.gz", hash = "sha256:1cbee86a4064790b362a86601ee7934f368b81cd4cc2f2e163902a6e7818a0fa", size = 20416, upload-time = "2026-03-04T14:17:23.801Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/ca/8f122055c97a932311a3f640273f084e738008933503d0c2563cd5d591fc/opentelemetry_exporter_otlp_proto_common-1.40.0-py3-none-any.whl", hash = "sha256:7081ff453835a82417bf38dccf122c827c3cbc94f2079b03bba02a3165f25149", size = 18369, upload-time = "2026-03-04T14:17:04.796Z" }, -] - -[[package]] -name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "googleapis-common-protos" }, - { name = "grpcio" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-common" }, - { name = "opentelemetry-proto" }, - { name = "opentelemetry-sdk" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/7f/b9e60435cfcc7590fa87436edad6822240dddbc184643a2a005301cc31f4/opentelemetry_exporter_otlp_proto_grpc-1.40.0.tar.gz", hash = "sha256:bd4015183e40b635b3dab8da528b27161ba83bf4ef545776b196f0fb4ec47740", size = 25759, upload-time = "2026-03-04T14:17:24.4Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/6f/7ee0980afcbdcd2d40362da16f7f9796bd083bf7f0b8e038abfbc0300f5d/opentelemetry_exporter_otlp_proto_grpc-1.40.0-py3-none-any.whl", hash = "sha256:2aa0ca53483fe0cf6405087a7491472b70335bc5c7944378a0a8e72e86995c52", size = 20304, upload-time = "2026-03-04T14:17:05.942Z" }, -] - -[[package]] -name = "opentelemetry-exporter-otlp-proto-http" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "googleapis-common-protos" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-common" }, - { name = "opentelemetry-proto" }, - { name = "opentelemetry-sdk" }, - { name = "requests" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/fa/73d50e2c15c56be4d000c98e24221d494674b0cc95524e2a8cb3856d95a4/opentelemetry_exporter_otlp_proto_http-1.40.0.tar.gz", hash = "sha256:db48f5e0f33217588bbc00274a31517ba830da576e59503507c839b38fa0869c", size = 17772, upload-time = "2026-03-04T14:17:25.324Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/3a/8865d6754e61c9fb170cdd530a124a53769ee5f740236064816eb0ca7301/opentelemetry_exporter_otlp_proto_http-1.40.0-py3-none-any.whl", hash = "sha256:a8d1dab28f504c5d96577d6509f80a8150e44e8f45f82cdbe0e34c99ab040069", size = 19960, upload-time = "2026-03-04T14:17:07.153Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "packaging" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/37/6bf8e66bfcee5d3c6515b79cb2ee9ad05fe573c20f7ceb288d0e7eeec28c/opentelemetry_instrumentation-0.61b0.tar.gz", hash = "sha256:cb21b48db738c9de196eba6b805b4ff9de3b7f187e4bbf9a466fa170514f1fc7", size = 32606, upload-time = "2026-03-04T14:20:16.825Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/3e/f6f10f178b6316de67f0dfdbbb699a24fbe8917cf1743c1595fb9dcdd461/opentelemetry_instrumentation-0.61b0-py3-none-any.whl", hash = "sha256:92a93a280e69788e8f88391247cc530fd81f16f2b011979d4d6398f805cfbc63", size = 33448, upload-time = "2026-03-04T14:19:02.447Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-agno" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d8/6a/9bc1b5b259e6d3471928ccc416443fc7a584704e9f7df3b61f9f0499ddea/opentelemetry_instrumentation_agno-0.53.3.tar.gz", hash = "sha256:5fc0490c8d72aece101623bc96e24af6101c6017520c0fa0e82fce714cb1033a", size = 82794, upload-time = "2026-03-19T16:48:02.692Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/82/d1a3b43c3af4e1c041cca121a5aa0f799faffb944407fecc324410b06ae7/opentelemetry_instrumentation_agno-0.53.3-py3-none-any.whl", hash = "sha256:f1f5cb15b20e5823d63f06a8b4e1068b88a01c6c9839725a1572d88d24a932be", size = 8894, upload-time = "2026-03-19T16:47:23.096Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-alephalpha" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a2/bc/f3dddd3ad87546ade90f7a3956ee19fee687565dcc4ba229ff4cd651f0cd/opentelemetry_instrumentation_alephalpha-0.53.3.tar.gz", hash = "sha256:235bb8ddad63eec98a9a3e3e5e4acdd1d1aa27db08d21d729ec26d9037eabc30", size = 141428, upload-time = "2026-03-19T16:48:03.835Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/38/66e002abde5be07acfc5b8806089fcec393f88db7a04abf288fc918396e4/opentelemetry_instrumentation_alephalpha-0.53.3-py3-none-any.whl", hash = "sha256:d611eddb4839641e6cc4a52701ba5f3fef7666eb3b239316c2f6b44c8c2775bc", size = 8044, upload-time = "2026-03-19T16:47:24.267Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-anthropic" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/01/dd/b28a9c979c5d73faaa3427bbd4209f5b1d4934f0c6bbef58245f9e6dc778/opentelemetry_instrumentation_anthropic-0.53.3.tar.gz", hash = "sha256:dffdb91f9b671aa42ab210bef888d9772d12a08136512123c5d40c1035e74c92", size = 688796, upload-time = "2026-03-19T16:48:05.177Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/05/38c0b159db2bddb854cab06afed8d06a1dd97cf23861d8ec8e4265781118/opentelemetry_instrumentation_anthropic-0.53.3-py3-none-any.whl", hash = "sha256:f0ab1284783e7020316d03c42c1ed9cc07d62f8daffd5acfe92f3d59f29be87c", size = 18659, upload-time = "2026-03-19T16:47:25.378Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-bedrock" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anthropic" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, - { name = "tokenizers" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/7b/a0c0d0859f5b9aa68e95d00b22abcdc4bbdbd7967fc96d47dd3fb8e4df53/opentelemetry_instrumentation_bedrock-0.53.3.tar.gz", hash = "sha256:f8b95ea9e2081336c343a8c17467881a345e8c5bc4113cd75e8a3f200849a9ab", size = 149891, upload-time = "2026-03-19T16:48:06.472Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/85/a891f40a317a12ecc2229dab88ead301c715a614a03eb89c5fbae89172df/opentelemetry_instrumentation_bedrock-0.53.3-py3-none-any.whl", hash = "sha256:68b772721726f2ed095438bad39f32e8b18178b8fcd2bdd2851133354282026e", size = 19363, upload-time = "2026-03-19T16:47:26.754Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-chromadb" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cb/76/b821ee78969813fbc4ec3b86a5761253774cfa2298184448fad3ceaf9012/opentelemetry_instrumentation_chromadb-0.53.3.tar.gz", hash = "sha256:b401293c3626e98a93bb459298332fd4878e00f1e92d2dc4fc4a972fcdcfc5ba", size = 142119, upload-time = "2026-03-19T16:48:07.645Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/3d/a4b05da5edb2c2f8923f53b216e9526ad287beefc4d9ba268314ab967c1d/opentelemetry_instrumentation_chromadb-0.53.3-py3-none-any.whl", hash = "sha256:65ec3734dc5a7ed4bef11f8f70ca520f336056b4b9d319733021f87637f545cb", size = 6420, upload-time = "2026-03-19T16:47:28.059Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-cohere" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5c/c2/33e86da7fcfb004b229c0992ae0a348a21a2afbcb8e90c44a85456b11de9/opentelemetry_instrumentation_cohere-0.53.3.tar.gz", hash = "sha256:8c6af8b97296614a727a87f1b3425f28a864e4ba386d211ac28783a27c76ac0b", size = 103717, upload-time = "2026-03-19T16:48:09.102Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/cb/9a0d2cc26f067e494f4baeeb8eef224467e7470a644ad25b72ebf24aad2b/opentelemetry_instrumentation_cohere-0.53.3-py3-none-any.whl", hash = "sha256:94790b5eb9ce14e9fe7d874a633beda142906b07093a4d96f1ebe53f62a1fa03", size = 12166, upload-time = "2026-03-19T16:47:29.173Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-crewai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/d1/1d15409fc4b666dfc4c61626df286ff335405b6a8de78c938c5787f0596d/opentelemetry_instrumentation_crewai-0.53.3.tar.gz", hash = "sha256:1ef0eefad33220cdedfb13941d9e020565ded1baf359ff0e1c98fe6b2e9b674f", size = 338577, upload-time = "2026-03-19T16:48:10.419Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/d2/525e79a9d85335560a12a5f3c1d9277a7d72659393bd36de503cf85182f6/opentelemetry_instrumentation_crewai-0.53.3-py3-none-any.whl", hash = "sha256:4d46facb0b1588164e0f5b065699288ccfa45881be446721b4cfb5766dbfc977", size = 6191, upload-time = "2026-03-19T16:47:30.379Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-google-generativeai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/07/e1/3bae8de157bbf7b3837903969c7599a365c00cfe0c37345948644ad752e7/opentelemetry_instrumentation_google_generativeai-0.53.3.tar.gz", hash = "sha256:cb5905b3efc456addfb66e20078e457c2294cc2fb7687f1587d3ee9855703b34", size = 68589, upload-time = "2026-03-19T16:48:12.184Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/00/54f5359ba64ba88c2a300dca1d309365dae183cdf3756522ec706b664ec4/opentelemetry_instrumentation_google_generativeai-0.53.3-py3-none-any.whl", hash = "sha256:6d9c4df99393689b486fb8decb8535f50fca0df5cefe831a59cad8465a42fd3e", size = 12646, upload-time = "2026-03-19T16:47:31.823Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-groq" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/6c/3a51f21d151129c7b8787f394222e07382c6171a33d8d09f87f610fd9bc8/opentelemetry_instrumentation_groq-0.53.3.tar.gz", hash = "sha256:1f7cd3c4d1a5d6ca4dc560d716809ad65e416571ce9ac86d5be9df79f76fdc80", size = 129169, upload-time = "2026-03-19T16:48:13.583Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/2d/6b3e6ed8cf81e0f63a7d77fc17df2ca21ca1e28dd9563a13e1d0b9055666/opentelemetry_instrumentation_groq-0.53.3-py3-none-any.whl", hash = "sha256:81195e4661da64d4ec40e4bbd9dfbd3f6bd3be5515943d6b7feec5d0e971e705", size = 10958, upload-time = "2026-03-19T16:47:32.911Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-haystack" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/05/0da5ad79e5f26267a2074a84e79a80e5986d13bcd590e76df4e101838801/opentelemetry_instrumentation_haystack-0.53.3.tar.gz", hash = "sha256:3981a4b16f452e24fdfe7469def2cb0326da466371e6665723ea596cd6c035de", size = 78006, upload-time = "2026-03-19T16:48:14.893Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/87/3656a3e07959fdbcfaab7f43941d93c46039230e04b082ee278dbae96793/opentelemetry_instrumentation_haystack-0.53.3-py3-none-any.whl", hash = "sha256:4e56203aec5ef6b4602e4314e8c0df95351d2bd24ce6b392d091cc47c2b95a91", size = 7506, upload-time = "2026-03-19T16:47:34.34Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-lancedb" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/40/39cec7b78d895a8a9ace866360e2f455cc6d4e9b6430038329af20ddd936/opentelemetry_instrumentation_lancedb-0.53.3.tar.gz", hash = "sha256:10b9e7e46cba018b64b00921ebec22dcf8167982a8268d43f07c082767821862", size = 53077, upload-time = "2026-03-19T16:48:16.223Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/e3/f899726323945dce94fd6555ced76c04ca813fc53ad547d1dd7009163bb2/opentelemetry_instrumentation_lancedb-0.53.3-py3-none-any.whl", hash = "sha256:63dfaf79bf79ffba716d5df139c641158723ab2d1e5b51f78897f77f57f549ea", size = 4743, upload-time = "2026-03-19T16:47:35.442Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-langchain" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/45/1f/d012bf6fbea6101dfd46adc3e6427285de85594488b20bbcfa8fa38dcb7e/opentelemetry_instrumentation_langchain-0.53.3.tar.gz", hash = "sha256:2ac2a82698bb75c01bee735f972e6ac44ca521d1b36b6861e840dd3e3c7d8a65", size = 396432, upload-time = "2026-03-19T16:48:17.402Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/87/d837f264760c16e7fc73c634b6af460913ba1d484c580fbfb39dbada7149/opentelemetry_instrumentation_langchain-0.53.3-py3-none-any.whl", hash = "sha256:50cb883d1941b4b2e9a02a1c66ec0236dc6cda35cea71a597d7b81deb6e68203", size = 26810, upload-time = "2026-03-19T16:47:37.047Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-llamaindex" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "inflection" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/79/bffe61b298a8d626a847a5d6ba1076669a56827da350eb4dca6ece433cb8/opentelemetry_instrumentation_llamaindex-0.53.3.tar.gz", hash = "sha256:3a4d6471b6662719c4f5a81b7b36d6b9b3acc2bbe0eaedefba371444b0e38afc", size = 1274131, upload-time = "2026-03-19T16:48:19.378Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/29/0bd6a44ad50e87aaead0313a766900d645d7f2524382c8a7aabe90ad496f/opentelemetry_instrumentation_llamaindex-0.53.3-py3-none-any.whl", hash = "sha256:f1c024715b0db3c62153ec6a0b155ab5c89f0b6837ea12a9addf8f699c6fc2df", size = 21848, upload-time = "2026-03-19T16:47:38.895Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-logging" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ae/e0/69473f925acfe2d4edf5c23bcced36906ac3627aa7c5722a8e3f60825f3b/opentelemetry_instrumentation_logging-0.61b0.tar.gz", hash = "sha256:feaa30b700acd2a37cc81db5f562ab0c3a5b6cc2453595e98b72c01dcf649584", size = 17906, upload-time = "2026-03-04T14:20:37.398Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/0e/2137db5239cc5e564495549a4d11488a7af9b48fc76520a0eea20e69ddae/opentelemetry_instrumentation_logging-0.61b0-py3-none-any.whl", hash = "sha256:6d87e5ded6a0128d775d41511f8380910a1b610671081d16efb05ac3711c0074", size = 17076, upload-time = "2026-03-04T14:19:36.765Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-marqo" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/23/56/fe81a81cb12b14cc7f8fbc3ea584557faf021c9c40ffca04b6d0159c5c29/opentelemetry_instrumentation_marqo-0.53.3.tar.gz", hash = "sha256:047f2f03b8e9bae939ab12bdaa6c8c9ba235217430118fa22acf4af7e7a2467c", size = 48925, upload-time = "2026-03-19T16:48:20.815Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/6d/1908b6c4e16f1089b02dd43d14d50f8f9c85cb8289d410d7694bac36af19/opentelemetry_instrumentation_marqo-0.53.3-py3-none-any.whl", hash = "sha256:b08caf06844db9d347a19b485eb29fabbbc8f5c31a1e0995735afcb6eb461209", size = 5044, upload-time = "2026-03-19T16:47:40.048Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-mcp" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5b/ab/3532e0e4a9401b65a09de02bda1e775996e877fd2b2dd7e5704cf88a27cd/opentelemetry_instrumentation_mcp-0.53.3.tar.gz", hash = "sha256:07644645afd8beec617dbfcb01ced7579156ed8754d185301b2cd9c1bb3548a6", size = 119770, upload-time = "2026-03-19T16:48:21.967Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/d5/db082cf7434b04a30f3bdff77170c4adfe7778a6456d30bed34cd18d9024/opentelemetry_instrumentation_mcp-0.53.3-py3-none-any.whl", hash = "sha256:f36f2bc6c9a3c0898dd60c3c9d6e97f21f71d6341da6059a97993570718cdb90", size = 10463, upload-time = "2026-03-19T16:47:41.423Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-milvus" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/45/f1/9367d05f77538bc0d2d7bc4918139df3379e6a09d900d9c6388c150875b2/opentelemetry_instrumentation_milvus-0.53.3.tar.gz", hash = "sha256:a47ad392592d16f15fdb95171560edc10d49a948d5b22354b36d841c5fc95454", size = 70515, upload-time = "2026-03-19T16:48:23.171Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/9f/179887ce93d0cf248d7534cc19f258fb4882f3dc722420b7a15d10c925fe/opentelemetry_instrumentation_milvus-0.53.3-py3-none-any.whl", hash = "sha256:9cc8fd25ba62a28e6b51ab1ccb792d44f01509529b041f163516514247c6350b", size = 7122, upload-time = "2026-03-19T16:47:42.577Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-mistralai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/ea/51a978cede7ec540c5f97205f4596c66ad5c3a6e017497e76185b542cdcc/opentelemetry_instrumentation_mistralai-0.53.3.tar.gz", hash = "sha256:009a23bf0422f64881b1e64886b1f25cda1e2bc610a59cc34e936e811e398cc1", size = 114296, upload-time = "2026-03-19T16:48:24.632Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/c6/f82ebf4d90c8fe29259cc3e82a33a67943102e04d5105e72c59e84f9a89a/opentelemetry_instrumentation_mistralai-0.53.3-py3-none-any.whl", hash = "sha256:ace33e68edfbf6d5319cde5f4c4a2589c9d0e2ecdef638a21f548f9a8dc90609", size = 8896, upload-time = "2026-03-19T16:47:43.985Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-ollama" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/24/25/9f1902e47fbac88f76d9fc3f5347c9e157f320c0f827bc14d5e20620c02b/opentelemetry_instrumentation_ollama-0.53.3.tar.gz", hash = "sha256:097ee802a4d962acf0a4e6e3e49e3f8e420e1c24f24605cc4024c836716733c3", size = 171929, upload-time = "2026-03-19T16:48:25.868Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/f3/9d2493e28104e13dd90e30c01369fe2468b2abbfa405a16daba9832aaeb1/opentelemetry_instrumentation_ollama-0.53.3-py3-none-any.whl", hash = "sha256:db73146f5489f16313afca4966495da58b01279968e030891709c260c7ff8343", size = 11220, upload-time = "2026-03-19T16:47:45.178Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-openai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/19/fdf3bc7ed55521082702b9eac41fe27c28871d56b305492c9a6bc19236cb/opentelemetry_instrumentation_openai-0.53.3.tar.gz", hash = "sha256:38342c9ee9197063eac712b404fdce036e985a9f0409c712cad520906bde8326", size = 6978377, upload-time = "2026-03-19T16:48:27.566Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/63/37030b878e682929f95f8d41fd4b8f155b9a0b9a89d35fd153e36405c1c9/opentelemetry_instrumentation_openai-0.53.3-py3-none-any.whl", hash = "sha256:700e3ebdf278dca2a808149d024bbdf7e4a4f5f1f3b624da76255717f39a55fc", size = 43077, upload-time = "2026-03-19T16:47:46.409Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-openai-agents" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/41/abeea611564388a7d05f201f149abaa1b48bc82e04d2b78652b25c22af2d/opentelemetry_instrumentation_openai_agents-0.53.3.tar.gz", hash = "sha256:de33596c2e35306e302c86933bd755bec0bc5cc3a26ede6bb6b1e30d42e1e81c", size = 286488, upload-time = "2026-03-19T16:48:29.599Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/32/fadae435d6ecce4c6115461da6112e09e10f4aea6777bf7c760058a57c0d/opentelemetry_instrumentation_openai_agents-0.53.3-py3-none-any.whl", hash = "sha256:adcde8d79fb7c49213b94de511cba24cda8a85ca18a1c34121b4ffe81a8c65d9", size = 16225, upload-time = "2026-03-19T16:47:47.608Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-pinecone" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0b/7b/9dbf1de83f93854376fe2b00a8951f2dc2d629b163cc1d0f3c13bbf35fae/opentelemetry_instrumentation_pinecone-0.53.3.tar.gz", hash = "sha256:97fadb0125a1c557e93590b3046f5e878090893b12eabcf01075fd2b8219b291", size = 146594, upload-time = "2026-03-19T16:48:30.762Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/80/4d/e142cb2d8c88e07f6b291aa4b8d9911b4602bf826af8d433816b0a3dc301/opentelemetry_instrumentation_pinecone-0.53.3-py3-none-any.whl", hash = "sha256:271920aae7f0e5605e3bec7b6bd67d206e66057adb725f0cb953884f00469ead", size = 6629, upload-time = "2026-03-19T16:47:49.043Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-qdrant" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7f/c4/b007e7ea04950cd0480e7040aee486c5657a36bbda712b8e86dfbc1199ec/opentelemetry_instrumentation_qdrant-0.53.3.tar.gz", hash = "sha256:d720994c812574e64afe552592afb902571c739cf80fe92880d3e017f14f9aed", size = 75175, upload-time = "2026-03-19T16:48:32.238Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/fb/a88e1ec31f98f454c24e1d14948fef8ef281e4190ab166c2d428391c5cea/opentelemetry_instrumentation_qdrant-0.53.3-py3-none-any.whl", hash = "sha256:d1d5cad9c3178b5c7592b590cc640b038a627b49c87dcee4c103c4a5b57ae9a3", size = 6392, upload-time = "2026-03-19T16:47:50.17Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-redis" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cf/21/26205f89358a5f2be3ee5512d3d3bce16b622977f64aeaa9d3fa8887dd39/opentelemetry_instrumentation_redis-0.61b0.tar.gz", hash = "sha256:ae0fbb56be9a641e621d55b02a7d62977a2c77c5ee760addd79b9b266e46e523", size = 14781, upload-time = "2026-03-04T14:20:45.694Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/e1/8f4c8e4194291dbe828aeabe779050a8497b379ad90040a5a0a7074b1d08/opentelemetry_instrumentation_redis-0.61b0-py3-none-any.whl", hash = "sha256:8d4e850bbb5f8eeafa44c0eac3a007990c7125de187bc9c3659e29ff7e091172", size = 15506, upload-time = "2026-03-04T14:19:48.588Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-replicate" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1f/5f/54a7745e3316546fcf781289d0332445be4f1b3746b3d5e46b164f9db1c0/opentelemetry_instrumentation_replicate-0.53.3.tar.gz", hash = "sha256:29005945c697a75addcd75342433a06434df619ceb1b6a2425ae3206ed2840d6", size = 61122, upload-time = "2026-03-19T16:48:33.276Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/59/c1cf46f16bb74e490bd757d6df1b298df9568464a1f1fa73268e476f09d2/opentelemetry_instrumentation_replicate-0.53.3-py3-none-any.whl", hash = "sha256:dae749df34b184fd5cabcba402fd56ea0ddda0d88777e6ced95bfa38c81a35f4", size = 8129, upload-time = "2026-03-19T16:47:51.263Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-requests" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-util-http" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/c7/7a47cb85c7aa93a9c820552e414889185bcf91245271d12e5d443e5f834d/opentelemetry_instrumentation_requests-0.61b0.tar.gz", hash = "sha256:15f879ce8fb206bd7e6fdc61663ea63481040a845218c0cf42902ce70bd7e9d9", size = 18379, upload-time = "2026-03-04T14:20:46.959Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/a1/a7a133b273d1f53950f16a370fc94367eff472c9c2576e8e9e28c62dcc9f/opentelemetry_instrumentation_requests-0.61b0-py3-none-any.whl", hash = "sha256:cce19b379949fe637eb73ba39b02c57d2d0805447ca6d86534aa33fcb141f683", size = 14207, upload-time = "2026-03-04T14:19:51.765Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-sagemaker" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/44/1e25284ac352622477736348d01a97548963726484a46c18df29ecdf94e8/opentelemetry_instrumentation_sagemaker-0.53.3.tar.gz", hash = "sha256:e14637be82d8279640761eeb1ab312eaba8628164ee7d4851971fcb2bd2fd5e3", size = 35688, upload-time = "2026-03-19T16:48:34.366Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/be/524a7b5872cbbb44d1a664789c4c4b246d73f986e7ab2f9266dc99fc884e/opentelemetry_instrumentation_sagemaker-0.53.3-py3-none-any.whl", hash = "sha256:8c4beea6d258d0db0029a18827f2710c353d514554e06bcc99218a7f32cabe5b", size = 10102, upload-time = "2026-03-19T16:47:52.41Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-sqlalchemy" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "packaging" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9e/4f/3a325b180944610697a0a926d49d782b41a86120050d44fefb2715b630ac/opentelemetry_instrumentation_sqlalchemy-0.61b0.tar.gz", hash = "sha256:13a3a159a2043a52f0180b3757fbaa26741b0e08abb50deddce4394c118956e6", size = 15343, upload-time = "2026-03-04T14:20:47.648Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/97/b906a930c6a1a20c53ecc8b58cabc2cdd0ce560a2b5d44259084ffe4333e/opentelemetry_instrumentation_sqlalchemy-0.61b0-py3-none-any.whl", hash = "sha256:f115e0be54116ba4c327b8d7b68db4045ee18d44439d888ab8130a549c50d1c1", size = 14547, upload-time = "2026-03-04T14:19:53.088Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-threading" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/12/8f/8dedba66100cda58af057926449a5e58e6c008bec02bc2746c03c3d85dcd/opentelemetry_instrumentation_threading-0.61b0.tar.gz", hash = "sha256:38e0263c692d15a7a458b3fa0286d29290448fa4ac4c63045edac438c6113433", size = 9163, upload-time = "2026-03-04T14:20:50.546Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/77/c06d960aede1a014812aa4fafde0ae546d790f46416fbeafa2b32095aae3/opentelemetry_instrumentation_threading-0.61b0-py3-none-any.whl", hash = "sha256:735f4a1dc964202fc8aff475efc12bb64e6566f22dff52d5cb5de864b3fe1a70", size = 9337, upload-time = "2026-03-04T14:19:57.983Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-together" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f7/78/ddbc0958112432e9aec2d488d09fc00a14a2a8f1168a4389256cca2def30/opentelemetry_instrumentation_together-0.53.3.tar.gz", hash = "sha256:9c3c826dca58df92ae1945c4098d3407c8dfbe1e270e6052f9fd0c6fbf5026f1", size = 133704, upload-time = "2026-03-19T16:48:35.819Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/28/504bc18a90538eb207c94ceb57fd4499ff930f6dedcc49f69f94e3d4d749/opentelemetry_instrumentation_together-0.53.3-py3-none-any.whl", hash = "sha256:ad307d85fed73952a4291f50e81bdc0dfe4723bb5f5f18ad415c8e4201ad625e", size = 8680, upload-time = "2026-03-19T16:47:53.835Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-transformers" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/9c/e020700d5039417274ff8a6896f2e12d1fdc90419cf23992639f671cefd8/opentelemetry_instrumentation_transformers-0.53.3.tar.gz", hash = "sha256:a485b57579944a604efcf4850ce7c1bb8f40da65932686c1f8c8c054b6f6150a", size = 69329, upload-time = "2026-03-19T16:48:36.945Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/0e/8290c8bc289c410c72c7a86a447aa20de85ba5d283b1f73104a8c6e99fe4/opentelemetry_instrumentation_transformers-0.53.3-py3-none-any.whl", hash = "sha256:0b76c17818b1551e8c69b480e9e2ed618d63b5283a80d4c4c33809028d75f10a", size = 8611, upload-time = "2026-03-19T16:47:55.296Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-urllib3" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-util-http" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fa/80/7ad8da30f479c6117768e72d6f2f3f0bd3495338707d6f61de042149578a/opentelemetry_instrumentation_urllib3-0.61b0.tar.gz", hash = "sha256:f00037bc8ff813153c4b79306f55a14618c40469a69c6c03a3add29dc7e8b928", size = 19325, upload-time = "2026-03-04T14:20:53.386Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/0c/01359e55b9f2fb2b1d4d9e85e77773a96697207895118533f3be718a3326/opentelemetry_instrumentation_urllib3-0.61b0-py3-none-any.whl", hash = "sha256:9644f8c07870266e52f129e6226859ff3a35192555abe46fa0ef9bbbf5b6b46d", size = 14339, upload-time = "2026-03-04T14:20:02.681Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-vertexai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ea/af/8662a092c37e53b72729e38c85d181769e2bd6c36bdb916134b5525666a0/opentelemetry_instrumentation_vertexai-0.53.3.tar.gz", hash = "sha256:d28c455f94a91053ebc2390f22d8338a35354a45a59ae8cea2cc10d90f868ae5", size = 79155, upload-time = "2026-03-19T16:48:38Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/52/10620e1dd0e13981f04316c80f02d654c867b0a0cc345876967fc808a3a7/opentelemetry_instrumentation_vertexai-0.53.3-py3-none-any.whl", hash = "sha256:db1f4186e901040ad78a6193a2e3b45561eba6bcc6fcb2c76759177e4d98c194", size = 10812, upload-time = "2026-03-19T16:47:56.379Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-voyageai" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/47/18/4c5cc3eea896c04a606a39e327da31f9c682363b0952e76a3963374dbc27/opentelemetry_instrumentation_voyageai-0.53.3.tar.gz", hash = "sha256:c1d88ffd90d390c59d799d0256582d8fb905fdaa08aadfd2ed069c79cbf1268d", size = 168928, upload-time = "2026-03-19T16:48:39.14Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/57/4a1e2d30823631887286f5e36a6099cf61f58c3c0dc6b3e6e46793980a7e/opentelemetry_instrumentation_voyageai-0.53.3-py3-none-any.whl", hash = "sha256:f310c1ea4a8ef1344f832e9b1295e1de6cc2d03b5e69a3dcf71940c83973d505", size = 6646, upload-time = "2026-03-19T16:47:57.466Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-watsonx" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d7/f5/c1dac4d7a9d1e29751d07429e1d4fc1a61b15259f3a3a0211e40d40c82dd/opentelemetry_instrumentation_watsonx-0.53.3.tar.gz", hash = "sha256:e8a59dab1de647472aac95a30ac948acc9189dc830dc2a5a2661a36263095684", size = 85327, upload-time = "2026-03-19T16:48:40.252Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/bd/03e6e97c2a3976fe306a7439541f4bd993d30212f30d73e97655d9706718/opentelemetry_instrumentation_watsonx-0.53.3-py3-none-any.whl", hash = "sha256:9e61f8aab9f1b71c272eaa22a84edb3b6c750689063c22410520699c40bfd67a", size = 10212, upload-time = "2026-03-19T16:47:58.983Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-weaviate" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/12/626d8f875e305009099f98a5e5593d6dcca327105587106472811f01d9c5/opentelemetry_instrumentation_weaviate-0.53.3.tar.gz", hash = "sha256:2670f1982cd44589f992f25b162586d7dface57241e52e4d3ab9cea6d832721f", size = 602778, upload-time = "2026-03-19T16:48:41.542Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/7b/9afd1a60a2449e0c47c70c07d5b0600fa113ea1ef0e9dfb86f2d24ee4418/opentelemetry_instrumentation_weaviate-0.53.3-py3-none-any.whl", hash = "sha256:85996d6e018aa0b8fce9e22bd1cd86194d13621e5e9d8b91f9e18e6a43628632", size = 6402, upload-time = "2026-03-19T16:48:00.442Z" }, -] - -[[package]] -name = "opentelemetry-instrumentation-writer" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-instrumentation" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "opentelemetry-semantic-conventions-ai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e2/b3/68088b956744a358f75f7cc0e7ed81357510265eddf29f4835f6e65a984f/opentelemetry_instrumentation_writer-0.53.3.tar.gz", hash = "sha256:1f242a08c7e636d7942f1fd14be12fee7f96511a354d48b4c5cc090af1255bb0", size = 167693, upload-time = "2026-03-19T16:48:43.114Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/a1/c15ae4975f3f3c7f8723b10a3127ed589a4e3c057bd1b3a77ae7e3c4e430/opentelemetry_instrumentation_writer-0.53.3-py3-none-any.whl", hash = "sha256:4b896c53ea2e7cce399ab1b396ebf3b6fec3df0cb471ac2d6ebed97c035c86e0", size = 11520, upload-time = "2026-03-19T16:48:01.529Z" }, -] - -[[package]] -name = "opentelemetry-proto" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4c/77/dd38991db037fdfce45849491cb61de5ab000f49824a00230afb112a4392/opentelemetry_proto-1.40.0.tar.gz", hash = "sha256:03f639ca129ba513f5819810f5b1f42bcb371391405d99c168fe6937c62febcd", size = 45667, upload-time = "2026-03-04T14:17:31.194Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/b2/189b2577dde745b15625b3214302605b1353436219d42b7912e77fa8dc24/opentelemetry_proto-1.40.0-py3-none-any.whl", hash = "sha256:266c4385d88923a23d63e353e9761af0f47a6ed0d486979777fe4de59dc9b25f", size = 72073, upload-time = "2026-03-04T14:17:16.673Z" }, -] - -[[package]] -name = "opentelemetry-sdk" -version = "1.40.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/58/fd/3c3125b20ba18ce2155ba9ea74acb0ae5d25f8cd39cfd37455601b7955cc/opentelemetry_sdk-1.40.0.tar.gz", hash = "sha256:18e9f5ec20d859d268c7cb3c5198c8d105d073714db3de50b593b8c1345a48f2", size = 184252, upload-time = "2026-03-04T14:17:31.87Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/c5/6a852903d8bfac758c6dc6e9a68b015d3c33f2f1be5e9591e0f4b69c7e0a/opentelemetry_sdk-1.40.0-py3-none-any.whl", hash = "sha256:787d2154a71f4b3d81f20524a8ce061b7db667d24e46753f32a7bc48f1c1f3f1", size = 141951, upload-time = "2026-03-04T14:17:17.961Z" }, -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/c0/4ae7973f3c2cfd2b6e321f1675626f0dab0a97027cc7a297474c9c8f3d04/opentelemetry_semantic_conventions-0.61b0.tar.gz", hash = "sha256:072f65473c5d7c6dc0355b27d6c9d1a679d63b6d4b4b16a9773062cb7e31192a", size = 145755, upload-time = "2026-03-04T14:17:32.664Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/37/cc6a55e448deaa9b27377d087da8615a3416d8ad523d5960b78dbeadd02a/opentelemetry_semantic_conventions-0.61b0-py3-none-any.whl", hash = "sha256:fa530a96be229795f8cef353739b618148b0fe2b4b3f005e60e262926c4d38e2", size = 231621, upload-time = "2026-03-04T14:17:19.33Z" }, -] - -[[package]] -name = "opentelemetry-semantic-conventions-ai" -version = "0.4.16" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-sdk" }, - { name = "opentelemetry-semantic-conventions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/37/44/fda3c60e77548224ffd86b62aab5a58534e1d32f74d2ccd50ef58aade8d3/opentelemetry_semantic_conventions_ai-0.4.16.tar.gz", hash = "sha256:572eb878d8b81e50f1e53d2a5c1b441e7d34918ee01c846ff62485204d660c22", size = 19071, upload-time = "2026-03-19T15:29:35.357Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/98/e8bf804f2351603b508abaa624096ba279f1d62c3104e7020b45ae938d54/opentelemetry_semantic_conventions_ai-0.4.16-py3-none-any.whl", hash = "sha256:d5ddd0df387b969da82e3e0a8b7415e91d2fc7ce13de7efc2690a7939932b2e0", size = 6495, upload-time = "2026-03-19T15:29:33.974Z" }, -] - -[[package]] -name = "opentelemetry-util-http" -version = "0.61b0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/3c/f0196223efc5c4ca19f8fad3d5462b171ac6333013335ce540c01af419e9/opentelemetry_util_http-0.61b0.tar.gz", hash = "sha256:1039cb891334ad2731affdf034d8fb8b48c239af9b6dd295e5fabd07f1c95572", size = 11361, upload-time = "2026-03-04T14:20:57.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/e5/c08aaaf2f64288d2b6ef65741d2de5454e64af3e050f34285fb1907492fe/opentelemetry_util_http-0.61b0-py3-none-any.whl", hash = "sha256:8e715e848233e9527ea47e275659ea60a57a75edf5206a3b937e236a6da5fc33", size = 9281, upload-time = "2026-03-04T14:20:08.364Z" }, -] - [[package]] name = "packaging" version = "26.0" @@ -3360,21 +2531,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, ] -[[package]] -name = "protobuf" -version = "6.33.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/70/e908e9c5e52ef7c3a6c7902c9dfbb34c7e29c25d2f81ade3856445fd5c94/protobuf-6.33.6.tar.gz", hash = "sha256:a6768d25248312c297558af96a9f9c929e8c4cee0659cb07e780731095f38135", size = 444531, upload-time = "2026-03-18T19:05:00.988Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/9f/2f509339e89cfa6f6a4c4ff50438db9ca488dec341f7e454adad60150b00/protobuf-6.33.6-cp310-abi3-win32.whl", hash = "sha256:7d29d9b65f8afef196f8334e80d6bc1d5d4adedb449971fefd3723824e6e77d3", size = 425739, upload-time = "2026-03-18T19:04:48.373Z" }, - { url = "https://files.pythonhosted.org/packages/76/5d/683efcd4798e0030c1bab27374fd13a89f7c2515fb1f3123efdfaa5eab57/protobuf-6.33.6-cp310-abi3-win_amd64.whl", hash = "sha256:0cd27b587afca21b7cfa59a74dcbd48a50f0a6400cfb59391340ad729d91d326", size = 437089, upload-time = "2026-03-18T19:04:50.381Z" }, - { url = "https://files.pythonhosted.org/packages/5c/01/a3c3ed5cd186f39e7880f8303cc51385a198a81469d53d0fdecf1f64d929/protobuf-6.33.6-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:9720e6961b251bde64edfdab7d500725a2af5280f3f4c87e57c0208376aa8c3a", size = 427737, upload-time = "2026-03-18T19:04:51.866Z" }, - { url = "https://files.pythonhosted.org/packages/ee/90/b3c01fdec7d2f627b3a6884243ba328c1217ed2d978def5c12dc50d328a3/protobuf-6.33.6-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:e2afbae9b8e1825e3529f88d514754e094278bb95eadc0e199751cdd9a2e82a2", size = 324610, upload-time = "2026-03-18T19:04:53.096Z" }, - { url = "https://files.pythonhosted.org/packages/9b/ca/25afc144934014700c52e05103c2421997482d561f3101ff352e1292fb81/protobuf-6.33.6-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:c96c37eec15086b79762ed265d59ab204dabc53056e3443e702d2681f4b39ce3", size = 339381, upload-time = "2026-03-18T19:04:54.616Z" }, - { url = "https://files.pythonhosted.org/packages/16/92/d1e32e3e0d894fe00b15ce28ad4944ab692713f2e7f0a99787405e43533a/protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:e9db7e292e0ab79dd108d7f1a94fe31601ce1ee3f7b79e0692043423020b0593", size = 323436, upload-time = "2026-03-18T19:04:55.768Z" }, - { url = "https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl", hash = "sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size = 170656, upload-time = "2026-03-18T19:04:59.826Z" }, -] - [[package]] name = "ptyprocess" version = "0.7.0" @@ -3614,24 +2770,6 @@ crypto = [ { name = "cryptography" }, ] -[[package]] -name = "pylint" -version = "4.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "astroid" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "dill" }, - { name = "isort" }, - { name = "mccabe" }, - { name = "platformdirs" }, - { name = "tomlkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e4/b6/74d9a8a68b8067efce8d07707fe6a236324ee1e7808d2eb3646ec8517c7d/pylint-4.0.5.tar.gz", hash = "sha256:8cd6a618df75deb013bd7eb98327a95f02a6fb839205a6bbf5456ef96afb317c", size = 1572474, upload-time = "2026-02-20T09:07:33.621Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/6f/9ac2548e290764781f9e7e2aaf0685b086379dabfb29ca38536985471eaf/pylint-4.0.5-py3-none-any.whl", hash = "sha256:00f51c9b14a3b3ae08cff6b2cdd43f28165c78b165b628692e428fb1f8dc2cf2", size = 536694, upload-time = "2026-02-20T09:07:31.028Z" }, -] - [[package]] name = "pyparsing" version = "3.3.2" @@ -4392,13 +3530,11 @@ dependencies = [ { name = "cvss" }, { name = "docker" }, { name = "openai-agents", extra = ["litellm"] }, - { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "pydantic" }, { name = "requests" }, { name = "rich" }, { name = "scrubadub" }, { name = "textual" }, - { name = "traceloop-sdk" }, ] [package.optional-dependencies] @@ -4418,7 +3554,6 @@ dev = [ { name = "mypy" }, { name = "pre-commit" }, { name = "pyinstaller", marker = "python_full_version < '3.15'" }, - { name = "pylint" }, { name = "pyright" }, { name = "ruff" }, ] @@ -4433,14 +3568,12 @@ requires-dist = [ { name = "libtmux", marker = "extra == 'sandbox'", specifier = ">=0.46.2" }, { name = "openai-agents", extras = ["litellm"], specifier = "==0.14.6" }, { name = "openhands-aci", marker = "extra == 'sandbox'", specifier = ">=0.3.0" }, - { name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.40.0" }, { name = "playwright", marker = "extra == 'sandbox'", specifier = ">=1.48.0" }, { name = "pydantic", specifier = ">=2.11.3" }, { name = "requests", specifier = ">=2.32.0" }, { name = "rich" }, { name = "scrubadub", specifier = ">=2.0.1" }, { name = "textual", specifier = ">=6.0.0" }, - { name = "traceloop-sdk", specifier = ">=0.53.0" }, { name = "uvicorn", marker = "extra == 'sandbox'" }, ] provides-extras = ["sandbox"] @@ -4451,20 +3584,10 @@ dev = [ { name = "mypy", specifier = ">=1.16.0" }, { name = "pre-commit", specifier = ">=4.2.0" }, { name = "pyinstaller", marker = "python_full_version >= '3.12' and python_full_version < '3.15'", specifier = ">=6.17.0" }, - { name = "pylint", specifier = ">=3.3.7" }, { name = "pyright", specifier = ">=1.1.401" }, { name = "ruff", specifier = ">=0.11.13" }, ] -[[package]] -name = "tenacity" -version = "9.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/c6/ee486fd809e357697ee8a44d3d69222b344920433d3b6666ccd9b374630c/tenacity-9.1.4.tar.gz", hash = "sha256:adb31d4c263f2bd041081ab33b498309a57c77f9acf2db65aadf0898179cf93a", size = 49413, upload-time = "2026-02-07T10:45:33.841Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl", hash = "sha256:6095a360c919085f28c6527de529e76a06ad89b23659fa881ae0649b867a9d55", size = 28926, upload-time = "2026-02-07T10:45:32.24Z" }, -] - [[package]] name = "textblob" version = "0.15.3" @@ -4575,15 +3698,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, ] -[[package]] -name = "tomlkit" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" }, -] - [[package]] name = "tqdm" version = "4.67.3" @@ -4596,66 +3710,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, ] -[[package]] -name = "traceloop-sdk" -version = "0.53.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "colorama" }, - { name = "cuid" }, - { name = "deprecated" }, - { name = "jinja2" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-grpc" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, - { name = "opentelemetry-instrumentation-agno" }, - { name = "opentelemetry-instrumentation-alephalpha" }, - { name = "opentelemetry-instrumentation-anthropic" }, - { name = "opentelemetry-instrumentation-bedrock" }, - { name = "opentelemetry-instrumentation-chromadb" }, - { name = "opentelemetry-instrumentation-cohere" }, - { name = "opentelemetry-instrumentation-crewai" }, - { name = "opentelemetry-instrumentation-google-generativeai" }, - { name = "opentelemetry-instrumentation-groq" }, - { name = "opentelemetry-instrumentation-haystack" }, - { name = "opentelemetry-instrumentation-lancedb" }, - { name = "opentelemetry-instrumentation-langchain" }, - { name = "opentelemetry-instrumentation-llamaindex" }, - { name = "opentelemetry-instrumentation-logging" }, - { name = "opentelemetry-instrumentation-marqo" }, - { name = "opentelemetry-instrumentation-mcp" }, - { name = "opentelemetry-instrumentation-milvus" }, - { name = "opentelemetry-instrumentation-mistralai" }, - { name = "opentelemetry-instrumentation-ollama" }, - { name = "opentelemetry-instrumentation-openai" }, - { name = "opentelemetry-instrumentation-openai-agents" }, - { name = "opentelemetry-instrumentation-pinecone" }, - { name = "opentelemetry-instrumentation-qdrant" }, - { name = "opentelemetry-instrumentation-redis" }, - { name = "opentelemetry-instrumentation-replicate" }, - { name = "opentelemetry-instrumentation-requests" }, - { name = "opentelemetry-instrumentation-sagemaker" }, - { name = "opentelemetry-instrumentation-sqlalchemy" }, - { name = "opentelemetry-instrumentation-threading" }, - { name = "opentelemetry-instrumentation-together" }, - { name = "opentelemetry-instrumentation-transformers" }, - { name = "opentelemetry-instrumentation-urllib3" }, - { name = "opentelemetry-instrumentation-vertexai" }, - { name = "opentelemetry-instrumentation-voyageai" }, - { name = "opentelemetry-instrumentation-watsonx" }, - { name = "opentelemetry-instrumentation-weaviate" }, - { name = "opentelemetry-instrumentation-writer" }, - { name = "opentelemetry-sdk" }, - { name = "opentelemetry-semantic-conventions-ai" }, - { name = "pydantic" }, - { name = "tenacity" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/eb/2a1c10b5c3379518b2d98cab67fd6d39c09cef114b9ad0b798eba75bc5d0/traceloop_sdk-0.53.3.tar.gz", hash = "sha256:9ef955f1a618e57675e4cefe015af78ed55036c4f9b014ec24ade0a048f65354", size = 321318, upload-time = "2026-03-19T16:49:32.986Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/2e/aeb0e1fdf9fb02ac4f59195eec9d26051d01f79905149bb1b2c9ce5e7844/traceloop_sdk-0.53.3-py3-none-any.whl", hash = "sha256:fce0ff252b98260e90cebb6a7f5c8f933da760e53168963705cddfe02ca23e61", size = 74743, upload-time = "2026-03-19T16:49:31.311Z" }, -] - [[package]] name = "traitlets" version = "5.14.3" @@ -4924,55 +3978,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/93/af1d6ccb69ab6b5a00e03fa0cefa563f9862412667776ea15dd4eece3a90/whatthepatch-1.0.7-py3-none-any.whl", hash = "sha256:1b6f655fd31091c001c209529dfaabbabdbad438f5de14e3951266ea0fc6e7ed", size = 11964, upload-time = "2024-11-16T17:21:20.761Z" }, ] -[[package]] -name = "wrapt" -version = "1.17.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/41/cad1aba93e752f1f9268c77270da3c469883d56e2798e7df6240dcb2287b/wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", size = 53998, upload-time = "2025-08-12T05:51:47.138Z" }, - { url = "https://files.pythonhosted.org/packages/60/f8/096a7cc13097a1869fe44efe68dace40d2a16ecb853141394047f0780b96/wrapt-1.17.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba", size = 39020, upload-time = "2025-08-12T05:51:35.906Z" }, - { url = "https://files.pythonhosted.org/packages/33/df/bdf864b8997aab4febb96a9ae5c124f700a5abd9b5e13d2a3214ec4be705/wrapt-1.17.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd", size = 39098, upload-time = "2025-08-12T05:51:57.474Z" }, - { url = "https://files.pythonhosted.org/packages/9f/81/5d931d78d0eb732b95dc3ddaeeb71c8bb572fb01356e9133916cd729ecdd/wrapt-1.17.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828", size = 88036, upload-time = "2025-08-12T05:52:34.784Z" }, - { url = "https://files.pythonhosted.org/packages/ca/38/2e1785df03b3d72d34fc6252d91d9d12dc27a5c89caef3335a1bbb8908ca/wrapt-1.17.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9", size = 88156, upload-time = "2025-08-12T05:52:13.599Z" }, - { url = "https://files.pythonhosted.org/packages/b3/8b/48cdb60fe0603e34e05cffda0b2a4adab81fd43718e11111a4b0100fd7c1/wrapt-1.17.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396", size = 87102, upload-time = "2025-08-12T05:52:14.56Z" }, - { url = "https://files.pythonhosted.org/packages/3c/51/d81abca783b58f40a154f1b2c56db1d2d9e0d04fa2d4224e357529f57a57/wrapt-1.17.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc", size = 87732, upload-time = "2025-08-12T05:52:36.165Z" }, - { url = "https://files.pythonhosted.org/packages/9e/b1/43b286ca1392a006d5336412d41663eeef1ad57485f3e52c767376ba7e5a/wrapt-1.17.3-cp312-cp312-win32.whl", hash = "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe", size = 36705, upload-time = "2025-08-12T05:53:07.123Z" }, - { url = "https://files.pythonhosted.org/packages/28/de/49493f962bd3c586ab4b88066e967aa2e0703d6ef2c43aa28cb83bf7b507/wrapt-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c", size = 38877, upload-time = "2025-08-12T05:53:05.436Z" }, - { url = "https://files.pythonhosted.org/packages/f1/48/0f7102fe9cb1e8a5a77f80d4f0956d62d97034bbe88d33e94699f99d181d/wrapt-1.17.3-cp312-cp312-win_arm64.whl", hash = "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6", size = 36885, upload-time = "2025-08-12T05:52:54.367Z" }, - { url = "https://files.pythonhosted.org/packages/fc/f6/759ece88472157acb55fc195e5b116e06730f1b651b5b314c66291729193/wrapt-1.17.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0", size = 54003, upload-time = "2025-08-12T05:51:48.627Z" }, - { url = "https://files.pythonhosted.org/packages/4f/a9/49940b9dc6d47027dc850c116d79b4155f15c08547d04db0f07121499347/wrapt-1.17.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77", size = 39025, upload-time = "2025-08-12T05:51:37.156Z" }, - { url = "https://files.pythonhosted.org/packages/45/35/6a08de0f2c96dcdd7fe464d7420ddb9a7655a6561150e5fc4da9356aeaab/wrapt-1.17.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7", size = 39108, upload-time = "2025-08-12T05:51:58.425Z" }, - { url = "https://files.pythonhosted.org/packages/0c/37/6faf15cfa41bf1f3dba80cd3f5ccc6622dfccb660ab26ed79f0178c7497f/wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277", size = 88072, upload-time = "2025-08-12T05:52:37.53Z" }, - { url = "https://files.pythonhosted.org/packages/78/f2/efe19ada4a38e4e15b6dff39c3e3f3f73f5decf901f66e6f72fe79623a06/wrapt-1.17.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d", size = 88214, upload-time = "2025-08-12T05:52:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/ca86701e9de1622b16e09689fc24b76f69b06bb0150990f6f4e8b0eeb576/wrapt-1.17.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa", size = 87105, upload-time = "2025-08-12T05:52:17.914Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e0/d10bd257c9a3e15cbf5523025252cc14d77468e8ed644aafb2d6f54cb95d/wrapt-1.17.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050", size = 87766, upload-time = "2025-08-12T05:52:39.243Z" }, - { url = "https://files.pythonhosted.org/packages/e8/cf/7d848740203c7b4b27eb55dbfede11aca974a51c3d894f6cc4b865f42f58/wrapt-1.17.3-cp313-cp313-win32.whl", hash = "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8", size = 36711, upload-time = "2025-08-12T05:53:10.074Z" }, - { url = "https://files.pythonhosted.org/packages/57/54/35a84d0a4d23ea675994104e667ceff49227ce473ba6a59ba2c84f250b74/wrapt-1.17.3-cp313-cp313-win_amd64.whl", hash = "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb", size = 38885, upload-time = "2025-08-12T05:53:08.695Z" }, - { url = "https://files.pythonhosted.org/packages/01/77/66e54407c59d7b02a3c4e0af3783168fff8e5d61def52cda8728439d86bc/wrapt-1.17.3-cp313-cp313-win_arm64.whl", hash = "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16", size = 36896, upload-time = "2025-08-12T05:52:55.34Z" }, - { url = "https://files.pythonhosted.org/packages/02/a2/cd864b2a14f20d14f4c496fab97802001560f9f41554eef6df201cd7f76c/wrapt-1.17.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39", size = 54132, upload-time = "2025-08-12T05:51:49.864Z" }, - { url = "https://files.pythonhosted.org/packages/d5/46/d011725b0c89e853dc44cceb738a307cde5d240d023d6d40a82d1b4e1182/wrapt-1.17.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235", size = 39091, upload-time = "2025-08-12T05:51:38.935Z" }, - { url = "https://files.pythonhosted.org/packages/2e/9e/3ad852d77c35aae7ddebdbc3b6d35ec8013af7d7dddad0ad911f3d891dae/wrapt-1.17.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c", size = 39172, upload-time = "2025-08-12T05:51:59.365Z" }, - { url = "https://files.pythonhosted.org/packages/c3/f7/c983d2762bcce2326c317c26a6a1e7016f7eb039c27cdf5c4e30f4160f31/wrapt-1.17.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b", size = 87163, upload-time = "2025-08-12T05:52:40.965Z" }, - { url = "https://files.pythonhosted.org/packages/e4/0f/f673f75d489c7f22d17fe0193e84b41540d962f75fce579cf6873167c29b/wrapt-1.17.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa", size = 87963, upload-time = "2025-08-12T05:52:20.326Z" }, - { url = "https://files.pythonhosted.org/packages/df/61/515ad6caca68995da2fac7a6af97faab8f78ebe3bf4f761e1b77efbc47b5/wrapt-1.17.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7", size = 86945, upload-time = "2025-08-12T05:52:21.581Z" }, - { url = "https://files.pythonhosted.org/packages/d3/bd/4e70162ce398462a467bc09e768bee112f1412e563620adc353de9055d33/wrapt-1.17.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4", size = 86857, upload-time = "2025-08-12T05:52:43.043Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b8/da8560695e9284810b8d3df8a19396a6e40e7518059584a1a394a2b35e0a/wrapt-1.17.3-cp314-cp314-win32.whl", hash = "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10", size = 37178, upload-time = "2025-08-12T05:53:12.605Z" }, - { url = "https://files.pythonhosted.org/packages/db/c8/b71eeb192c440d67a5a0449aaee2310a1a1e8eca41676046f99ed2487e9f/wrapt-1.17.3-cp314-cp314-win_amd64.whl", hash = "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6", size = 39310, upload-time = "2025-08-12T05:53:11.106Z" }, - { url = "https://files.pythonhosted.org/packages/45/20/2cda20fd4865fa40f86f6c46ed37a2a8356a7a2fde0773269311f2af56c7/wrapt-1.17.3-cp314-cp314-win_arm64.whl", hash = "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58", size = 37266, upload-time = "2025-08-12T05:52:56.531Z" }, - { url = "https://files.pythonhosted.org/packages/77/ed/dd5cf21aec36c80443c6f900449260b80e2a65cf963668eaef3b9accce36/wrapt-1.17.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a", size = 56544, upload-time = "2025-08-12T05:51:51.109Z" }, - { url = "https://files.pythonhosted.org/packages/8d/96/450c651cc753877ad100c7949ab4d2e2ecc4d97157e00fa8f45df682456a/wrapt-1.17.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067", size = 40283, upload-time = "2025-08-12T05:51:39.912Z" }, - { url = "https://files.pythonhosted.org/packages/d1/86/2fcad95994d9b572db57632acb6f900695a648c3e063f2cd344b3f5c5a37/wrapt-1.17.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454", size = 40366, upload-time = "2025-08-12T05:52:00.693Z" }, - { url = "https://files.pythonhosted.org/packages/64/0e/f4472f2fdde2d4617975144311f8800ef73677a159be7fe61fa50997d6c0/wrapt-1.17.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e", size = 108571, upload-time = "2025-08-12T05:52:44.521Z" }, - { url = "https://files.pythonhosted.org/packages/cc/01/9b85a99996b0a97c8a17484684f206cbb6ba73c1ce6890ac668bcf3838fb/wrapt-1.17.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f", size = 113094, upload-time = "2025-08-12T05:52:22.618Z" }, - { url = "https://files.pythonhosted.org/packages/25/02/78926c1efddcc7b3aa0bc3d6b33a822f7d898059f7cd9ace8c8318e559ef/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056", size = 110659, upload-time = "2025-08-12T05:52:24.057Z" }, - { url = "https://files.pythonhosted.org/packages/dc/ee/c414501ad518ac3e6fe184753632fe5e5ecacdcf0effc23f31c1e4f7bfcf/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804", size = 106946, upload-time = "2025-08-12T05:52:45.976Z" }, - { url = "https://files.pythonhosted.org/packages/be/44/a1bd64b723d13bb151d6cc91b986146a1952385e0392a78567e12149c7b4/wrapt-1.17.3-cp314-cp314t-win32.whl", hash = "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977", size = 38717, upload-time = "2025-08-12T05:53:15.214Z" }, - { url = "https://files.pythonhosted.org/packages/79/d9/7cfd5a312760ac4dd8bf0184a6ee9e43c33e47f3dadc303032ce012b8fa3/wrapt-1.17.3-cp314-cp314t-win_amd64.whl", hash = "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116", size = 41334, upload-time = "2025-08-12T05:53:14.178Z" }, - { url = "https://files.pythonhosted.org/packages/46/78/10ad9781128ed2f99dbc474f43283b13fea8ba58723e98844367531c18e9/wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", size = 38471, upload-time = "2025-08-12T05:52:57.784Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, -] - [[package]] name = "xlrd" version = "2.0.2"