diff --git a/py/src/braintrust/span_origin.py b/py/src/braintrust/span_origin.py index fa0237ad..f6b2eaea 100644 --- a/py/src/braintrust/span_origin.py +++ b/py/src/braintrust/span_origin.py @@ -1,3 +1,4 @@ +import functools import importlib.metadata import os from typing import Any, TypedDict @@ -98,6 +99,7 @@ def merge_span_origin_context( return merged +@functools.cache def _sdk_version() -> str: try: return importlib.metadata.version("braintrust") diff --git a/py/src/braintrust/test_span_origin.py b/py/src/braintrust/test_span_origin.py new file mode 100644 index 00000000..6454f5b9 --- /dev/null +++ b/py/src/braintrust/test_span_origin.py @@ -0,0 +1,15 @@ +from unittest.mock import patch + +from braintrust import span_origin + + +def test_sdk_version_is_cached(): + span_origin._sdk_version.cache_clear() + try: + with patch("braintrust.span_origin.importlib.metadata.version", return_value="1.2.3") as version: + assert span_origin.merge_span_origin_context({}, "test", None)["span_origin"]["version"] == "1.2.3" + assert span_origin.merge_span_origin_context({}, "test", None)["span_origin"]["version"] == "1.2.3" + + version.assert_called_once_with("braintrust") + finally: + span_origin._sdk_version.cache_clear()