Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langsmith for 
openSUSE:Factory checked in at 2026-10-10 15:00:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langsmith (Old)
 and      /work/SRC/openSUSE:Factory/.python-langsmith.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langsmith"

Sat Oct 10 15:00:21 2026 rev:35 rq:1383992 version:0.14.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-langsmith/python-langsmith.changes        
2026-10-09 21:46:19.944714060 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langsmith.new.3698736/python-langsmith.changes
   2026-10-10 15:00:42.660323586 +0200
@@ -1,0 +2,8 @@
+Sat Oct 10 06:38:02 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 0.14.7:
+  * Do not require a completions resource in wrap_anthropic
+  * Normalize sandbox API endpoint prefixes
+  * No new runtime dependencies; requires-python stays >= 3.10
+
+-------------------------------------------------------------------

Old:
----
  langsmith-0.14.5.tar.gz

New:
----
  langsmith-0.14.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-langsmith.spec ++++++
--- /var/tmp/diff_new_pack.j49hMi/_old  2026-10-10 15:00:43.976378681 +0200
+++ /var/tmp/diff_new_pack.j49hMi/_new  2026-10-10 15:00:43.978378765 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-langsmith
-Version:        0.14.5
+Version:        0.14.7
 Release:        0
 Summary:        Client library for the LangSmith LLM tracing and evaluation 
platform
 License:        MIT

++++++ langsmith-0.14.5.tar.gz -> langsmith-0.14.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/.bumpversion.cfg 
new/langsmith-0.14.7/.bumpversion.cfg
--- old/langsmith-0.14.5/.bumpversion.cfg       2020-02-02 01:00:00.000000000 
+0100
+++ new/langsmith-0.14.7/.bumpversion.cfg       2020-02-02 01:00:00.000000000 
+0100
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 0.14.5
+current_version = 0.14.7
 parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
 serialize = {major}.{minor}.{patch}
 search = {current_version}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/PKG-INFO 
new/langsmith-0.14.7/PKG-INFO
--- old/langsmith-0.14.5/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.5
 Name: langsmith
-Version: 0.14.5
+Version: 0.14.7
 Summary: Client library to connect to the LangSmith Observability and 
Evaluation Platform.
 Project-URL: Homepage, https://smith.langchain.com/
 Project-URL: Documentation, https://docs.smith.langchain.com/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/langsmith/__init__.py 
new/langsmith-0.14.7/langsmith/__init__.py
--- old/langsmith-0.14.5/langsmith/__init__.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/langsmith-0.14.7/langsmith/__init__.py  2020-02-02 01:00:00.000000000 
+0100
@@ -57,7 +57,7 @@
 
 # Avoid calling into importlib on every call to __version__
 
-__version__ = "0.14.5"
+__version__ = "0.14.7"
 version = __version__  # for backwards compatibility
 
 # Metadata key to hide a traced run from LangSmith's Messages View.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/langsmith/sandbox/_async_client.py 
new/langsmith-0.14.7/langsmith/sandbox/_async_client.py
--- old/langsmith-0.14.5/langsmith/sandbox/_async_client.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/langsmith/sandbox/_async_client.py     2020-02-02 
01:00:00.000000000 +0100
@@ -12,6 +12,7 @@
 from langsmith import utils as ls_utils
 from langsmith._openapi_client import AsyncLangsmith
 from langsmith._openapi_client._httpx import httpx
+from langsmith.client import _get_openapi_base_url
 from langsmith.sandbox._access_delegation import (
     AccessDelegation,
     _validate_access_delegation,
@@ -73,7 +74,7 @@
     Derives the endpoint from LANGSMITH_ENDPOINT (or LANGCHAIN_ENDPOINT).
     """
     base = ls_utils.get_env_var("ENDPOINT", 
default="https://api.smith.langchain.com";)
-    return f"{base.rstrip('/')}/v2/sandboxes"
+    return f"{_get_openapi_base_url(base)}/api/v2/sandboxes"
 
 
 def _get_default_api_key() -> Optional[str]:
@@ -164,7 +165,7 @@
         """Return the API root URL, without the ``/v2/sandboxes`` suffix."""
         suffix = "/v2/sandboxes"
         if self._base_url.endswith(suffix):
-            return self._base_url[: -len(suffix)]
+            return _get_openapi_base_url(self._base_url[: -len(suffix)])
         return self._base_url
 
     @property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/langsmith/sandbox/_client.py 
new/langsmith-0.14.7/langsmith/sandbox/_client.py
--- old/langsmith-0.14.5/langsmith/sandbox/_client.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/langsmith/sandbox/_client.py   2020-02-02 
01:00:00.000000000 +0100
@@ -16,6 +16,7 @@
 from langsmith import utils as ls_utils
 from langsmith._openapi_client import Langsmith
 from langsmith._openapi_client._httpx import httpx
+from langsmith.client import _get_openapi_base_url
 from langsmith.sandbox._access_delegation import (
     AccessDelegation,
     _validate_access_delegation,
@@ -69,7 +70,7 @@
     Derives the endpoint from LANGSMITH_ENDPOINT (or LANGCHAIN_ENDPOINT).
     """
     base = ls_utils.get_env_var("ENDPOINT", 
default="https://api.smith.langchain.com";)
-    return f"{base.rstrip('/')}/v2/sandboxes"
+    return f"{_get_openapi_base_url(base)}/api/v2/sandboxes"
 
 
 def _get_default_api_key() -> Optional[str]:
@@ -288,7 +289,7 @@
         """Return the API root URL, without the ``/v2/sandboxes`` suffix."""
         suffix = "/v2/sandboxes"
         if self._base_url.endswith(suffix):
-            return self._base_url[: -len(suffix)]
+            return _get_openapi_base_url(self._base_url[: -len(suffix)])
         return self._base_url
 
     @property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langsmith-0.14.5/langsmith/wrappers/_anthropic.py 
new/langsmith-0.14.7/langsmith/wrappers/_anthropic.py
--- old/langsmith-0.14.5/langsmith/wrappers/_anthropic.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/langsmith/wrappers/_anthropic.py       2020-02-02 
01:00:00.000000000 +0100
@@ -606,13 +606,15 @@
         prepopulated_invocation_params,
         tracing_extra_rest,
     )
