refactor(langsmith): annotate metadata parameters as Mapping[str, object]

This commit is contained in:
Muhammad Osama Amin 2026-10-18 14:23:08 +00:00
parent 989a08f0ca
commit 77060fcbe6

View file

@ -7,6 +7,7 @@ import random
import traceback
import types
from datetime import datetime, timezone
from collections.abc import Mapping
from typing import Any, Final
import httpx
@ -138,22 +139,18 @@ class LangsmithLogger(CustomBatchLogger):
"dotted_order": metadata.get("dotted_order", None),
}
def _redact_metadata(self, metadata: dict[str, object]) -> dict[str, object]:
def _redact_metadata(self, metadata: Mapping[str, object]) -> dict[str, object]:
# helper is shallow; also scrub nested requester_metadata and metadata
# since LangSmith forwards both dicts into the run
redacted: Final[dict[str, object]] = redact_user_api_key_info(
metadata=dict(metadata)
) # mutable-ok: scrubbed run metadata copy
redacted: Final = redact_user_api_key_info(metadata=dict(metadata))
for nested_key in ("requester_metadata", "metadata"):
nested: object = redacted.get(nested_key)
if isinstance(nested, dict):
redacted[nested_key] = redact_user_api_key_info(metadata=nested)
return redacted
def _build_extra_metadata(
self, metadata: dict[str, object]
) -> dict[str, object]: # mutable-ok: LangSmith extra metadata dict
extra_metadata: Final[dict[str, object]] = dict(metadata) # mutable-ok: local copy mutated before redaction
def _build_extra_metadata(self, metadata: Mapping[str, object]) -> dict[str, object]:
extra_metadata: Final = dict(metadata)
requester_metadata: Final[object] = extra_metadata.get("requester_metadata")
if isinstance(requester_metadata, dict):
for key in ("session_id", "thread_id", "conversation_id"):