From e4e099bafd5d2e3139125fb43343720fd256a5b2 Mon Sep 17 00:00:00 2001 From: Abhishek Govindarasu Date: Sat, 15 Nov 2025 14:00:37 -0800 Subject: [PATCH 1/2] feat: claude code preset + fix emit span --- src/judgeval/cli.py | 14 ++++++++++++++ src/judgeval/v1/tracer/base_tracer.py | 4 ---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/judgeval/cli.py b/src/judgeval/cli.py index e6ee18c5..0088f7e3 100644 --- a/src/judgeval/cli.py +++ b/src/judgeval/cli.py @@ -4,6 +4,7 @@ import subprocess import sys import typer +from enum import Enum from pathlib import Path from dotenv import load_dotenv from judgeval.logger import judgeval_logger @@ -15,6 +16,11 @@ load_dotenv() + +class LoadOtelEnvPreset(str, Enum): + claude_code = "claude-code" + + app = typer.Typer( no_args_is_help=True, pretty_exceptions_enable=False, @@ -33,6 +39,7 @@ def load_otel_env( project_name: str = typer.Argument(help="Project name to send telemetry to"), api_key: str = typer.Option(None, envvar="JUDGMENT_API_KEY"), organization_id: str = typer.Option(None, envvar="JUDGMENT_ORG_ID"), + preset: LoadOtelEnvPreset = typer.Option(None, help="Preset configuration"), ): """Run command with OpenTelemetry environment variables configured for Judgment.""" if not api_key or not organization_id: @@ -55,6 +62,13 @@ def load_otel_env( f"Authorization=Bearer {api_key},X-Organization-Id={organization_id},X-Project-Id={project_id}" ) + if preset == LoadOtelEnvPreset.claude_code: + env["CLAUDE_CODE_ENABLE_TELEMETRY"] = "1" + env["OTEL_LOGS_EXPORTER"] = "otlp" + env["OTEL_EXPORTER_OTLP_LOGS_PROTOCOL"] = "http/protobuf" + env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] = url_for("/otel/v1/claude_code") + env["OTEL_LOG_USER_PROMPTS"] = "1" + result = subprocess.run(ctx.args, env=env) sys.exit(result.returncode) diff --git a/src/judgeval/v1/tracer/base_tracer.py b/src/judgeval/v1/tracer/base_tracer.py index ef669aea..185876c0 100644 --- a/src/judgeval/v1/tracer/base_tracer.py +++ b/src/judgeval/v1/tracer/base_tracer.py @@ -378,8 +378,6 @@ async def async_wrapper(*args: Any, **kwargs: Any) -> Any: AttributeKeys.JUDGMENT_INPUT, self.serializer(input_data) ) - self.get_span_processor().emit_partial() - result = await func(*args, **kwargs) span.set_attribute( @@ -406,8 +404,6 @@ def sync_wrapper(*args: Any, **kwargs: Any) -> Any: AttributeKeys.JUDGMENT_INPUT, self.serializer(input_data) ) - self.get_span_processor().emit_partial() - result = func(*args, **kwargs) span.set_attribute( From 7a5b09469cfb512c0936e1f43f9e2de3b59a7e1a Mon Sep 17 00:00:00 2001 From: Abhishek Govindarasu Date: Mon, 17 Nov 2025 22:36:57 -0800 Subject: [PATCH 2/2] chore: remove presets until backend --- src/judgeval/cli.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/judgeval/cli.py b/src/judgeval/cli.py index 0088f7e3..e6ee18c5 100644 --- a/src/judgeval/cli.py +++ b/src/judgeval/cli.py @@ -4,7 +4,6 @@ import subprocess import sys import typer -from enum import Enum from pathlib import Path from dotenv import load_dotenv from judgeval.logger import judgeval_logger @@ -16,11 +15,6 @@ load_dotenv() - -class LoadOtelEnvPreset(str, Enum): - claude_code = "claude-code" - - app = typer.Typer( no_args_is_help=True, pretty_exceptions_enable=False, @@ -39,7 +33,6 @@ def load_otel_env( project_name: str = typer.Argument(help="Project name to send telemetry to"), api_key: str = typer.Option(None, envvar="JUDGMENT_API_KEY"), organization_id: str = typer.Option(None, envvar="JUDGMENT_ORG_ID"), - preset: LoadOtelEnvPreset = typer.Option(None, help="Preset configuration"), ): """Run command with OpenTelemetry environment variables configured for Judgment.""" if not api_key or not organization_id: @@ -62,13 +55,6 @@ def load_otel_env( f"Authorization=Bearer {api_key},X-Organization-Id={organization_id},X-Project-Id={project_id}" ) - if preset == LoadOtelEnvPreset.claude_code: - env["CLAUDE_CODE_ENABLE_TELEMETRY"] = "1" - env["OTEL_LOGS_EXPORTER"] = "otlp" - env["OTEL_EXPORTER_OTLP_LOGS_PROTOCOL"] = "http/protobuf" - env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] = url_for("/otel/v1/claude_code") - env["OTEL_LOG_USER_PROMPTS"] = "1" - result = subprocess.run(ctx.args, env=env) sys.exit(result.returncode)