diff --git a/lib/langfuse/client.ex b/lib/langfuse/client.ex index c38c342..6374966 100644 --- a/lib/langfuse/client.ex +++ b/lib/langfuse/client.ex @@ -999,9 +999,7 @@ defmodule Langfuse.Client do def delete(path) do config = Config.get() - unless Config.configured?() do - {:error, :not_configured} - else + if Config.configured?() do url = config.host <> path case Req.delete(url, auth: {:basic, "#{config.public_key}:#{config.secret_key}"}) do @@ -1014,6 +1012,8 @@ defmodule Langfuse.Client do {:error, reason} -> {:error, reason} end + else + {:error, :not_configured} end end @@ -1030,9 +1030,7 @@ defmodule Langfuse.Client do def patch(path, body) do config = Config.get() - unless Config.configured?() do - {:error, :not_configured} - else + if Config.configured?() do url = config.host <> path case Req.patch(url, @@ -1048,6 +1046,8 @@ defmodule Langfuse.Client do {:error, reason} -> {:error, reason} end + else + {:error, :not_configured} end end diff --git a/lib/langfuse/event.ex b/lib/langfuse/event.ex index d2131ec..3441374 100644 --- a/lib/langfuse/event.ex +++ b/lib/langfuse/event.ex @@ -29,7 +29,7 @@ defmodule Langfuse.Event do """ - alias Langfuse.{Ingestion, Trace, Span} + alias Langfuse.{Ingestion, Span, Trace} @typedoc "Log level for the observation." @type level :: :debug | :default | :warning | :error diff --git a/lib/langfuse/generation.ex b/lib/langfuse/generation.ex index e3075e1..988443d 100644 --- a/lib/langfuse/generation.ex +++ b/lib/langfuse/generation.ex @@ -58,7 +58,7 @@ defmodule Langfuse.Generation do """ - alias Langfuse.{Ingestion, Trace, Span} + alias Langfuse.{Ingestion, Span, Trace} @typedoc "Log level for the observation." @type level :: :debug | :default | :warning | :error diff --git a/lib/langfuse/http.ex b/lib/langfuse/http.ex index 3d25ca5..f50b4ad 100644 --- a/lib/langfuse/http.ex +++ b/lib/langfuse/http.ex @@ -112,10 +112,10 @@ defmodule Langfuse.HTTP do def get(path, params \\ []) do config = Config.get() - unless Config.configured?() do - {:error, :not_configured} - else + if Config.configured?() do request(:get, path, config, params: params) + else + {:error, :not_configured} end end @@ -129,10 +129,10 @@ defmodule Langfuse.HTTP do def post(path, body) do config = Config.get() - unless Config.configured?() do - {:error, :not_configured} - else + if Config.configured?() do request(:post, path, config, json: body) + else + {:error, :not_configured} end end diff --git a/lib/langfuse/open_telemetry.ex b/lib/langfuse/open_telemetry.ex index 25c17d0..81f9a6c 100644 --- a/lib/langfuse/open_telemetry.ex +++ b/lib/langfuse/open_telemetry.ex @@ -122,7 +122,7 @@ defmodule Langfuse.OpenTelemetry do """ - alias Langfuse.OpenTelemetry.{AttributeMapper, TraceContext, Setup} + alias Langfuse.OpenTelemetry.{AttributeMapper, Setup, TraceContext} @doc """ Extracts trace and span IDs from an OpenTelemetry span context. diff --git a/lib/langfuse/open_telemetry/setup.ex b/lib/langfuse/open_telemetry/setup.ex index 295f0fa..699195c 100644 --- a/lib/langfuse/open_telemetry/setup.ex +++ b/lib/langfuse/open_telemetry/setup.ex @@ -206,13 +206,11 @@ defmodule Langfuse.OpenTelemetry.Setup do end defp safe_get_tracer_provider do - try do - :otel_tracer_provider.resource() - true - rescue - _ -> false - catch - _, _ -> false - end + :otel_tracer_provider.resource() + true + rescue + _ -> false + catch + _, _ -> false end end diff --git a/lib/langfuse/open_telemetry/span_processor.ex b/lib/langfuse/open_telemetry/span_processor.ex index 18df935..6430f34 100644 --- a/lib/langfuse/open_telemetry/span_processor.ex +++ b/lib/langfuse/open_telemetry/span_processor.ex @@ -61,8 +61,8 @@ defmodule Langfuse.OpenTelemetry.SpanProcessor do @behaviour :otel_span_processor - alias Langfuse.OpenTelemetry.AttributeMapper alias Langfuse.Ingestion + alias Langfuse.OpenTelemetry.AttributeMapper @typedoc "Processor configuration options." @type config :: %{ @@ -119,7 +119,7 @@ defmodule Langfuse.OpenTelemetry.SpanProcessor do parent_span_id_hex = format_span_id(parent_span_id) mapped_attrs = AttributeMapper.map_attributes(attributes) - is_generation = is_generation?(attributes, mapped_attrs) + is_generation = generation?(attributes, mapped_attrs) is_root = is_nil(parent_span_id) or parent_span_id == 0 if is_root do @@ -170,7 +170,7 @@ defmodule Langfuse.OpenTelemetry.SpanProcessor do defp normalize_span(_), do: nil - defp is_generation?(attributes, mapped_attrs) do + defp generation?(attributes, mapped_attrs) do Map.has_key?(mapped_attrs, :model) or has_genai_attribute?(attributes) end diff --git a/lib/langfuse/prompt.ex b/lib/langfuse/prompt.ex index 085d638..cf029db 100644 --- a/lib/langfuse/prompt.ex +++ b/lib/langfuse/prompt.ex @@ -365,19 +365,15 @@ defmodule Langfuse.Prompt do end defp delete_cache_key(key) do - try do - :ets.delete(:langfuse_prompt_cache, key) - rescue - ArgumentError -> :ok - end + :ets.delete(:langfuse_prompt_cache, key) + rescue + ArgumentError -> :ok end defp delete_cache_by_name(name) do - try do - :ets.match_delete(:langfuse_prompt_cache, {{name, :_, :_}, :_, :_}) - rescue - ArgumentError -> :ok - end + :ets.match_delete(:langfuse_prompt_cache, {{name, :_, :_}, :_, :_}) + rescue + ArgumentError -> :ok end defp get_cached(key) do diff --git a/lib/langfuse/score.ex b/lib/langfuse/score.ex index c9b51fe..086f874 100644 --- a/lib/langfuse/score.ex +++ b/lib/langfuse/score.ex @@ -48,7 +48,7 @@ defmodule Langfuse.Score do """ - alias Langfuse.{Ingestion, Trace, Span, Generation} + alias Langfuse.{Generation, Ingestion, Span, Trace} @typedoc "Score data type classification." @type data_type :: :numeric | :categorical | :boolean diff --git a/test/langfuse/error_test.exs b/test/langfuse/error_test.exs index 8e30489..b03e3f2 100644 --- a/test/langfuse/error_test.exs +++ b/test/langfuse/error_test.exs @@ -1,7 +1,7 @@ defmodule Langfuse.ErrorTest do use ExUnit.Case, async: true - alias Langfuse.Error.{ConfigError, APIError, ValidationError, PromptNotFoundError} + alias Langfuse.Error.{APIError, ConfigError, PromptNotFoundError, ValidationError} describe "ConfigError" do test "message with key and custom message" do diff --git a/test/langfuse/event_test.exs b/test/langfuse/event_test.exs index ba1d6b3..99d9fb8 100644 --- a/test/langfuse/event_test.exs +++ b/test/langfuse/event_test.exs @@ -1,7 +1,7 @@ defmodule Langfuse.EventTest do use ExUnit.Case, async: true - alias Langfuse.{Event, Trace, Span} + alias Langfuse.{Event, Span, Trace} describe "new/2" do test "creates an event from a trace" do diff --git a/test/langfuse/generation_test.exs b/test/langfuse/generation_test.exs index 5c7a96f..e5701fa 100644 --- a/test/langfuse/generation_test.exs +++ b/test/langfuse/generation_test.exs @@ -1,7 +1,8 @@ defmodule Langfuse.GenerationTest do use ExUnit.Case, async: false - alias Langfuse.{Generation, Trace, Span} + alias Langfuse.{Generation, Span, Trace} + alias Langfuse.Test.Helpers describe "new/2" do test "creates a generation from a trace" do @@ -139,7 +140,7 @@ defmodule Langfuse.GenerationTest do describe "event capture" do test "new/2 sends generation-create event" do {_gen, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Generation.new(trace, name: "llm-call", model: "gpt-4") end) @@ -152,7 +153,7 @@ defmodule Langfuse.GenerationTest do test "update/2 sends generation-update event" do {_gen, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") gen = Generation.new(trace, name: "llm-call") Generation.update(gen, output: %{content: "response"}) @@ -165,7 +166,7 @@ defmodule Langfuse.GenerationTest do test "end_generation/1 sends generation-update event with end_time" do {_gen, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") gen = Generation.new(trace, name: "llm-call") Generation.end_generation(gen) @@ -178,7 +179,7 @@ defmodule Langfuse.GenerationTest do test "events include required fields" do {_gen, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Generation.new(trace, name: "llm-call") end) diff --git a/test/langfuse/score_test.exs b/test/langfuse/score_test.exs index 72c933c..86b7fd7 100644 --- a/test/langfuse/score_test.exs +++ b/test/langfuse/score_test.exs @@ -1,7 +1,7 @@ defmodule Langfuse.ScoreTest do use ExUnit.Case, async: false - alias Langfuse.{Score, Trace, Span, Generation} + alias Langfuse.{Generation, Score, Span, Trace} import Langfuse.Test.Helpers describe "create/2" do diff --git a/test/langfuse/span_test.exs b/test/langfuse/span_test.exs index 87a957b..7bc2acb 100644 --- a/test/langfuse/span_test.exs +++ b/test/langfuse/span_test.exs @@ -2,6 +2,7 @@ defmodule Langfuse.SpanTest do use ExUnit.Case, async: false alias Langfuse.{Span, Trace} + alias Langfuse.Test.Helpers describe "new/2" do test "creates a span from a trace" do @@ -121,7 +122,7 @@ defmodule Langfuse.SpanTest do describe "observation types" do test "creates span with agent type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "agent-span", type: :agent) end) @@ -132,7 +133,7 @@ defmodule Langfuse.SpanTest do test "creates span with tool type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "tool-span", type: :tool) end) @@ -143,7 +144,7 @@ defmodule Langfuse.SpanTest do test "creates span with chain type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "chain-span", type: :chain) end) @@ -154,7 +155,7 @@ defmodule Langfuse.SpanTest do test "creates span with retriever type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "retriever-span", type: :retriever) end) @@ -165,7 +166,7 @@ defmodule Langfuse.SpanTest do test "creates span with embedding type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "embedding-span", type: :embedding) end) @@ -176,7 +177,7 @@ defmodule Langfuse.SpanTest do test "creates span with evaluator type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "evaluator-span", type: :evaluator) end) @@ -187,7 +188,7 @@ defmodule Langfuse.SpanTest do test "creates span with guardrail type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "guardrail-span", type: :guardrail) end) @@ -198,7 +199,7 @@ defmodule Langfuse.SpanTest do test "defaults to span type" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "default-span") end) @@ -211,7 +212,7 @@ defmodule Langfuse.SpanTest do describe "level conversions" do test "creates span with debug level" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "debug-span", level: :debug) end) @@ -222,7 +223,7 @@ defmodule Langfuse.SpanTest do test "creates span with default level" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "default-level-span", level: :default) end) @@ -233,7 +234,7 @@ defmodule Langfuse.SpanTest do test "creates span with error level" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "error-span", level: :error) end) @@ -244,7 +245,7 @@ defmodule Langfuse.SpanTest do test "creates span with warning level" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "warning-span", level: :warning) end) @@ -257,7 +258,7 @@ defmodule Langfuse.SpanTest do describe "version field" do test "includes version in event body" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "versioned-span", version: "1.2.3") end) @@ -270,7 +271,7 @@ defmodule Langfuse.SpanTest do describe "event capture" do test "new/2 sends span-create event" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "test-span") end) @@ -282,7 +283,7 @@ defmodule Langfuse.SpanTest do test "update/2 sends span-update event" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") span = Span.new(trace, name: "test-span") Span.update(span, output: %{result: "done"}) @@ -295,7 +296,7 @@ defmodule Langfuse.SpanTest do test "end_span/1 sends span-update event with end_time" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") span = Span.new(trace, name: "test-span") Span.end_span(span) @@ -308,7 +309,7 @@ defmodule Langfuse.SpanTest do test "events include required fields" do {_span, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Trace.new(name: "test-trace") Span.new(trace, name: "test-span") end) diff --git a/test/langfuse_test.exs b/test/langfuse_test.exs index 0769e10..f452783 100644 --- a/test/langfuse_test.exs +++ b/test/langfuse_test.exs @@ -3,6 +3,8 @@ defmodule LangfuseTest do import ExUnit.CaptureLog + alias Langfuse.Test.Helpers + describe "update/2" do test "updates a span" do capture_log(fn -> @@ -107,7 +109,7 @@ defmodule LangfuseTest do describe "integration workflow" do test "complete trace with span and generation" do {_result, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Langfuse.trace(name: "integration-test", user_id: "test-user") span = Langfuse.span(trace, name: "retrieval", input: %{query: "test"}) @@ -143,7 +145,7 @@ defmodule LangfuseTest do test "nested spans" do {_result, events} = - Langfuse.Test.Helpers.capture_events(fn -> + Helpers.capture_events(fn -> trace = Langfuse.trace(name: "nested-test") outer_span = Langfuse.span(trace, name: "outer")