Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-langchain-core for 
openSUSE:Factory checked in at 2026-10-08 11:59:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-langchain-core (Old)
 and      /work/SRC/openSUSE:Factory/.python-langchain-core.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-langchain-core"

Thu Oct  8 11:59:30 2026 rev:18 rq:1383213 version:1.6.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-langchain-core/python-langchain-core.changes  
    2026-10-01 16:45:33.106285415 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-langchain-core.new.3698736/python-langchain-core.changes
 2026-10-08 12:00:19.634322775 +0200
@@ -1,0 +2,7 @@
+Thu Oct  8 06:24:34 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 1.6.7:
+  * Include OpenAI redacted_content in v1 output for Bedrock Converse
+  * Python 3.14 hardening around `inspect.signature`
+
+-------------------------------------------------------------------

Old:
----
  langchain_core-1.6.6.tar.gz

New:
----
  langchain_core-1.6.7.tar.gz

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

Other differences:
------------------
++++++ python-langchain-core.spec ++++++
--- /var/tmp/diff_new_pack.tyJ6TI/_old  2026-10-08 12:00:20.511359511 +0200
+++ /var/tmp/diff_new_pack.tyJ6TI/_new  2026-10-08 12:00:20.514359637 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-langchain-core
-Version:        1.6.6
+Version:        1.6.7
 Release:        0
 Summary:        Building applications with LLMs through composability
 License:        MIT

++++++ langchain_core-1.6.6.tar.gz -> langchain_core-1.6.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/PKG-INFO 
new/langchain_core-1.6.7/PKG-INFO
--- old/langchain_core-1.6.6/PKG-INFO   2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/PKG-INFO   2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.5
 Name: langchain-core
-Version: 1.6.6
+Version: 1.6.7
 Summary: Building applications with LLMs through composability
 Project-URL: Homepage, https://docs.langchain.com/
 Project-URL: Documentation, 
https://reference.langchain.com/python/langchain_core/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/_api/deprecation.py 
new/langchain_core-1.6.7/langchain_core/_api/deprecation.py
--- old/langchain_core-1.6.6/langchain_core/_api/deprecation.py 2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/_api/deprecation.py 2020-02-02 
01:00:00.000000000 +0100
@@ -36,10 +36,9 @@
 def _is_pydantic_v1_field_info(obj: Any) -> TypeGuard["FieldInfoV1"]:
     """Check if `obj` is a `pydantic.v1.fields.FieldInfo` without forcing 
import.
 
-    Importing `pydantic.v1` emits a `UserWarning` on Python 3.14+. Skipping the
-    import entirely when no caller has constructed a v1 `FieldInfo` keeps that
-    warning out of `langchain_core`'s import path. If a caller did construct 
one,
-    `pydantic.v1.fields` is already in `sys.modules` and isinstance is safe.
+    Avoids importing `pydantic.v1`, which emits a `UserWarning` on Python 3.14+
+    with Pydantic 2.12. A v1 `FieldInfo` can only exist once a caller has 
imported
+    `pydantic.v1.fields`, so this check consults it only if it is already 
loaded.
     """
     mod = sys.modules.get("pydantic.v1.fields")
     if mod is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/language_models/chat_models.py 
new/langchain_core-1.6.7/langchain_core/language_models/chat_models.py
--- old/langchain_core-1.6.6/langchain_core/language_models/chat_models.py      
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/language_models/chat_models.py      
2020-02-02 01:00:00.000000000 +0100
@@ -5,7 +5,6 @@
 import asyncio
 import builtins  # noqa: TC003  # runtime-evaluated; subclass `dict()` shadows 
the builtin
 import contextlib
-import inspect
 import json
 from abc import ABC, abstractmethod
 from collections.abc import AsyncIterator, Callable, Iterator, Sequence
@@ -91,6 +90,7 @@
     GATEWAY_METADATA_RESPONSE_KEY,
     _parse_gateway_metadata,
 )
+from langchain_core.utils._signature import _signature_parameters
 from langchain_core.utils.function_calling import (
     convert_to_json_schema,
     convert_to_openai_tool,
@@ -2018,7 +2018,7 @@
                     run_manager.on_llm_new_token("", chunk=chunk)
                 chunks.append(chunk)
             result = generate_from_stream(iter(chunks))
-        elif inspect.signature(self._generate).parameters.get("run_manager"):
+        elif _signature_parameters(self._generate).get("run_manager"):
             result = self._generate(
                 messages, stop=stop, run_manager=run_manager, **kwargs
             )
@@ -2175,7 +2175,7 @@
                     await run_manager.on_llm_new_token("", chunk=chunk)
                 chunks.append(chunk)
             result = generate_from_stream(iter(chunks))
-        elif inspect.signature(self._agenerate).parameters.get("run_manager"):
+        elif _signature_parameters(self._agenerate).get("run_manager"):
             result = await self._agenerate(
                 messages, stop=stop, run_manager=run_manager, **kwargs
             )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/language_models/llms.py 
new/langchain_core-1.6.7/langchain_core/language_models/llms.py
--- old/langchain_core-1.6.6/langchain_core/language_models/llms.py     
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/language_models/llms.py     
2020-02-02 01:00:00.000000000 +0100
@@ -8,7 +8,6 @@
 import asyncio
 import builtins
 import functools
-import inspect
 import json
 import logging
 from abc import ABC, abstractmethod
@@ -58,6 +57,7 @@
 from langchain_core.prompt_values import ChatPromptValue, PromptValue, 
StringPromptValue
 from langchain_core.runnables import RunnableConfig, ensure_config, 
get_config_list
 from langchain_core.runnables.config import run_in_executor
+from langchain_core.utils._signature import _signature_parameters
 
 if TYPE_CHECKING:
     import builtins
@@ -1006,9 +1006,7 @@
             missing_prompt_idxs,
             missing_prompts,
         ) = get_prompts(params, prompts, self.cache)