-    client.completions.create = _get_wrapper(  # type: ignore[method-assign]
-        client.completions.create,
-        completions_name,
-        _reduce_completions,
-        prepopulated_invocation_params,
-        tracing_extra_rest,
-    )
+    # anthropic>=1.0 removed the legacy Text Completions resource.
+    if hasattr(client, "completions") and hasattr(client.completions, 
"create"):
+        client.completions.create = _get_wrapper(  # type: 
ignore[method-assign]
+            client.completions.create,
+            completions_name,
+            _reduce_completions,
+            prepopulated_invocation_params,
+            tracing_extra_rest,
+        )
 
     if (
         hasattr(client, "beta")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langsmith-0.14.5/tests/unit_tests/sandbox/test_endpoints.py 
new/langsmith-0.14.7/tests/unit_tests/sandbox/test_endpoints.py
--- old/langsmith-0.14.5/tests/unit_tests/sandbox/test_endpoints.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/tests/unit_tests/sandbox/test_endpoints.py     
2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,57 @@
+import pytest
+from pytest_httpx import HTTPXMock
+
+from langsmith import utils
+from langsmith.sandbox import AsyncSandboxClient, SandboxClient
+
+
[email protected](autouse=True)
+def clear_env_cache():
+    utils.get_env_var.cache_clear()
+    yield
+    utils.get_env_var.cache_clear()
+
+
[email protected](
+    "host",
+    [
+        "https://ls.example.com";,
+        "https://eu.api.smith.langchain.com";,
+        "https://ls.example.com/prefix";,
+    ],
+)
[email protected]("suffix", ["", "/", "/api", "/api/", "/api/v1", 
"/api/v1/"])
[email protected]("explicit", [False, True])
[email protected]("async_client", [False, True])
+async def test_endpoint_requests(
+    monkeypatch, httpx_mock: HTTPXMock, host, suffix, explicit, async_client
+):
+    monkeypatch.setenv("LANGSMITH_ENDPOINT", host + suffix)
+    endpoint = host + "/api/v2/sandboxes/" if explicit else None
+    httpx_mock.add_response(
+        url=host + "/api/v2/sandboxes/boxes", json={"sandboxes": []}
+    )
+    httpx_mock.add_response(
+        url=host + "/api/v2/sandboxes/registries", json={"registries": []}
+    )
+    if async_client:
+        async with AsyncSandboxClient(api_endpoint=endpoint, api_key="test") 
as client:
+            await client.list_sandboxes()
+            await client.registries.list()
+    else:
+        with SandboxClient(api_endpoint=endpoint, api_key="test") as client:
+            client.list_sandboxes()
+            client.registries.list()
+
+
[email protected]("client_class", [SandboxClient, AsyncSandboxClient])
+async def test_default_endpoint(monkeypatch, client_class):
+    monkeypatch.delenv("LANGSMITH_ENDPOINT", raising=False)
+    monkeypatch.delenv("LANGCHAIN_ENDPOINT", raising=False)
+    client = client_class(api_key="test")
+    assert client._base_url == 
"https://api.smith.langchain.com/api/v2/sandboxes";
+    assert client._api_root() == "https://api.smith.langchain.com";
+    if isinstance(client, AsyncSandboxClient):
+        await client.aclose()
+    else:
+        client.close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langsmith-0.14.5/tests/unit_tests/wrappers/test_anthropic_processing.py 
new/langsmith-0.14.7/tests/unit_tests/wrappers/test_anthropic_processing.py
--- old/langsmith-0.14.5/tests/unit_tests/wrappers/test_anthropic_processing.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/langsmith-0.14.7/tests/unit_tests/wrappers/test_anthropic_processing.py 
2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,7 @@
 """Unit tests for Anthropic wrapper processing functions."""
 
 import warnings
+from types import SimpleNamespace
 from unittest.mock import MagicMock
 
 import pytest
@@ -333,3 +334,45 @@
 
     def test_none_is_dropped_by_strip_not_given(self) -> None:
         assert "mcp_servers" not in _strip_not_given({"mcp_servers": None})
+
+
+class TestWrapAnthropicCompletions:
+    """wrap_anthropic must tolerate clients without the legacy completions 
resource."""
+
+    @staticmethod
+    def _messages() -> SimpleNamespace:
+        def create(*args, **kwargs):
+            return None
+
+        def stream(*args, **kwargs):
+            return None
+
+        return SimpleNamespace(create=create, stream=stream)
+
+    def test_client_without_completions(self):
+        from langsmith.wrappers import wrap_anthropic
+
+        messages = self._messages()
+        original_create = messages.create
+        client = SimpleNamespace(messages=messages)
+
+        wrapped = wrap_anthropic(client)  # type: ignore[type-var]
+
+        assert wrapped is client
+        assert not hasattr(client, "completions")
+        assert client.messages.create is not original_create
+
+    def test_client_with_completions_is_still_wrapped(self):
+        from langsmith.wrappers import wrap_anthropic
+
+        def completions_create(*args, **kwargs):
+            return None
+
+        client = SimpleNamespace(
+            messages=self._messages(),
+            completions=SimpleNamespace(create=completions_create),
+        )
+
+        wrap_anthropic(client)  # type: ignore[type-var]
+
+        assert client.completions.create is not completions_create

Reply via email to