-        new_arg_supported = inspect.signature(self._generate).parameters.get(
-            "run_manager"
-        )
+        new_arg_supported = 
_signature_parameters(self._generate).get("run_manager")
         if (self.cache is None and get_llm_cache() is None) or self.cache is 
False:
             run_managers = [
                 callback_manager.on_llm_start(
@@ -1281,9 +1279,7 @@
 
         # Verify whether the cache is set, and if the cache is set,
         # verify whether the cache is available.
-        new_arg_supported = inspect.signature(self._agenerate).parameters.get(
-            "run_manager"
-        )
+        new_arg_supported = 
_signature_parameters(self._agenerate).get("run_manager")
         if (self.cache is None and get_llm_cache() is None) or self.cache is 
False:
             run_managers = await asyncio.gather(
                 *[
@@ -1540,7 +1536,7 @@
     ) -> LLMResult:
         # TODO: add caching here.
         generations = []
-        new_arg_supported = 
inspect.signature(self._call).parameters.get("run_manager")
+        new_arg_supported = 
_signature_parameters(self._call).get("run_manager")
         for prompt in prompts:
             text = (
                 self._call(prompt, stop=stop, run_manager=run_manager, 
**kwargs)
@@ -1558,7 +1554,7 @@
         **kwargs: Any,
     ) -> LLMResult:
         generations = []
-        new_arg_supported = 
inspect.signature(self._acall).parameters.get("run_manager")
+        new_arg_supported = 
_signature_parameters(self._acall).get("run_manager")
         for prompt in prompts:
             text = (
                 await self._acall(prompt, stop=stop, run_manager=run_manager, 
**kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/messages/block_translators/bedrock_converse.py
 
new/langchain_core-1.6.7/langchain_core/messages/block_translators/bedrock_converse.py
--- 
old/langchain_core-1.6.6/langchain_core/messages/block_translators/bedrock_converse.py
      2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_core-1.6.7/langchain_core/messages/block_translators/bedrock_converse.py
      2020-02-02 01:00:00.000000000 +0100
@@ -195,6 +195,10 @@
                         if "extras" not in reasoning_block:
                             reasoning_block["extras"] = {}
                         reasoning_block["extras"]["signature"] = signature
+                    if redacted := reasoning_content.get("redacted_content"):
+                        if "extras" not in reasoning_block:
+                            reasoning_block["extras"] = {}
+                        reasoning_block["extras"]["redacted_content"] = 
redacted
 
                 if "index" in block:
                     reasoning_block["index"] = block["index"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/langchain_core/retrievers.py 
new/langchain_core-1.6.7/langchain_core/retrievers.py
--- old/langchain_core-1.6.6/langchain_core/retrievers.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/retrievers.py       2020-02-02 
01:00:00.000000000 +0100
@@ -8,7 +8,6 @@
 from __future__ import annotations
 
 from abc import ABC, abstractmethod
-from inspect import signature
 from typing import TYPE_CHECKING, Any
 
 from pydantic import ConfigDict
@@ -23,6 +22,7 @@
     ensure_config,
 )
 from langchain_core.runnables.config import run_in_executor
+from langchain_core.utils._signature import _signature_parameters
 
 if TYPE_CHECKING:
     from langchain_core.callbacks.manager import (
@@ -145,7 +145,7 @@
     @override
     def __init_subclass__(cls, **kwargs: Any) -> None:
         super().__init_subclass__(**kwargs)
-        parameters = signature(cls._get_relevant_documents).parameters
+        parameters = _signature_parameters(cls._get_relevant_documents)
         cls._new_arg_supported = parameters.get("run_manager") is not None
         if (
             not cls._new_arg_supported
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/runnables/base.py 
new/langchain_core-1.6.7/langchain_core/runnables/base.py
--- old/langchain_core-1.6.6/langchain_core/runnables/base.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/runnables/base.py   2020-02-02 
01:00:00.000000000 +0100
@@ -96,6 +96,7 @@
     AsyncRootListenersTracer,
     RootListenersTracer,
 )
+from langchain_core.utils._signature import _signature_parameters
 from langchain_core.utils.aiter import aclosing, atee
 from langchain_core.utils.iter import safetee
 from langchain_core.utils.pydantic import (
@@ -6550,7 +6551,7 @@
         attr = getattr(self.bound, name)
 
         if callable(attr) and (
-            config_param := inspect.signature(attr).parameters.get("config")
+            config_param := _signature_parameters(attr).get("config")
         ):
             if config_param.kind == inspect.Parameter.KEYWORD_ONLY:
 
@@ -6564,7 +6565,7 @@
 
                 return wrapper
             if config_param.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD:
-                idx = list(inspect.signature(attr).parameters).index("config")
+                idx = list(_signature_parameters(attr)).index("config")
 
                 @wraps(attr)
                 def wrapper(*args: Any, **kwargs: Any) -> Any:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/runnables/history.py 
new/langchain_core-1.6.7/langchain_core/runnables/history.py
--- old/langchain_core-1.6.6/langchain_core/runnables/history.py        
2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/runnables/history.py        
2020-02-02 01:00:00.000000000 +0100
@@ -24,6 +24,7 @@
     Output,
     get_unique_config_specs,
 )
+from langchain_core.utils._signature import _signature_parameters
 from langchain_core.utils.pydantic import create_model_v2
 
 if TYPE_CHECKING:
@@ -627,5 +628,4 @@
 
 def _get_parameter_names(callable_: GetSessionHistoryCallable) -> list[str]:
     """Get the parameter names of the `Callable`."""
-    sig = inspect.signature(callable_)
-    return list(sig.parameters.keys())
+    return list(_signature_parameters(callable_))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/runnables/utils.py 
new/langchain_core-1.6.7/langchain_core/runnables/utils.py
--- old/langchain_core-1.6.6/langchain_core/runnables/utils.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/runnables/utils.py  2020-02-02 
01:00:00.000000000 +0100
@@ -12,7 +12,6 @@
 # RunnableConfigurableFields.
 from collections.abc import Mapping, Sequence  # noqa: TC003
 from functools import lru_cache
-from inspect import signature
 from itertools import groupby
 from typing import (
     TYPE_CHECKING,
@@ -25,6 +24,8 @@
 
 from typing_extensions import override
 
+from langchain_core.utils._signature import _signature_parameters
+
 # Re-export create-model for backwards compatibility
 from langchain_core.utils.pydantic import create_model  # noqa: F401
 
@@ -92,7 +93,7 @@
         `True` if the callable accepts a run_manager argument, `False` 
otherwise.
     """
     try:
-        return signature(callable).parameters.get("run_manager") is not None
+        return _signature_parameters(callable).get("run_manager") is not None
     except ValueError:
         return False
 
@@ -107,7 +108,7 @@
         `True` if the callable accepts a config argument, `False` otherwise.
     """
     try:
-        return signature(callable).parameters.get("config") is not None
+        return _signature_parameters(callable).get("config") is not None
     except ValueError:
         return False
 
@@ -122,7 +123,7 @@
         `True` if the callable accepts a context argument, `False` otherwise.
     """
     try:
-        return signature(callable).parameters.get("context") is not None
+        return _signature_parameters(callable).get("context") is not None
     except ValueError:
         return False
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/langchain_core/tools/base.py 
new/langchain_core-1.6.7/langchain_core/tools/base.py
--- old/langchain_core-1.6.6/langchain_core/tools/base.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/tools/base.py       2020-02-02 
01:00:00.000000000 +0100
@@ -10,7 +10,6 @@
 import warnings
 from abc import ABC, abstractmethod
 from collections.abc import Callable, Mapping, Sequence
-from inspect import signature
 from typing import (
     TYPE_CHECKING,
     Annotated,
@@ -54,6 +53,7 @@
 )
 from langchain_core.runnables.config import set_config_context
 from langchain_core.runnables.utils import coro_with_context
+from langchain_core.utils._signature import _signature_parameters
 from langchain_core.utils.function_calling import (
     _parse_google_docstring,
     _py_38_safe_origin,
@@ -925,7 +925,7 @@
         Returns:
             The result of the tool execution.
         """
-        if kwargs.get("run_manager") and signature(self._run).parameters.get(
+        if kwargs.get("run_manager") and _signature_parameters(self._run).get(
             "run_manager"
         ):
             kwargs["run_manager"] = kwargs["run_manager"].get_sync()
@@ -1091,7 +1091,7 @@
                 tool_args, tool_kwargs = self._to_args_and_kwargs(
                     tool_input, tool_call_id
                 )
-                if signature(self._run).parameters.get("run_manager"):
+                if _signature_parameters(self._run).get("run_manager"):
                     tool_kwargs |= {"run_manager": run_manager}
                 if config_param := _get_runnable_config_param(self._run):
                     tool_kwargs |= {config_param: config}
@@ -1219,7 +1219,7 @@
                 func_to_check = (
                     self._run if self.__class__._arun is BaseTool._arun else 
self._arun  # noqa: SLF001
                 )
-                if signature(func_to_check).parameters.get("run_manager"):
+                if _signature_parameters(func_to_check).get("run_manager"):
                     tool_kwargs["run_manager"] = run_manager
                 if config_param := _get_runnable_config_param(func_to_check):
                     tool_kwargs[config_param] = config
@@ -1639,7 +1639,7 @@
     Returns:
         `frozenset` of parameter names annotated as injected arguments.
     """
-    params = signature(func).parameters
+    params = _signature_parameters(func)
     hint_source = _get_type_hints_source(func)
     hints = (
         _get_type_hints(hint_source, include_extras=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/langchain_core/tools/simple.py 
new/langchain_core-1.6.7/langchain_core/tools/simple.py
--- old/langchain_core-1.6.6/langchain_core/tools/simple.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/tools/simple.py     2020-02-02 
01:00:00.000000000 +0100
@@ -3,7 +3,6 @@
 from __future__ import annotations
 
 from collections.abc import Awaitable, Callable
-from inspect import signature
 from typing import (
     TYPE_CHECKING,
     Any,
@@ -23,6 +22,7 @@
     ToolException,
     _get_runnable_config_param,
 )
+from langchain_core.utils._signature import _signature_parameters
 
 if TYPE_CHECKING:
     from langchain_core.messages import ToolCall
@@ -115,7 +115,7 @@
             The result of the tool execution
         """
         if self.func:
-            if run_manager and 
signature(self.func).parameters.get("callbacks"):
+            if run_manager and 
_signature_parameters(self.func).get("callbacks"):
                 kwargs["callbacks"] = run_manager.get_child()
             if config_param := _get_runnable_config_param(self.func):
                 kwargs[config_param] = config
@@ -142,7 +142,7 @@
             The result of the tool execution
         """
         if self.coroutine:
-            if run_manager and 
signature(self.coroutine).parameters.get("callbacks"):
+            if run_manager and 
_signature_parameters(self.coroutine).get("callbacks"):
                 kwargs["callbacks"] = run_manager.get_child()
             if config_param := _get_runnable_config_param(self.coroutine):
                 kwargs[config_param] = config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/tools/structured.py 
new/langchain_core-1.6.7/langchain_core/tools/structured.py
--- old/langchain_core-1.6.6/langchain_core/tools/structured.py 2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/tools/structured.py 2020-02-02 
01:00:00.000000000 +0100
@@ -5,7 +5,6 @@
 import functools
 import textwrap
 from collections.abc import Awaitable, Callable
-from inspect import signature
 from typing import (
     TYPE_CHECKING,
     Annotated,
@@ -31,6 +30,7 @@
     _get_runnable_config_param,
     create_schema_from_function,
 )
+from langchain_core.utils._signature import _signature_parameters
 from langchain_core.utils.pydantic import is_basemodel_subclass, 
model_json_schema
 
 if TYPE_CHECKING:
@@ -145,7 +145,7 @@
             The result of the tool execution
         """
         if self.func:
-            if run_manager and 
signature(self.func).parameters.get("callbacks"):
+            if run_manager and 
_signature_parameters(self.func).get("callbacks"):
                 kwargs["callbacks"] = run_manager.get_child()
             if config_param := _get_runnable_config_param(self.func):
                 kwargs[config_param] = config
@@ -172,7 +172,7 @@
             The result of the tool execution
         """
         if self.coroutine:
-            if run_manager and 
signature(self.coroutine).parameters.get("callbacks"):
+            if run_manager and 
_signature_parameters(self.coroutine).get("callbacks"):
                 kwargs["callbacks"] = run_manager.get_child()
             if config_param := _get_runnable_config_param(self.coroutine):
                 kwargs[config_param] = config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/langchain_core/utils/_signature.py 
new/langchain_core-1.6.7/langchain_core/utils/_signature.py
--- old/langchain_core-1.6.6/langchain_core/utils/_signature.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/utils/_signature.py 2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,29 @@
+"""Signature inspection that does not evaluate annotations."""
+
+import inspect
+import sys
+from collections.abc import Callable, Mapping
+from typing import Any
+
+if sys.version_info >= (3, 14):
+    from annotationlib import Format
+
+
+def _signature_parameters(obj: Callable[..., Any]) -> Mapping[str, 
inspect.Parameter]:
+    """Get the parameters of a callable without evaluating its annotations.
+
+    On Python 3.14+, annotations are evaluated lazily, so `inspect.signature` 
raises
+    `NameError` for annotations that reference names imported only under
+    `TYPE_CHECKING`. Use this when only parameter names or kinds are needed.
+
+    Args:
+        obj: The callable to inspect.
+
+    Returns:
+        The callable's parameters, keyed by name.
+    """
+    if sys.version_info >= (3, 14):
+        signature = inspect.signature(obj, annotation_format=Format.FORWARDREF)
+    else:
+        signature = inspect.signature(obj)
+    return signature.parameters
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/langchain_core/version.py 
new/langchain_core-1.6.7/langchain_core/version.py
--- old/langchain_core-1.6.6/langchain_core/version.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/langchain_core/version.py  2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,3 @@
 """Version information for `langchain-core`."""
 
-VERSION = "1.6.6"
+VERSION = "1.6.7"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/pyproject.toml 
new/langchain_core-1.6.7/pyproject.toml
--- old/langchain_core-1.6.6/pyproject.toml     2020-02-02 01:00:00.000000000 
+0100
+++ new/langchain_core-1.6.7/pyproject.toml     2020-02-02 01:00:00.000000000 
+0100
@@ -21,7 +21,7 @@
     "Topic :: Software Development :: Libraries :: Python Modules",
 ]
 
-version = "1.6.6"
+version = "1.6.7"
 requires-python = ">=3.10.0,<4.0.0"
 dependencies = [
     "langsmith>=0.3.45,<1.0.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
 
new/langchain_core-1.6.7/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
--- 
old/langchain_core-1.6.6/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
       2020-02-02 01:00:00.000000000 +0100
+++ 
new/langchain_core-1.6.7/tests/unit_tests/messages/block_translators/test_bedrock_converse.py
       2020-02-02 01:00:00.000000000 +0100
@@ -132,6 +132,49 @@
     assert message.content == original_content
 
 
+def test_convert_to_v1_from_converse_redacted_reasoning() -> None:
+    message = AIMessage(
+        [
+            {
+                "type": "reasoning_content",
+                "reasoning_content": {"redacted_content": b"rsn_opaque"},
+            },
+            {"type": "text", "text": "391"},
+        ],
+        response_metadata={"model_provider": "bedrock_converse"},
+    )
+    expected_content: list[types.ContentBlock] = [
+        {"type": "reasoning", "extras": {"redacted_content": b"rsn_opaque"}},
+        {"type": "text", "text": "391"},
+    ]
+    original_content = deepcopy(message.content)
+
+    assert message.content_blocks == expected_content
+    assert message.content == original_content
+
+
+def test_convert_to_v1_from_converse_redacted_reasoning_chunk() -> None:
+    chunk = AIMessageChunk(
+        content=[
+            {
+                "type": "reasoning_content",
+                "reasoning_content": {"redacted_content": b"rsn_opaque"},
+                "index": 0,
+            }
+        ],
+        response_metadata={"model_provider": "bedrock_converse"},
+    )
+    expected_content: list[types.ContentBlock] = [
+        {
+            "type": "reasoning",
+            "extras": {"redacted_content": b"rsn_opaque"},
+            "index": 0,
+        }
+    ]
+
+    assert chunk.content_blocks == expected_content
+
+
 def test_convert_to_v1_from_converse_chunk() -> None:
     chunks = [
         AIMessageChunk(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/tests/unit_tests/utils/_type_checking_annotations.py 
new/langchain_core-1.6.7/tests/unit_tests/utils/_type_checking_annotations.py
--- 
old/langchain_core-1.6.6/tests/unit_tests/utils/_type_checking_annotations.py   
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/langchain_core-1.6.7/tests/unit_tests/utils/_type_checking_annotations.py   
    2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,127 @@
+"""Callables annotated with names that are only imported for type checking.
+
+Deliberately omits `from __future__ import annotations`, so on Python 3.14+ 
these
+annotations are evaluated lazily and raise `NameError` when evaluated. 
Importing
+this module requires Python 3.14+.
+"""
+
+# ruff: noqa: TC004
+
+from typing import TYPE_CHECKING, Any
+
+from pydantic import BaseModel
+from typing_extensions import override
+
+from langchain_core.chat_history import InMemoryChatMessageHistory
+from langchain_core.documents import Document
+from langchain_core.language_models import LLM, BaseChatModel
+from langchain_core.messages import AIMessage
+from langchain_core.outputs import ChatGeneration, ChatResult
+from langchain_core.retrievers import BaseRetriever
+from langchain_core.tools import BaseTool
+
+if TYPE_CHECKING:
+    from collections.abc import AsyncIterator, Iterator
+
+    from langchain_core.callbacks import (
+        CallbackManagerForLLMRun,
+        CallbackManagerForRetrieverRun,
+        CallbackManagerForToolRun,
+    )
+    from langchain_core.chat_history import BaseChatMessageHistory
+    from langchain_core.messages import BaseMessage
+    from langchain_core.runnables import RunnableConfig
+
+
+def add_one(x: int, config: RunnableConfig) -> int:  # noqa: ARG001
+    return x + 1
+
+
+async def aadd_one(x: int, config: RunnableConfig) -> int:  # noqa: ARG001
+    return x + 1
+
+
+def get_content(message: AIMessage) -> str:
+    return message.text
+
+
+def upper(chunks: Iterator[str]) -> Iterator[str]:
+    for chunk in chunks:
+        yield chunk.upper()
+
+
+async def aupper(chunks: AsyncIterator[str]) -> AsyncIterator[str]:
+    async for chunk in chunks:
+        yield chunk.upper()
+
+
+_histories: dict[str, InMemoryChatMessageHistory] = {}
+
+
+def get_session_history(session_id: str) -> BaseChatMessageHistory:
+    return _histories.setdefault(session_id, InMemoryChatMessageHistory())
+
+
+class FakeChatModel(BaseChatModel):
+    @override
+    def _generate(
+        self,
+        messages: list[BaseMessage],
+        stop: list[str] | None = None,
+        run_manager: CallbackManagerForLLMRun | None = None,
+        **kwargs: Any,
+    ) -> ChatResult:
+        return 
ChatResult(generations=[ChatGeneration(message=AIMessage("hello"))])
+
+    @property
+    @override
+    def _llm_type(self) -> str:
+        return "fake"
+
+    def describe(self, *, config: RunnableConfig) -> list[str]:
+        return config.get("tags", [])
+
+
+class FakeLLM(LLM):
+    @override
+    def _call(
+        self,
+        prompt: str,
+        stop: list[str] | None = None,
+        run_manager: CallbackManagerForLLMRun | None = None,
+        **kwargs: Any,
+    ) -> str:
+        return "hello"
+
+    @property
+    @override
+    def _llm_type(self) -> str:
+        return "fake"
+
+
+def define_retriever() -> type[BaseRetriever]:
+    # `BaseRetriever` inspects `_get_relevant_documents` on subclass 
definition.
+    class FakeRetriever(BaseRetriever):
+        @override
+        def _get_relevant_documents(
+            self, query: str, *, run_manager: CallbackManagerForRetrieverRun
+        ) -> list[Document]:
+            return [Document(page_content=query)]
+
+    return FakeRetriever
+
+
+class EchoInput(BaseModel):
+    text: str
+
+
+class EchoTool(BaseTool):
+    name: str = "echo"
+    description: str = "Echo the input."
+    args_schema: type[BaseModel] = EchoInput
+
+    @override
+    def _run(
+        self, text: str, run_manager: CallbackManagerForToolRun | None = None
+    ) -> str:
+        return text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/langchain_core-1.6.6/tests/unit_tests/utils/test_signature.py 
new/langchain_core-1.6.7/tests/unit_tests/utils/test_signature.py
--- old/langchain_core-1.6.6/tests/unit_tests/utils/test_signature.py   
1970-01-01 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/tests/unit_tests/utils/test_signature.py   
2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,84 @@
+"""Public APIs accept callables annotated with names imported under 
`TYPE_CHECKING`."""
+
+import inspect
+import sys
+from typing import TYPE_CHECKING
+
+import pytest
+
+from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
+from langchain_core.runnables import RunnableGenerator, RunnableLambda
+from langchain_core.runnables.history import RunnableWithMessageHistory
+
+pytestmark = pytest.mark.skipif(
+    sys.version_info < (3, 14), reason="Requires lazily evaluated annotations."
+)
+
+if TYPE_CHECKING or sys.version_info >= (3, 14):
+    from tests.unit_tests.utils import _type_checking_annotations as annotated
+
+
+def test_annotations_are_unresolvable() -> None:
+    with pytest.raises(NameError):
+        inspect.signature(annotated.add_one)
+
+
+def test_runnable_lambda() -> None:
+    runnable = RunnableLambda(annotated.add_one)
+    assert runnable.invoke(1) == 2
+    assert runnable.batch([1, 2]) == [2, 3]
+    assert list(runnable.stream(1)) == [2]
+
+
+async def test_runnable_lambda_async() -> None:
+    runnable = RunnableLambda(annotated.add_one, afunc=annotated.aadd_one)
+    assert await runnable.ainvoke(1) == 2
+
+
+def test_runnable_generator() -> None:
+    runnable = RunnableGenerator(annotated.upper)
+    assert "".join(runnable.stream("ab")) == "AB"
+
+
+async def test_runnable_generator_async() -> None:
+    runnable = RunnableGenerator(annotated.upper, annotated.aupper)
+    assert "".join([chunk async for chunk in runnable.astream("ab")]) == "AB"
+
+
+def test_chat_model() -> None:
+    model = annotated.FakeChatModel()
+    assert model.invoke("hi").content == "hello"
+    chain = model | RunnableLambda(annotated.get_content)
+    assert chain.invoke("hi") == "hello"
+
+
+def test_runnable_binding_injects_config() -> None:
+    model = annotated.FakeChatModel().with_config(tags=["a"])
+    assert model.describe() == ["a"]  # type: ignore[attr-defined]
+
+
+def test_llm() -> None:
+    assert annotated.FakeLLM().invoke("hi") == "hello"
+
+
+def test_retriever() -> None:
+    docs = annotated.define_retriever()().invoke("query")
+    assert [doc.page_content for doc in docs] == ["query"]
+
+
+def test_tool() -> None:
+    assert annotated.EchoTool().invoke({"text": "hi"}) == "hi"
+
+
[email protected](
+    "ignore::langchain_core._api.deprecation.LangChainDeprecationWarning"
+)
+def test_runnable_with_message_history() -> None:
+    def respond(_: list[BaseMessage]) -> AIMessage:
+        return AIMessage("hello")
+
+    runnable = RunnableWithMessageHistory(
+        RunnableLambda(respond), annotated.get_session_history
+    )
+    runnable.invoke([HumanMessage("hi")], config={"configurable": 
{"session_id": "1"}})
+    assert len(annotated.get_session_history("1").messages) == 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/langchain_core-1.6.6/uv.lock 
new/langchain_core-1.6.7/uv.lock
--- old/langchain_core-1.6.6/uv.lock    2020-02-02 01:00:00.000000000 +0100
+++ new/langchain_core-1.6.7/uv.lock    2020-02-02 01:00:00.000000000 +0100
@@ -887,6 +887,20 @@
 ]
 
 [[package]]
+name = "jupyter-builder"
+version = "1.2.3"
+source = { registry = "https://pypi.org/simple"; }
+dependencies = [
+    { name = "jupyter-core" },
+    { name = "tomli", marker = "python_full_version < '3.11'" },
+    { name = "traitlets" },
+]
+sdist = { url = 
"https://files.pythonhosted.org/packages/75/3e/56f593e6a664cd14d441724654ce8243f3cac7d3e45867cf084749c8bc75/jupyter_builder-1.2.3.tar.gz";,
 hash = 
"sha256:01aba6794eb9b19e0e29ae21137ca60ba4135c70347d4b9f664a586822b8c809", size 
= 1024218, upload-time = "2026-09-04T18:54:09.411Z" }
+wheels = [
+    { url = 
"https://files.pythonhosted.org/packages/84/aa/be79e87c50698673f196d0633fc1664607da2289f9688d1de7a1c9db9e71/jupyter_builder-1.2.3-py3-none-any.whl";,
 hash = 
"sha256:c5ea5a7190c2a7b082494abade98eece1b2b5bd5dbd7d610606cbcd10a1d08b3", size 
= 947541, upload-time = "2026-09-04T18:54:07.644Z" },
+]
+
+[[package]]
 name = "jupyter-client"
 version = "8.6.3"
 source = { registry = "https://pypi.org/simple"; }
@@ -1011,28 +1025,28 @@
 
 [[package]]
 name = "jupyterlab"
-version = "4.5.10"
+version = "4.6.4"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "async-lru" },
     { name = "httpx" },
     { name = "ipykernel" },
     { name = "jinja2" },
+    { name = "jupyter-builder" },
     { name = "jupyter-core" },
     { name = "jupyter-lsp" },
     { name = "jupyter-server" },
     { name = "jupyterlab-server" },
     { name = "notebook-shim" },
     { name = "packaging" },
-    { name = "setuptools" },
     { name = "tomli", marker = "python_full_version < '3.11'" },
     { name = "tornado" },
     { name = "traitlets" },
     { name = "typing-extensions", marker = "python_full_version < '3.12'" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/74/24/621aa20ec0d2fe72f52095bda0fc1be7738ac21aabe4129ff623140d5cdf/jupyterlab-4.5.10.tar.gz";,
 hash = 
"sha256:77e8d80b78be59b2eaba2154562e21caa6e79c2f1281d6f486584f7144ee2f47", size 
= 23998879, upload-time = "2026-07-21T12:43:27.324Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/33/8d/995cc142f6083346b35e7d3eadc5a6717ee89ce64ea53577010ac493bc3c/jupyterlab-4.6.4.tar.gz";,
 hash = 
"sha256:404f49b081819378524886c9db66dba57a5565981eff885830df1baba3a17df5", size 
= 28335647, upload-time = "2026-09-21T15:25:18.779Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/9f/c9/940f95f17ee4e413ad252bf8d4f2ee9a341f18cfeda87775fef3d7847321/jupyterlab-4.5.10-py3-none-any.whl";,
 hash = 
"sha256:5967ca61e692e67a2f30b5a2b901c941dc6ce56c0b0e357bc6d34fed5ec095f6", size 
= 12452502, upload-time = "2026-07-21T12:43:23.542Z" },
+    { url = 
"https://files.pythonhosted.org/packages/3b/e4/072bc0d3c6d45d414062a06af7ee81c02a2c12d769c358ec9919f9995ffd/jupyterlab-4.6.4-py3-none-any.whl";,
 hash = 
"sha256:15b13f991d3985129c797eb84d9949eeb8b6615e14b444868e642411f2c418b2", size 
= 17171596, upload-time = "2026-09-21T15:25:14.123Z" },
 ]
 
 [[package]]
@@ -1073,7 +1087,7 @@
 
 [[package]]
 name = "langchain-core"
-version = "1.6.6"
+version = "1.6.7"
 source = { editable = "." }
 dependencies = [
     { name = "httpx" },
@@ -1227,7 +1241,7 @@
 
 [[package]]
 name = "langchain-text-splitters"
-version = "1.1.2"
+version = "1.1.3"
 source = { directory = "../text-splitters" }
 dependencies = [
     { name = "langchain-core" },
@@ -1695,18 +1709,19 @@
 
 [[package]]
 name = "notebook"
-version = "7.5.6"
+version = "7.6.3"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
+    { name = "jupyter-builder" },
     { name = "jupyter-server" },
     { name = "jupyterlab" },
     { name = "jupyterlab-server" },
     { name = "notebook-shim" },
     { name = "tornado" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/2a/c2/cf59bd2e6f2c8b976b52477e3e53bf6f97bc714ed046a51821afb428eaee/notebook-7.5.6.tar.gz";,
 hash = 
"sha256:621174aade80108f0020b0f00738000b215f75fa3cd90771ad7aa0f24536a4e1", size 
= 14170814, upload-time = "2026-04-30T11:46:26.613Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/42/ac/aedb759dc683dcd129f6c75271bab5eb23020b0f7969163c726343718e1e/notebook-7.6.3.tar.gz";,
 hash = 
"sha256:e2c08e469c0ae20bb0b3214f0ab77e79653317a2f8e5b34c10361c66874a5b50", size 
= 5501618, upload-time = "2026-09-21T18:07:24.261Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/e9/d6/1fd0646b9bbd9efbb0b8ae21b2325fbef515769a5621c03e31d8eb8da587/notebook-7.5.6-py3-none-any.whl";,
 hash = 
"sha256:4dde3f8fb55fa8fb7946d58c6e869ce9baf46d00fc070664f62604569d0faca0", size 
= 14581730, upload-time = "2026-04-30T11:46:22.342Z" },
+    { url = 
"https://files.pythonhosted.org/packages/a1/f7/907b98438cf00bdc4e296570058f29a347214bb42338a48e3b7eae58ae2a/notebook-7.6.3-py3-none-any.whl";,
 hash = 
"sha256:ad7e0eb765fba836cd4a2ab0c7a3a26cde1d91665fbf6f533b6ae7b2de6d88d2", size 
= 5548452, upload-time = "2026-09-21T18:07:21.563Z" },
 ]
 
 [[package]]
@@ -2978,19 +2993,19 @@
 
 [[package]]
 name = "tornado"
-version = "6.5.8"
+version = "6.5.9"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/10/d3/343e5bb989d6515b1646cf3d40135d73f3d5e45339bded401b56cdac24dd/tornado-6.5.8.tar.gz";,
 hash = 
"sha256:9452e1b208a8bd771e2cb1f2ff564985b9b214bdebbe622793e1799e0a6bd23f", size 
= 520493, upload-time = "2026-08-07T02:12:42.971Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/22/15/ca7aaebb77f850493cba71ace508aeffb896d1ad8976417b48b79823dbd2/tornado-6.5.9.tar.gz";,
 hash = 
"sha256:4d868544ebdf2fc155239a74397f65ebfea9b4d3635296c96b5dfb0701c354f5", size 
= 536145, upload-time = "2026-09-14T18:08:37.434Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/f2/d5/007086fd8df5489338e204f65adce33fd4f21a4999dbb2b9cff2f897b5f4/tornado-6.5.8-cp39-abi3-macosx_10_9_universal2.whl";,
 hash = 
"sha256:cc6aa787d7cfab7c3d35189dc7a56fbd2399a569624c730c6b55b3d6531d0403", size 
= 449487, upload-time = "2026-08-07T02:12:28.682Z" },
-    { url = 
"https://files.pythonhosted.org/packages/70/c8/5a24a99495903f594f6a199dd7beead1cbc0a13e2cb9102727bcaaf2a997/tornado-6.5.8-cp39-abi3-macosx_10_9_x86_64.whl";,
 hash = 
"sha256:9715b5eb79735b2bcd454ce216a9275b7c0470e64ea1bf5742f78b2f72b26eeb", size 
= 447649, upload-time = "2026-08-07T02:12:30.306Z" },
-    { url = 
"https://files.pythonhosted.org/packages/6e/de/f2e733f386b85962d1b1dc82cd63d169b5b4580062b35397eac9244a41fe/tornado-6.5.8-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl";,
 hash = 
"sha256:547d63f450d570c14fe0e8db2cfb14c9bbd1c2503b4a6612586267955aa47b58", size 
= 450707, upload-time = "2026-08-07T02:12:31.95Z" },
-    { url = 
"https://files.pythonhosted.org/packages/0b/94/20efeee9a01c141e9ac47c397f81679dfda24b32768fc4fff24e76d36c2c/tornado-6.5.8-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:7e2360a0ffbe145eca8af0b19cb7203d79b1a98dd4cccdd6b368f6f49c2e3808", size 
= 451677, upload-time = "2026-08-07T02:12:33.512Z" },
-    { url = 
"https://files.pythonhosted.org/packages/42/ec/a96ccb8ccf0de2b7bc2c5fa1608a4803735018242e90c4882365a9fd418f/tornado-6.5.8-cp39-abi3-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:5d242290bdf7ab3151bc1065fdd75c0dcc21cbc7b49f22a4c56329c2d6566d22", size 
= 451510, upload-time = "2026-08-07T02:12:35.346Z" },
-    { url = 
"https://files.pythonhosted.org/packages/29/b5/93185859245ad3f00e62175f29607346788b696369347f0146e0421286bb/tornado-6.5.8-cp39-abi3-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:7b94ff0e128fe0542f3bd331fb44d06260fc4ac16881545159f34ef08aad4195", size 
= 450917, upload-time = "2026-08-07T02:12:36.963Z" },
-    { url = 
"https://files.pythonhosted.org/packages/97/cf/fe33cf062834487d34d1559746a4a12521033c22645b6d74d4bca702e018/tornado-6.5.8-cp39-abi3-win32.whl";,
 hash = 
"sha256:67832909c4779c64942380cb5f044a5c6163d00831472d80e25e115de9917836", size 
= 451952, upload-time = "2026-08-07T02:12:38.512Z" },
-    { url = 
"https://files.pythonhosted.org/packages/cb/e1/468ad54333e92ccb62627e62cb88e5fc14a2171daa67ed47b1b8542d5b86/tornado-6.5.8-cp39-abi3-win_amd64.whl";,
 hash = 
"sha256:11881db6b7c168494be2c2d12e65931451bdf7ee718535418ae1d8855dd5a0ee", size 
= 452391, upload-time = "2026-08-07T02:12:39.971Z" },
-    { url = 
"https://files.pythonhosted.org/packages/ad/3e/cd5e4f06e34cde33b8ef66cf36aa2b5ad46354cc1af7d2136bbe365fee1d/tornado-6.5.8-cp39-abi3-win_arm64.whl";,
 hash = 
"sha256:68a7468c7e289f8514d7d664101753903217eff1bb6822c6b5994a0b5f5bcb26", size 
= 451411, upload-time = "2026-08-07T02:12:41.469Z" },
+    { url = 
"https://files.pythonhosted.org/packages/a0/4a/4d3459fd2f360dd99233f69f22b36012a42856ace526da2c6da3cb0e6df2/tornado-6.5.9-cp39-abi3-macosx_10_9_universal2.whl";,
 hash = 
"sha256:dea3bee433b73d6312d993ce89ad5f2b8d3ed9fde56e79ba5342b9edb78d342a", size 
= 464279, upload-time = "2026-09-14T18:08:20.909Z" },
+    { url = 
"https://files.pythonhosted.org/packages/26/4b/5af2f7dcd674e2f1cacef763456f79823404f50954789d6e1ec7a70cd58a/tornado-6.5.9-cp39-abi3-macosx_10_9_x86_64.whl";,
 hash = 
"sha256:22bed49cdb55292d1d58f46008ba2cc3020e5b84995ef6ae749676c8b5309514", size 
= 462440, upload-time = "2026-09-14T18:08:22.711Z" },
+    { url = 
"https://files.pythonhosted.org/packages/9e/0f/38f8d16011de3b1ce2babb4c3bcefb126d2dc47d04878ae3ad5c39a00caa/tornado-6.5.9-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl";,
 hash = 
"sha256:0cc0876a58eee9143476f24901b1b8eb4d52443283ade2b6bca650dd1da04f84", size 
= 465496, upload-time = "2026-09-14T18:08:24.407Z" },
+    { url = 
"https://files.pythonhosted.org/packages/8c/e9/3888f265d1e287fc63cd61a6696f96a650024e32f9e89c0b1817ac5c40f4/tornado-6.5.9-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:dc0d703cc7ec92b47ebfe236c97cd765c1f2e45744a2e156e6677e54c948274d", size 
= 466468, upload-time = "2026-09-14T18:08:25.928Z" },
+    { url = 
"https://files.pythonhosted.org/packages/d6/8b/d2bcf417981fa6f7698ab84a52394a76cf608e6704d266e2e0e29f1fd9d0/tornado-6.5.9-cp39-abi3-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:93f9ab0226ef625b94cacb7981a5af104f1735ea02f92282abe5c389109fb31d", size 
= 466303, upload-time = "2026-09-14T18:08:27.566Z" },
+    { url = 
"https://files.pythonhosted.org/packages/7e/a5/c5cfab11420c3f908238a6c861b8f3864fdbd2b2b87e30c9c16f36a11512/tornado-6.5.9-cp39-abi3-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:5801bbf94dfde8d21087b6aa0b17f3a5dab6110dfe44e7e4492df5de393ac15b", size 
= 465706, upload-time = "2026-09-14T18:08:29.182Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ab/36/5a5da0aa15b7afdd46ece09c004a75af7d00f6a96b692bf696ff94bc2a55/tornado-6.5.9-cp39-abi3-win32.whl";,
 hash = 
"sha256:dca9f377e80efe5dd4d52a2776b67492a81a39b2d931de169b6b36d0c1da444c", size 
= 466750, upload-time = "2026-09-14T18:08:30.836Z" },
+    { url = 
"https://files.pythonhosted.org/packages/34/d7/2446cf3125372e2b4be6483b4b93f360dc50ce2493864755484b23bb50f2/tornado-6.5.9-cp39-abi3-win_amd64.whl";,
 hash = 
"sha256:f810730ac71eadf009e6e5cb6d534d096887310f5649cff19d7e0d19c0bf4ee7", size 
= 467191, upload-time = "2026-09-14T18:08:32.521Z" },
+    { url = 
"https://files.pythonhosted.org/packages/39/70/f1024364bf78fa921c63ef2883d36a3b3b705750c98ae174593afaab7a65/tornado-6.5.9-cp39-abi3-win_arm64.whl";,
 hash = 
"sha256:b5f4d92798337260c6d9f9f0e400c7539dd5e55cf93479a3f8508c9aa09c2b3b", size 
= 466211, upload-time = "2026-09-14T18:08:35.18Z" },
 ]
 
 [[package]]
@@ -3064,11 +3079,11 @@
 
 [[package]]
 name = "urllib3"
-version = "2.7.0"
+version = "2.8.0"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz";,
 hash = 
"sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size 
= 433602, upload-time = "2026-05-07T16:13:18.596Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz";,
 hash = 
"sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size 
= 458972, upload-time = "2026-09-15T19:29:36.253Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl";,
 hash = 
"sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size 
= 131087, upload-time = "2026-05-07T16:13:17.151Z" },
+    { url = 
"https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl";,
 hash = 
"sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size 
= 135717, upload-time = "2026-09-15T19:29:34.577Z" },
 ]
 
 [[package]]

Reply via email to